Секторы по семь секунд: как TUNL задаёт темп забега

Кривая сложности говорит тебе, насколько трудна игра в данный момент. Она не говорит тебе, каково ощущение от этого забега. Это история о замене кучи независимых кривых на план и о том, как измерялось, сработал ли он.

Дневник разработки · 20 сентября 2026 · все записи

В течение первого десятка версий сложность TUNL представляла собой набор отдельных кривых. У расстояния между сталактитами была своя кривая, у расстояния между минами своя, у расстояния между монетами своя, и каждая была функцией того, насколько глубоко в пещеру ты забрался. Каждая кривая сама по себе имела смысл. Вместе они создавали забег, который ощущался неровным, а когда я наконец это измерил, цифры говорили то же самое, что и ощущения.

Что показал аудит

Я воспроизвёл реальные генераторы и реальную физику с ботами четырёх уровней навыка, по сто забегов каждый, на 24 разных дневных сидах. Затем я посмотрел, когда происходило что-то новое и где умирали боты. Выделились четыре проблемы:

Идея: забег - это последовательность секторов

Вместо отдельных кривых я написал план. Забег - это последовательность секторов, каждый длиной семь секунд при фиксированной эталонной скорости. Сектор 0 - это безопасный начальный полёт. Каждый следующий сектор либо вводит ровно одну новую вещь, либо усиливает что-то уже знакомое. Уведомление «СЕКТОР n» появляется на каждой границе начиная с третьей, чтобы игрок мог почувствовать структуру.

Длина намеренно измеряется в секундах, а не в пикселях. Пещера постоянно ускоряется, поэтому фиксированное число мировых пикселей означает всё меньше и меньше времени по мере продолжения забега. Сектор, определённый в пикселях, становился бы всё короче. Определённый в эталонных секундах и переведённый обратно в мировую позицию путём интегрирования тренда эталонной скорости, граница сектора остаётся чистой функцией позиции. Это важно, потому что вся игра должна оставаться одинаковой для каждого игрока: я писал о причинах этого в посте о ежедневной пещере.

СекторОчкиЧто нового
00 - 50Открытый коридор. Золотые монеты и монеты-песочные часы.
150 - 110Первые сталактиты, монета-щит
2110 - 180Патроны, магнит
3180 - 250Первая мина (одиночная, по центру), монета-бомба
4250 - 330Валуны
5330 - 410Сужения, плавно появляющиеся
6410 - 490Пушки
7490 - 580Падающие сталактиты
8580 - 680Монета-яд
9680 - 770Монета-высасывание
10+770 и вышеНичего нового. Показатели продолжают расти.

Порядок определяют два правила. Инструменты появляются раньше угрозы, на которую они отвечают. Монета-щит появляется на сектор раньше первой мины, чтобы у игрока было что потратить. И инструменты не могут появляться слишком поздно, потому что ежедневные задания («собери пять патронов», «возьми два магнита», «используй три бомбы») накопительные за день и должны оставаться достижимыми для случайных игроков, чьи забеги заканчиваются примерно на втором или третьем секторе. Прежде чем сдвинуть любой порог появления монет, я проверил список заданий.

Плотность - это скорость, а не расстояние

Внутри сектора плотность опасности - это скорость в единицу эталонного времени: слоты сталактитов по два в секунду в секторе 1, растущие на 14% за сектор и замедляющиеся до 8% за сектор начиная с сектора 8. Мины начинаются с 0,28 в секунду в секторе 3, растущие на 20% за сектор, а затем на 10%. Расстояние в пикселях выводится из этой скорости и сохраняет жёсткий нижний предел, поэтому скорости могут расти без ограничений, и каждый забег всё равно заканчивается. Именно мина гарантирует это, потому что мина может оказаться где угодно в коридоре, поэтому никакая ширина коридора не делает достаточно быструю пещеру проходимой.

