Каждое нажатие - прыжок: как научить игре с одной кнопкой
В TUNL одна кнопка, и первые восемнадцать версий большинство новых игроков так и не понимали, как она работает. Вот как изменилось управление и как маленький круг научился показывать ритм, ни разу не управляя кораблём.
Исходное правило было таким: держи, чтобы подниматься, отпусти, чтобы падать. Тяга - это ускорение, которое растёт, пока ты держишь, при отпускании управление берёт гравитация, а мастерство - в ритме между ними. Опытным игрокам это нравилось. Проблема была во всех остальных.
Что рассказали первые забеги
Небольшая посадочная страница записывает, чем заканчивается каждый первый забег. Из первых 25 игроков, которых она увидела, 22 погибли ровно там, где погибает забег вообще без ввода: корабль ненадолго летит ровно, проседает и касается пола. Они не ошибались. Они не играли. Более поздняя выборка из 48 первых забегов была ещё прямее: примерно треть игроков вообще ничего не нажимала.
«Держи» - странная инструкция для мобильной игры. Большинство игр с одной кнопкой - это игры на тапы, и игрок, который тапает по игре на удержание, получает рывок настолько маленький, что кажется, будто ничего не произошло. Поэтому он останавливается, а пещера продолжает надвигаться.
Нажатие - это прыжок
Решение сохраняет оба стиля. Каждое нажатие теперь запускает короткий импульс тяги (TAP_BURST_SEC, 0,15 секунды), а более долгое удержание продолжает тянуть точно так же, как раньше. Тап - это прыжок. Удержание по-прежнему работает, просто оно никогда не обязательно. Нет переключения на каком-то счёте и нет режимов: каждый забег, каждый игрок, каждая платформа.
Перед выпуском я переиграл пещеры дня двумя ботами. Один играет по-старому, удерживая и отпуская. С импульсом и без него он набирал одинаково, так что никто из тех, кто уже освоил игру, ничего не потерял. Другой только тапает, и он доходил до 100 очков в 90% дней.
Импульс заканчивается внутри кадра. Импульс в 0,15 секунды почти никогда не заканчивается точно на границе кадра. Округление до ближайшего кадра сдвигало верхнюю точку прыжка примерно на 11 пикселей при 24 кадрах в секунду и на другую величину при 60 или 120. Поэтому кадр делится ровно в момент окончания импульса, и каждая часть интегрируется отдельно. Тест сверяет верхнюю точку прыжка с точным решением на семи частотах обновления - по той же причине, по которой физика с самого начала не зависит от частоты кадров.
Круг, который показывает ритм
Прыжок обнаружить легче, чем удержание, но он не говорит тебе, когда нажимать. Поэтому, пока твой рекорд ниже 233, во время стартового полёта рядом с кораблём висит круг и показывает, когда тапать. Он похож на плавающую сенсорную кнопку на iPhone: белая точка в двух мягких кольцах. Он светлеет, когда тап приближается, и вдавливается, когда пора. Тап в ритм рисует маленькую галочку. В первой версии был указывающий палец, который в таком размере выглядел как белое надгробие.
Главное правило: корабль двигает только твой собственный тап. Круг - это метроном, а не автопилот. За ним стоит планировщик, который прогоняет настоящую физику вперёд от текущего состояния корабля: тап нужен, когда прыжок, начатый сейчас, достиг бы верхней точки на маршруте, а не выше него. Поскольку это пересчитывается каждый кадр, пропущенный или лишний тап не требуют никакого особого случая. Сам маршрут проходит через середину входа в тоннель, а затем через первые монеты.
Запоздалый тап замедляет время до четверти, пока ты не нажмёшь, но только после твоего первого тапа в забеге, чтобы круг никогда не замораживал игру до того, как ты вообще попробовал. Счёт - это пройденное расстояние, а не время, так что замедление ничего не меняет в рейтинге.
Я думал вести игроков дальше, за пределы безопасного начала, и решил этого не делать. Планировщик ничего не знает о сталактитах и минах, а подсказки плюс замедление после этой точки были бы почти автопилотом в общем рейтинге дня.
Город ждёт
Круг помог тем, кто нажимал. Той трети, что не нажимала никогда, он ничем не помог. Каждый забег начинается над городом в сумерках, прежде чем корабль войдёт в пещеру, и в начале есть короткое ровное скольжение, пока не включится гравитация. У этих игроков скольжение просто заканчивалось над городом, и они опускались во вход тоннеля со счётом 5.
Поэтому в обучающем забеге город теперь ждёт. После старта корабль зависает, а камера стоит до первого нажатия, рядом круг и надпись ТАПНИ ДЛЯ ПОЛЁТА. В пещере ничего не меняется, потому что город находится до первого метра пещеры, а счёт начинается только в тоннеле.
Музыка тоже ждёт. Пока город стоит, трек повторяет второй такт своего вступления, ровный, прямо перед тем как вступает бит, а первое нажатие возвращает трек в той же точке этого такта. Моя первая попытка зацикливала оба такта вступления и проседала примерно на 9 дБ на каждом круге, будто музыка запиналась. Теперь повтор - это короткая петля, конец которой сведён кроссфейдом со звуком прямо перед тактом, так что каждый круг звучит как собственный переход трека от первого такта ко второму.
Тренировочный полёт, один раз
Последний элемент - короткий тренировочный полёт над городом. После первого нажатия ряд светящихся бусин показывает линию, по которой нужно лететь: сначала ровную, это ритм зависания, потом мягкие волны. Бусина, мимо которой ты пролетел достаточно близко, загорается. Тоннель появляется, как только загорятся шесть из последних восьми, или в любом случае по истечении лимита времени.
В первой версии он запускался в каждом обучающем забеге, то есть на практике в каждом забеге почти каждого нового игрока. В симуляции новая попытка доходила до пещеры более чем вдвое дольше, чем раньше, даже с идеальными тапами, а пилот, тапающий всего на 0,15 секунды мимо круга, перед каждой попыткой высиживал все 30 секунд лимита. Это обучение, превратившееся в зал ожидания. Теперь пройденный тренировочный полёт больше никогда не показывается на этом устройстве, а лимит для тех, кто его ещё не прошёл, - 12 секунд.
Откуда я знаю, что это работает
В наборе симуляций есть пилот, который тапает только тогда, когда велит круг. Он пролетает всё начало до пещеры, ни разу не коснувшись стены, за 29 тапов, в среднем примерно в 15 пикселях от маршрута. Другие проверки охватывают прыжок на семи частотах обновления, ожидание города, то, что тренировочный полёт сохраняется только после прохождения и никогда после истечения времени, и исчезновение круга, как только рекорд игрока превышает 233.
Чего не скажет ни одна симуляция - это каково круг ощущается под настоящим большим пальцем. Именно это я сейчас смотрю в данных первых забегов. Если ты только начинаешь, круг ждёт тебя в сегодняшней пещере; остальные правила - в руководстве по игре.