Звезду нужно заслужить: настройка награды по коэффициенту заполнения
На несколько секунд корабль становится звездой: всё, во что он влетает, разбивается. Сложно было не построить это. Сложно было решить, как часто игрок должен её получать, и измерить ответ, а не угадать его.
Идею все знают по Марио. Влетаешь в кристалл, и он разлетается. Мина лопается, снаряд пушки раскалывается, целый каменный остров рассыпается, и за каждое дают очки. Стена больше не может тебя убить, она просто удерживает тебя внутри. Щит не тратится. Скорость не меняется, и именно это отличает звезду от варп-кольца: варп проносит тебя мимо всего, звезда всё расчищает.
Заработана сбором
Единственное твёрдое требование: звезду нужно заслужить. Она живёт в вертикальной шкале в левом нижнем углу экрана, которая работает как бак. Каждая хорошая монета добавляет один, золотая монета в шикане - два, а пролёт через варп-кольцо - от одного до трёх, в зависимости от того, насколько чисто ты в него попал. Хорошая монета, проплывшая мимо несобранной, забирает один, а касание монеты яда или утечки - два. Бак никогда не опускается ниже нуля и начинает считать только после безопасного стартового полёта.
Это правило награждает определённый стиль игры: не просто выживать, а собирать линии монет через пещеру. Когда бак полон, корабль на мгновение заряжается, а потом становится звездой на 3,5 секунды. Следующая звезда в том же забеге стоит вдвое больше, а следующая за ней - ещё вдвое.
Почему просто не считать монеты?
Соблазнительный способ настроить такую награду - выбрать число монет, которое кажется правильным. Сначала я измерил монеты: в двадцати пещерах дня игрок встречает примерно одну хорошую монету в секунду, от шести до восьми на сектор, и этот темп почти не меняется с глубиной. Значит, «звезда каждые восемь монет» звучит как звезда каждые восемь секунд. Ничего подобного, потому что никто не собирает все монеты, а звезда меняет саму длительность забега.
Важное число - это коэффициент заполнения: доля забега, которую игрок действительно проводит звездой, и что это делает с его рекордом. Я измерил его так же, как план секторов. Планирующий пилот играет в настоящую игру на пяти уровнях мастерства, двенадцать дней по восемь забегов, и каждый забег играется дважды: один раз без звезды, один раз со звездой. Два самых слабых уровня заканчивают забеги около 30 очков, там же, где медиана забега реальных игроков, так что они представляют тех, кто играет на самом деле.
| Вариант | Сильнейший уровень: доля забега звездой | Сильнейший уровень: лучший результат дня |
|---|---|---|
| Первая идея: 8 монет, каждая следующая звезда 1,5x, 4 с | 12.2% | +40% |
| Дешевле: 5-6 монет, отсчёт с самого старта | медианный забег сильных игроков почти удвоился | |
| Выбрано: 8 монет, каждая следующая звезда 2x, 3 с | около 9% | +23% |
| Выпущено: то же, но 3,5 с | около 10% | не перемерялось |
Эффект - почти целиком выживание. Очки за разрушения составляют около десятой доли процента счёта. Что звезда действительно покупает, так это несколько секунд, когда стены перестают убивать, глубоко в забеге, где убивают как раз стены.
Награда за глубокие забеги, намеренно
Таблица прячет самый важный результат: уровни, которые играют как сегодняшние реальные игроки, не заполняют бак ни в одном измеренном варианте. Их забеги заканчиваются раньше. Сделать звезду доступной для них означало считать с самого начала и брать пять-шесть монет, а это почти удвоило медианный забег сильных игроков, что переписало бы рейтинг.
Так что звезда - награда за глубокие забеги, задуманная так. Если ты её видел, ты уже летал хорошо. У этого решения были последствия. Для неё нет ежедневного задания, потому что задание, которое большинство игроков не может выполнить, - это сломанный слот в дне. Нет и достижения, по более скучной причине: Game Center разрешает 1000 очков достижений на игру, TUNL уже использует ровно 1000, а очки опубликованного достижения изменить нельзя.
Звезда никогда не трогает пещеру дня. В конкретный день все игроки летят по одной и той же пещере (как это устроено), поэтому функция, которая вытягивает одно лишнее случайное число, раскалывает её. Звезда не вытягивает ни одного и ничего не размещает. Всё, что она разбивает, уходит теми же путями, которыми уже пользуются пуля, бомба или лазер, и тест пещеры по-прежнему выдаёт для каждого дня побайтово одинаковую пещеру.
Сделать её заметной
Первая сборка работала, и её легко было не заметить. Исправления следовали правилам света, которые в игре уже были. Звезда берёт собственный цвет корабля, а не переливается радугой, потому что в TUNL цвет что-то значит: циан - это коридор, красный - опасность, золото - награда. Корпус получает световой контур по краям и маленькие четырёхлучевые блики на носу, законцовках крыльев и хвосте. Круглую светящуюся ауру попробовали и убрали: из-за неё корабль выглядел как шар и будто доставал дальше, чем его хитбокс.
Волна света корабля входит с левого края экрана, со стороны позади корабля, никогда не спереди, чтобы не скрывать то, что приближается. Счёт окрашивается в цвет корабля. И каждое разрушение получает вес: белая вспышка, больше осколков, сильнее тряска и стоп-кадр на 40 миллисекунд, не чаще одного раза в коротком окне, чтобы серия ударов никогда не дёргалась.
Своя музыка, сгенерированная кодом
Звук занял больше времени, чем картинка. У пэда звезды нет бита, потому что звезда может начаться в любой момент, и пульс лёг бы мимо доли музыки. Потом я пробовал ставить музыку на паузу ради отрывка эпичного стокового трека, а в тот же день - беззвучную звезду. Ни то, ни другое не подошло. Осталась короткая пьеса, сгенерированная кодом: суперсо-аккорды, саб-бас, хлопки и щипковый хук, два такта в ре мажоре на 140 ударах в минуту, в тональности и темпе основного трека. Пока звезда идёт, основной трек стоит на такте, до которого дошёл, а потом продолжается с этого такта.
Здесь было две ловушки. Страница концепта, где я сравнивал кандидатов, выравнивала громкость только для динамика телефона, и в игре бочка в наушниках была на 10 дБ громче нужного, поэтому теперь каждый уровень измеряется офлайн-рендером в настоящей аудиоцепочке игры, в обеих полосах. А замедление и варп изгибают высоту основной музыки, значит, музыка звезды тоже должна была изгибаться: в начале забега она один раз рендерится в петлю, которую потом можно замедлять и ускорять, как любую запись.
Если хочешь увидеть её, шкала в левом нижнем углу сегодняшней пещеры. Придётся забраться глубоко.