Каждый сектор - это ещё и пила. Первая пятая его часть идёт на 55% от целевой плотности, с дополнительными кандидатами на монеты в качестве награды, а затем поднимается с 80% до 115% к следующей границе. Так игрок получает передышку в начале каждого сектора, затем растущее давление, затем новую идею. Постоянный подъём утомляет. Подъём с передышками - это то, что люди называют честным.

Настраивай по измеренной скорости, никогда по числу расстояния. Правила размещения отклоняют объекты, которые оказались бы в несправедливом месте, и доля отклонённых меняется вместе с плотностью. Уменьшение расстояния вдвое не удваивает количество опасностей, и именно эта связь стала причиной того, что количество мин утроилось в первый раз. Поэтому каждый проход настройки заканчивается повтором, который подсчитывает объекты, реально размещённые за реальную секунду.

Царапины корпуса: прощаем стену, не шип

Второе крупное изменение было для новичков, умиравших о первую стену. Теперь у корабля есть две царапины корпуса. Контакт со стеной тратит одну, отбрасывает корабль обратно внутрь и показывает «ЦАРАПИНА!». Когда их не остаётся, следующий контакт заканчивает забег.

Они начинались как временная помощь, истекавшая в секторе 3. Как только каждый забег стал начинаться с влёта в устье туннеля со смертельными стенами с самого начала, стало логично, что они длятся весь забег, и теперь так и есть. Период неуязвимости после царапины защищает только от стены. Сталактиты, мины, валуны и выстрелы остаются смертельными, и корабль не мигает. Если бы неуязвимость покрывала всё, хороший игрок мог бы нарочно задеть стену, чтобы пролететь через поле сталактитов, поэтому правило таково: царапины прощают ошибки со стенами, а прямые попадания - работа щита.

Я также попробовал очевидную альтернативу - бесплатный щит в тот же момент. Это в основном помогало сильному уровню, который использовал его, чтобы позже пережить сталактит, и подняло их медианный забег примерно на 72%. Это вознаграждало навык, который не нуждался в помощи, и я отказался от этой идеи.

Сработало ли это?

Те же боты, на тех же сидах, до и после. «Средний» - это уровень, чьё поведение лучше всего соответствовало реальным игрокам в предыдущей версии.

Уровень ботаМедианный счётДостигает 100Умирает в пределах 8 очков от момента, когда стены становятся смертельными
Новичок65 → 954% → 39%41% → 3%
Средний107 → 15532% → 70%16% → 2%
Хороший205 → 40180% → 91%1% → 1%
Эксперт715 → 928100%0%

Смертность по секторам для среднего уровня превратилась в плавный подъём (38%, затем 60%, затем 68% в первых трёх опасных секторах) вместо обрыва. Это та форма, которую я хотел: забег должен заканчиваться постепенно всё более вероятно, а не внезапно наверняка.

Что это не исправило

Эксперты всё ещё упираются в стену времени реакции около секторов 10 и 11, где заканчиваются 63%, а затем 77% экспертных забегов. До плана это было 100% в секторах 7 и 8, так что это реальное улучшение, но это не тот плавный подъём, что есть в более ранних секторах. Я попробовал два очевидных исправления: более медленный рост длины сталактитов и более медленный подъём вероятности сужений. Оба измерения показали нулевой эффект. Оставшийся рычаг - это сама скорость, и я оставил её без изменений, потому что скорость намеренно никогда не выходит на плато, а пещера, которая перестаёт ускоряться, - это пещера, которая перестала требовать чего-то нового от очень хорошего игрока.

Что я бы сохранил

Две привычки. Во-первых, планируй последовательность того, с чем игрок сталкивается, а не только то, насколько сложна каждая вещь: одна новая идея за раз читается как игра, которая тебя учит, а сразу пять читаются как игра, которая тебя заваливает. Во-вторых, никогда не доверяй изменению сложности, пока симуляция не покажет, где умирает каждый тип игрока. Оба крупнейших сюрприза здесь, количество мин и смерти у первой стены, были невидимы при игре и очевидны из таблицы.

Версию того же плана для игроков можно прочитать в руководстве по игре.

Играть в пещеру дня