Тридцать процентов в минуту — обещание, которое не сдержать
· 3 мин чтения
Husktide — игра в духе survivors: вы ходите, оружие стреляет само, рой растёт, а на каждом новом уровне вы выбираете улучшение. Забег рассчитан на тридцать минут: в 30:00 приходит Harvester. Добраться до него с собранным билдом — цель, которую ставит игра.
В исходном дизайн-брифе одной строкой было сказано, что здоровье врагов должно расти на 30% в минуту, без потолка. Звучит как разумная кривая сложности, но арифметику стоит один раз проделать.
Что на самом деле значат 30% в минуту
Тридцать процентов в минуту со сложным процентом — это 1,3, умноженное само на себя раз в минуту. Через пять минут получается 3,7 от стартового здоровья — круто, но нормально. Через тридцать — примерно в 2 600 раз.
Жук, которого в начале убивают за два удара, в конце потребовал бы около пяти тысяч. Ни один билд столько не выдаст, так что вторая половина каждого забега была не сложной, а математически невозможной. Цель, которую объявляет игра, — дожить до 30:00 — была недостижима в принципе. Хороший билд при такой кривой ничего не решал: она просто назначала минуту, в которую вы умрёте.
Кривая сейчас
Первые пять минут здоровье по-прежнему растёт со сложным процентом на полные 30%, потому что именно тут игра должна быстро разгоняться, а билд игрока растёт так же быстро. После пятой минуты рост становится линейным: каждую минуту добавляется 62% от значения на пятой минуте.
К 30:00 это даёт примерно в 61 раз больше стартового здоровья вместо 2 600. Всё ещё стена, и так задумано, — но стена, на которую собранный билд способен забраться.
Почему одна кривая на всех врагов — ошибка
Вторая проблема была тоньше. Когда одна и та же кривая применяется ко всем, мелкие враги-«мясо» перестают умирать с одного удара где-то к восьмой минуте, и в этот момент жанр перестаёт ощущаться самим собой. Выкашивать ковёр из мелочи — половина удовольствия. Когда каждому элементу ковра нужно уже по три удара, экран забивается, игрок вязнет, и кажется, что оружие стало хуже.
Поэтому теперь у каждого типа врагов свой показатель степени — число, которое говорит, какую долю глобальной кривой он чувствует. «Мясо» почти её не чувствует; элита чувствует почти целиком. В 30:00, без учёта меньшей надбавки, которая следит за вашим уровнем:
- Ползун, самая мелкая тварь в рое, вырастает с 7 здоровья примерно до 20. Он по-прежнему умирает почти от чего угодно.
- Оса-бритва — с 12 примерно до 68.
- Жук-солдат — с 20 примерно до 260.
- Паук-ткач — с 52 примерно до 1 700.
- Громила улья — со 130 до более чем 7 000.
«Мясо» остаётся «мясом», элита становится стенами, а поздняя игра сводится к тому, чтобы разбираться со стенами, пока ковёр продолжает наползать, — а именно такой поздняя игра в этом жанре и должна быть.
Как держать цифры честными
Все эти значения живут в одном блоке в начале файла игры, а не разбросаны по нему. Длина забега, лимит врагов, темп роста, переключение на пятой минуте и линейный темп стоят рядом, и у каждого есть комментарий, почему у него именно такое значение. Когда кривая размазана по десятку мест, кто-нибудь меняет одно из них — и уже никто не может сказать, что игра теперь делает на двадцатой минуте.
Изменения баланса сначала измеряются, а потом обсуждаются: игровой цикл можно прокручивать вручную из консоли, так что мы можем перемотать часы вперёд и посмотреть, какое здоровье будет у врага на любой минуте, не доигрывая до неё.
Общий принцип
Правило сложности, которое умещается в одно предложение, привлекательно именно тем, что умещается в одно предложение, а сложный рост проще всего записать. И как раз он скорее всего тихо сломает игру, потому что первые пять минут — та часть, которую тестируют все, — ощущаются ровно как надо. Перемножьте до конца забега, прежде чем выпускать.
Сыграйте в Husktide и посмотрите, как близко к 30:00 доберётся ваш билд.
