Секторы по семь секунд: как TUNL задаёт темп забега
Кривая сложности говорит тебе, насколько трудна игра в данный момент. Она не говорит тебе, каково ощущение от этого забега. Это история о замене кучи независимых кривых на план и о том, как измерялось, сработал ли он.
В течение первого десятка версий сложность TUNL представляла собой набор отдельных кривых. У расстояния между сталактитами была своя кривая, у расстояния между минами своя, у расстояния между монетами своя, и каждая была функцией того, насколько глубоко в пещеру ты забрался. Каждая кривая сама по себе имела смысл. Вместе они создавали забег, который ощущался неровным, а когда я наконец это измерил, цифры говорили то же самое, что и ощущения.
Что показал аудит
Я воспроизвёл реальные генераторы и реальную физику с ботами четырёх уровней навыка, по сто забегов каждый, на 24 разных дневных сидах. Затем я посмотрел, когда происходило что-то новое и где умирали боты. Выделились четыре проблемы:
- Темп был неровным. Семь новых элементов появлялись за первые девять секунд. Затем ничего нового в течение тринадцати секунд. Затем пять за следующие четырнадцать. Затем ничего нового больше никогда до конца забега.
- Первая ошибка была фатальной для новичков. 41% забегов самого слабого бота заканчивались в пределах восьми очков от момента, когда стены становились смертельными, и 91% смертей этого бота были от стен. Открытая безопасная зона в начале лишь отталкивала игрока назад, поэтому не могла научить единственной вещи, которую нужно было усвоить новичкам.
- Середина была обрывом. Плотность сталактитов удваивалась дважды между очками 300 и 1150, и это заканчивало каждый забег бота-эксперта где-то в диапазоне 500-900.
- Мины утроились случайно. Более редкие сталактиты мешали правилу размещения отклонять мины и монеты, поэтому количество мин утроилось, хотя никто об этом не просил. Эта связь важна позже.
Идея: забег - это последовательность секторов
Вместо отдельных кривых я написал план. Забег - это последовательность секторов, каждый длиной семь секунд при фиксированной эталонной скорости. Сектор 0 - это безопасный начальный полёт. Каждый следующий сектор либо вводит ровно одну новую вещь, либо усиливает что-то уже знакомое. Уведомление «СЕКТОР n» появляется на каждой границе начиная с третьей, чтобы игрок мог почувствовать структуру.
Длина намеренно измеряется в секундах, а не в пикселях. Пещера постоянно ускоряется, поэтому фиксированное число мировых пикселей означает всё меньше и меньше времени по мере продолжения забега. Сектор, определённый в пикселях, становился бы всё короче. Определённый в эталонных секундах и переведённый обратно в мировую позицию путём интегрирования тренда эталонной скорости, граница сектора остаётся чистой функцией позиции. Это важно, потому что вся игра должна оставаться одинаковой для каждого игрока: я писал о причинах этого в посте о ежедневной пещере.
| Сектор | Очки | Что нового |
|---|---|---|
| 0 | 0 - 50 | Открытый коридор. Золотые монеты и монеты-песочные часы. |
| 1 | 50 - 110 | Первые сталактиты, монета-щит |
| 2 | 110 - 180 | Патроны, магнит |
| 3 | 180 - 250 | Первая мина (одиночная, по центру), монета-бомба |
| 4 | 250 - 330 | Валуны |
| 5 | 330 - 410 | Сужения, плавно появляющиеся |
| 6 | 410 - 490 | Пушки |
| 7 | 490 - 580 | Падающие сталактиты |
| 8 | 580 - 680 | Монета-яд |
| 9 | 680 - 770 | Монета-высасывание |
| 10+ | 770 и выше | Ничего нового. Показатели продолжают расти. |
Порядок определяют два правила. Инструменты появляются раньше угрозы, на которую они отвечают. Монета-щит появляется на сектор раньше первой мины, чтобы у игрока было что потратить. И инструменты не могут появляться слишком поздно, потому что ежедневные задания («собери пять патронов», «возьми два магнита», «используй три бомбы») накопительные за день и должны оставаться достижимыми для случайных игроков, чьи забеги заканчиваются примерно на втором или третьем секторе. Прежде чем сдвинуть любой порог появления монет, я проверил список заданий.
Плотность - это скорость, а не расстояние
Внутри сектора плотность опасности - это скорость в единицу эталонного времени: слоты сталактитов по два в секунду в секторе 1, растущие на 14% за сектор и замедляющиеся до 8% за сектор начиная с сектора 8. Мины начинаются с 0,28 в секунду в секторе 3, растущие на 20% за сектор, а затем на 10%. Расстояние в пикселях выводится из этой скорости и сохраняет жёсткий нижний предел, поэтому скорости могут расти без ограничений, и каждый забег всё равно заканчивается. Именно мина гарантирует это, потому что мина может оказаться где угодно в коридоре, поэтому никакая ширина коридора не делает достаточно быструю пещеру проходимой.
Каждый сектор - это ещё и пила. Первая пятая его часть идёт на 55% от целевой плотности, с дополнительными кандидатами на монеты в качестве награды, а затем поднимается с 80% до 115% к следующей границе. Так игрок получает передышку в начале каждого сектора, затем растущее давление, затем новую идею. Постоянный подъём утомляет. Подъём с передышками - это то, что люди называют честным.
Настраивай по измеренной скорости, никогда по числу расстояния. Правила размещения отклоняют объекты, которые оказались бы в несправедливом месте, и доля отклонённых меняется вместе с плотностью. Уменьшение расстояния вдвое не удваивает количество опасностей, и именно эта связь стала причиной того, что количество мин утроилось в первый раз. Поэтому каждый проход настройки заканчивается повтором, который подсчитывает объекты, реально размещённые за реальную секунду.
Царапины корпуса: прощаем стену, не шип
Второе крупное изменение было для новичков, умиравших о первую стену. Теперь у корабля есть две царапины корпуса. Контакт со стеной тратит одну, отбрасывает корабль обратно внутрь и показывает «ЦАРАПИНА!». Когда их не остаётся, следующий контакт заканчивает забег.
Они начинались как временная помощь, истекавшая в секторе 3. Как только каждый забег стал начинаться с влёта в устье туннеля со смертельными стенами с самого начала, стало логично, что они длятся весь забег, и теперь так и есть. Период неуязвимости после царапины защищает только от стены. Сталактиты, мины, валуны и выстрелы остаются смертельными, и корабль не мигает. Если бы неуязвимость покрывала всё, хороший игрок мог бы нарочно задеть стену, чтобы пролететь через поле сталактитов, поэтому правило таково: царапины прощают ошибки со стенами, а прямые попадания - работа щита.
Я также попробовал очевидную альтернативу - бесплатный щит в тот же момент. Это в основном помогало сильному уровню, который использовал его, чтобы позже пережить сталактит, и подняло их медианный забег примерно на 72%. Это вознаграждало навык, который не нуждался в помощи, и я отказался от этой идеи.
Сработало ли это?
Те же боты, на тех же сидах, до и после. «Средний» - это уровень, чьё поведение лучше всего соответствовало реальным игрокам в предыдущей версии.
| Уровень бота | Медианный счёт | Достигает 100 | Умирает в пределах 8 очков от момента, когда стены становятся смертельными |
|---|---|---|---|
| Новичок | 65 → 95 | 4% → 39% | 41% → 3% |
| Средний | 107 → 155 | 32% → 70% | 16% → 2% |
| Хороший | 205 → 401 | 80% → 91% | 1% → 1% |
| Эксперт | 715 → 928 | 100% | 0% |
Смертность по секторам для среднего уровня превратилась в плавный подъём (38%, затем 60%, затем 68% в первых трёх опасных секторах) вместо обрыва. Это та форма, которую я хотел: забег должен заканчиваться постепенно всё более вероятно, а не внезапно наверняка.
Что это не исправило
Эксперты всё ещё упираются в стену времени реакции около секторов 10 и 11, где заканчиваются 63%, а затем 77% экспертных забегов. До плана это было 100% в секторах 7 и 8, так что это реальное улучшение, но это не тот плавный подъём, что есть в более ранних секторах. Я попробовал два очевидных исправления: более медленный рост длины сталактитов и более медленный подъём вероятности сужений. Оба измерения показали нулевой эффект. Оставшийся рычаг - это сама скорость, и я оставил её без изменений, потому что скорость намеренно никогда не выходит на плато, а пещера, которая перестаёт ускоряться, - это пещера, которая перестала требовать чего-то нового от очень хорошего игрока.
Что я бы сохранил
Две привычки. Во-первых, планируй последовательность того, с чем игрок сталкивается, а не только то, насколько сложна каждая вещь: одна новая идея за раз читается как игра, которая тебя учит, а сразу пять читаются как игра, которая тебя заваливает. Во-вторых, никогда не доверяй изменению сложности, пока симуляция не покажет, где умирает каждый тип игрока. Оба крупнейших сюрприза здесь, количество мин и смерти у первой стены, были невидимы при игре и очевидны из таблицы.
Версию того же плана для игроков можно прочитать в руководстве по игре.