В данной статье речь пойдет о принципах вычисления баланса в нашей игре жанра Tower Defense (TD), которую мы выпустили летом 2012г. для платформ iOS и Android. Мы расскажем, c какими сложностями и ограничениями пришлось столкнуться, каков был ход мыслей геймдизайнера при выборе того или иного решения, и как был получен конечный результат.
Достижения игры
1. побывала в топ6 и топ7 в категориях US Appstore;
2. занимала топ1 категорий и топ7 overall в RU Appstore;
3. «письмо счастья» от Apple;
4. 425 000 закачек;
5. 5 звезд (средняя оценка для всех магазинов);
6. множество положительных комментариев;
7. обзоры на ведущих мировых мобильных порталах.
Термины
1. Кубок (база) – защищаемый объект, до которого нельзя допустить противников.
2. Крип – противник, цель которого: дойти до базы. В большинстве случаев не может атаковать башни.
3. Башня – устанавливаемый игроком неподвижный юнит, как правило, дистанционно воздействующий на противников.
4. Волна – несколько противников, движущихся с небольшими промежутками. Обычно между волнами есть достаточно большая пауза, в течение которой игрок строит/улучшает башни и оценивает стратегическую ситуацию на поле.
5. Тайл – ячейка поля. В данном случае – гекс (был выбран в виде ячейки поля в основном из-за красивой визуальной составляющей карты, созданной на их основе).
6. HP(ХП) – очки здоровья крипов. То, что отнимается при атаке башнями.
Подход к расчетам
Особенности данного жанра таковы, что у противников и юнитов игрока достаточно простой ИИ, а юниты игрока (башни) не могут перемещаться. Эти факторы во многом упрощают создание игры, однако, даже в таких достаточно узких рамках можно создать интересный и затягивающий геймплей.
Рассмотрим граничные условия:
1. Игра проходима, как минимум, при одной последовательности действий игрока.
2. Игрок должен что-то делать, чтобы выиграть. Это «что-то» как раз и определяет сложность игры: сколько раз за игру и в какие этапы игрок должен принять верное решение (иногда ничего не делать – тоже верное решение).
С другой стороны, баланс – это, прежде всего, полезность всех применяемых в игре башен. Если для победы на любом уровне можно использовать лишь 1-2 вида башен из 10 имеющихся, логично, что такой баланс оставляет желать лучшего.
Также, тактика должна зависеть от карты уровня и типов врагов на нем, исходя из которых игрок может сам построить стратегию прохождения.
В нашей игре мы столкнулись со следующим ограничением: гексагональное поле размером 14x7 тайлов, без скролла.
Такие размеры поля накладывают свои ограничения, как минимум, в пределе застройки. Фокус игры смещается с «застрой всю карту» на «грамотно поставь N башен». Если проводить аналогию по динамике, то вместо постройки крепости у нас в игре расстановка игроков перед матчем.
Базовый крип и базовая башня
На начальной стадии игры при малозаполненном поле длина пути крипа от точки появления до кубка в среднем должна быть порядка 20 тайлов.
Примем скорость крипа =0.8 тайлов в секунду (на такой скорости он визуально хорошо смотрится).
Радиус атаки базовой башни и скорость атаки должны быть такими, чтобы базовая башня убивала одиноко идущего крипа «в чистом поле».
Крип, идущий по прямой, попадает в сектор обстрела башни на 3-3.5 тайлах своего пути. Тогда, приняв урон базовым снарядом за 10, мы можем узнать HP юнита, которые будут удовлетворять условию.
Получаем 3.25 тайла/0.8 тайла в секунду =4с, за это время башня сделает 8 выстрелов, нанеся 80 ХП урона.
Итого, крип должен иметь не более 80ХП, сейчас стоит ХП=75 (это в любом случае 8 выстрелов, но игроку будет обидно видеть еле-еле живого крипа с 5ХП, который отнимает жизни у базы). Тогда крипы при разности появления в 4с могут быть уничтожены 1 башней.
Баланс волн и экономики игры
1. Доход от предыдущей волны должен позволить достроить башни (или улучшить их) в таком количестве, что сможет отбить следующую волну.
2. Игрок должен строить новые башни через каждые 1-2 волны. Если игрок не строит башни в течение 3-4 волн – баланс плохой.
3. Сложность должна нарастать от начала уровня к концу, т. е. избытка ресурсов к концу уровня не должно наблюдаться.
4. Сложность выбора вариантов действий (куда ставить башню? апгрейдить старую башню или ставить новую?) также должна возрастать ближе к концу уровня.
5. На каждом уровне настает момент, когда строить (или апгрейдить) дальше уже некуда, и это, фактически, максимальный предел уровня, до которого он должен быть закончен. На практике, уровень должен быть пройден когда застроено не более 60-70% мест, открытых для застройки.
Варианты «вырождения» ситуации
1. Игроку некуда поставить башню. Это может быть, если башни стоят слишком дешево, или же – игровое поле слишком мало. Так как по условиям задачи игровое поле в игре имеет размеры 14x7 тайлов, то на этот пункт надо обратить особо внимание.
2. Из пункта выше следует частный случай: следующее действие игрока становится предсказуемым за N шагов до него. Обычно это бывает в играх, где есть свободная застройка в открытом поле, и враги идут из 1 точки. В таком случае наиболее выигрышной стратегией оказывается постройка башен «змейкой». Однако, в большинстве случаев этот пункт зависит от дизайна отдельных уровней, а не от базового баланса.
3. Неравномерность заработка денег. Возможна ситуация, когда, достигая определенного числа башен, они уничтожат любое число крипов, и с одной уничтоженной волны противников игрок зарабатывает столько денег, что их хватит на все последующие волны. Почему это возможно и как с этим бороться – мы расскажем ниже.
Граничные условия, или как высчитывается число крипов в волне
Рассмотрим идеальную ситуацию, когда волна крипов движется вдоль ряда башен по прямой. Рассчитаем, сколько крипов при какой скорости движения и длине дорожке может быть уничтожено этими башнями.
Базовые постулаты
Берем базового крипа (фитнессист) и базовую башню (подающего). С данным радиусом атаки башни данного крипа могут одновременно атаковать 3-3.25 башни.
Скорость атаки башни – 2 выстрела в секунду, урон – 10 на выстрел, ХП крипа – 75, т. е. он выдерживает 8 попаданий. Скорость крипа – 0.8 тайла в секунду.
Так как крипы движутся волной, которая имеет определенную длину, одновременно возможна атака большим количеством башен. Насколько больше – зависит от длины волны. Удлинение волны на один тайл добавляет 1 башню к числу одновременно атакующих.
Длину «змейки» волны можно вычислить как N*dt*v, где N – число крипов, dt – задержка перед появлением следующего, v – скорость крипа.
Примем dt=0.5c (это минимально возможный промежуток между появлениями крипов, так как, в противном случае, в волне становится сложно различить отдельных юнитов), v=0.8т/с.
Тогда, если мы знаем число одновременно атакующих башен, нужно рассчитать, в течение какого времени эти башни будут атаковать, для чего разделим длину пути под атакой на скорость движения крипов.
Произведение этих величин и даст суммарный урон, который нанесут башни данной волне.
Составим неравенство, где
• h – прочность юнита, в ударах для данной башни.
• K – число выстрелов башней в секунду
• L – длина пути юнитов под атакой,
• v и N – скорость и число крипов соответственно.
Для базовой башни и базового юнита получим:
(3+ N* dt* v)* K* L/v>=N* h;
Значения переменных:
K= 2; v= 0.8; dt= 0.5; h= 8;
Получаем промежуточный результат:
L* (7.5+ 2* N* dt)>= 8* N;
Примем dt=0.5, а 7.5 округлим до 8, т. к. башни могут пробивать чуть больше, чем 3 тайла дорожки.
Получим:
(8+ N)* L>= 8* N.
Итого, при длине пути, простреливаемого башнями, больше 8, при любом числе крипов они будут уничтожены. Таким образом, мы нашли формулу, позволяющую вычислить, при какой длине пути сколько крипов можно запускать в волну.
Более того, число крипов в волне должно быть таким, чтобы доход от их убийства позволял построить башню в числе 1-2 штук, но не позволял застроить все поле.
О поведении игрока, предел застройки
Как правило, игрок производит действия с башнями в промежутках между волнами врагов. При числе волн =20 игрок произведет 20 строительств, каждое из которых может включать в себя несколько частей (построил башню, продал другую, сделал апгрейд третьей).
Прикинем, сколько вообще башен сможет построить игрок на обычном поле без скрола. Размер поля у нас 14 тайлов в длину и 6-7 в ширину. Итого, получаем: 14*6.5=91 тайл.
Примем, что точка входа противников находится в противоположным углу от базы игрока. Примем, что эта точка (ячейка поля) одна.
Если взять вариант «дорожка», какую строит игрок, чтобы удлинить путь юнитов врага (чтобы они дольше были под атакой), то ее длина будет порядка 40-45 тайлов.Чтобы заставить врагов двигаться по такой «змейке», игрок должен построить минимум 30 башен, всего же игрок сможет построить еще дополнительно 18 башен (при 43 тайлах пути).
При длине пути 43 и скорость 0.8 тайлов в секунду путь одного крипа займет порядка 55с, путь волны – порядка минуты. Учитывая, что средняя волна будет занимать 30-40с, то найдем время игровой сессии: при 20 волнах оно будет порядка 10-15 минут (без ускорения) на сложных уровнях. Однако, как показала практика, создать насыщенный и драматический уровень можно и меньшим числом волн – порядка 10.
Еще один из плюсов достаточно малого числа волн, и, как следствие, не очень долгого времени прохождения уровня – игрок не теряет энтузиазма, проиграв пару раз в конце уровня, и начинает уровень заново, вместо того, чтобы оставить игру.
Ясно, что никакая волна базовых крипов не сможет пройти этот путь, полностью застроенный башнями (напомню, что при длине пути больше 8, базовые крипы не доходят до базы при любом числе врагов в волне). Тогда, попробуем рассчитать какой HP должны иметь крипы, волна из которых хотя бы частично сможет дойти до базы.
Вернемся к предыдущей формуле:
(8+ N)* L>= h* N.
При длине пути равном 40, HP крипов, чтобы их гарантированно не убивали вышки при любом числе врагов в волне, должны быть не менее 40*10=400 (это в 5 раз больше базового крипа, то есть крип должен выдерживать 40 ударов базовой башни):
(8+ N)* 40>= h* N
320+ 40N>= h* N.
При h=50 получаем:
320>= 10* N, N<= 32.
При таком N (числе крипов в волне) башни не смогут уничтожить всех крипов.
Учитывая, что расчет производился для базовых башен с ценой 60, то можно вычислить сколько денег должен заработать игрок (плюс стартовый баланс денег), чтобы построить такую «змейку» (напомню, для такой змейки нужно построить 30 башен).
Итого, получаем 1800 монет на 20 волн.
Рассчет первых волн.
Рассмотрим начало уровня. Допустим, стартовых денег хватило игроку на установку 3 башен (итого длина пути под обстрелом =4, в среднем, при общей длине под обстрелом 6, но 3 башни одновременно бьют только часть пути), тогда число крипов в первой волне должно быть при dt=0.5c:
(8+ N)* 4>= 8* N
32>4N, N<8.
Итого, тогда каждый крип должен приносить не менее 5-6 монет, чтобы денег с первой волны хватило на покупку базовой башни или апгрейд.
Поэтому, зная сколько денег игрок будет иметь к концу первой волны, можно рассчитать суммарную «убойную мощность» башен на 2й волне, а значит – аналогично прикинуть число крипов во 2й волне. Разумеется, и башен, и врагов должно быть более одного вида, но об их настройке мы расскажем в следующей статье Баланс в играх жанра Tower Defense (часть 2)
Достижения игры
1. побывала в топ6 и топ7 в категориях US Appstore;
2. занимала топ1 категорий и топ7 overall в RU Appstore;
3. «письмо счастья» от Apple;
4. 425 000 закачек;
5. 5 звезд (средняя оценка для всех магазинов);
6. множество положительных комментариев;
7. обзоры на ведущих мировых мобильных порталах.
Термины
1. Кубок (база) – защищаемый объект, до которого нельзя допустить противников.
2. Крип – противник, цель которого: дойти до базы. В большинстве случаев не может атаковать башни.
3. Башня – устанавливаемый игроком неподвижный юнит, как правило, дистанционно воздействующий на противников.
4. Волна – несколько противников, движущихся с небольшими промежутками. Обычно между волнами есть достаточно большая пауза, в течение которой игрок строит/улучшает башни и оценивает стратегическую ситуацию на поле.
5. Тайл – ячейка поля. В данном случае – гекс (был выбран в виде ячейки поля в основном из-за красивой визуальной составляющей карты, созданной на их основе).
6. HP(ХП) – очки здоровья крипов. То, что отнимается при атаке башнями.
Подход к расчетам
Особенности данного жанра таковы, что у противников и юнитов игрока достаточно простой ИИ, а юниты игрока (башни) не могут перемещаться. Эти факторы во многом упрощают создание игры, однако, даже в таких достаточно узких рамках можно создать интересный и затягивающий геймплей.
Рассмотрим граничные условия:
1. Игра проходима, как минимум, при одной последовательности действий игрока.
2. Игрок должен что-то делать, чтобы выиграть. Это «что-то» как раз и определяет сложность игры: сколько раз за игру и в какие этапы игрок должен принять верное решение (иногда ничего не делать – тоже верное решение).
С другой стороны, баланс – это, прежде всего, полезность всех применяемых в игре башен. Если для победы на любом уровне можно использовать лишь 1-2 вида башен из 10 имеющихся, логично, что такой баланс оставляет желать лучшего.
Также, тактика должна зависеть от карты уровня и типов врагов на нем, исходя из которых игрок может сам построить стратегию прохождения.
В нашей игре мы столкнулись со следующим ограничением: гексагональное поле размером 14x7 тайлов, без скролла.
Такие размеры поля накладывают свои ограничения, как минимум, в пределе застройки. Фокус игры смещается с «застрой всю карту» на «грамотно поставь N башен». Если проводить аналогию по динамике, то вместо постройки крепости у нас в игре расстановка игроков перед матчем.
Базовый крип и базовая башня
На начальной стадии игры при малозаполненном поле длина пути крипа от точки появления до кубка в среднем должна быть порядка 20 тайлов.
Примем скорость крипа =0.8 тайлов в секунду (на такой скорости он визуально хорошо смотрится).
Радиус атаки базовой башни и скорость атаки должны быть такими, чтобы базовая башня убивала одиноко идущего крипа «в чистом поле».
Крип, идущий по прямой, попадает в сектор обстрела башни на 3-3.5 тайлах своего пути. Тогда, приняв урон базовым снарядом за 10, мы можем узнать HP юнита, которые будут удовлетворять условию.
Получаем 3.25 тайла/0.8 тайла в секунду =4с, за это время башня сделает 8 выстрелов, нанеся 80 ХП урона.
Итого, крип должен иметь не более 80ХП, сейчас стоит ХП=75 (это в любом случае 8 выстрелов, но игроку будет обидно видеть еле-еле живого крипа с 5ХП, который отнимает жизни у базы). Тогда крипы при разности появления в 4с могут быть уничтожены 1 башней.
Баланс волн и экономики игры
1. Доход от предыдущей волны должен позволить достроить башни (или улучшить их) в таком количестве, что сможет отбить следующую волну.
2. Игрок должен строить новые башни через каждые 1-2 волны. Если игрок не строит башни в течение 3-4 волн – баланс плохой.
3. Сложность должна нарастать от начала уровня к концу, т. е. избытка ресурсов к концу уровня не должно наблюдаться.
4. Сложность выбора вариантов действий (куда ставить башню? апгрейдить старую башню или ставить новую?) также должна возрастать ближе к концу уровня.
5. На каждом уровне настает момент, когда строить (или апгрейдить) дальше уже некуда, и это, фактически, максимальный предел уровня, до которого он должен быть закончен. На практике, уровень должен быть пройден когда застроено не более 60-70% мест, открытых для застройки.
Варианты «вырождения» ситуации
1. Игроку некуда поставить башню. Это может быть, если башни стоят слишком дешево, или же – игровое поле слишком мало. Так как по условиям задачи игровое поле в игре имеет размеры 14x7 тайлов, то на этот пункт надо обратить особо внимание.
2. Из пункта выше следует частный случай: следующее действие игрока становится предсказуемым за N шагов до него. Обычно это бывает в играх, где есть свободная застройка в открытом поле, и враги идут из 1 точки. В таком случае наиболее выигрышной стратегией оказывается постройка башен «змейкой». Однако, в большинстве случаев этот пункт зависит от дизайна отдельных уровней, а не от базового баланса.
3. Неравномерность заработка денег. Возможна ситуация, когда, достигая определенного числа башен, они уничтожат любое число крипов, и с одной уничтоженной волны противников игрок зарабатывает столько денег, что их хватит на все последующие волны. Почему это возможно и как с этим бороться – мы расскажем ниже.
Граничные условия, или как высчитывается число крипов в волне
Рассмотрим идеальную ситуацию, когда волна крипов движется вдоль ряда башен по прямой. Рассчитаем, сколько крипов при какой скорости движения и длине дорожке может быть уничтожено этими башнями.
Базовые постулаты
Берем базового крипа (фитнессист) и базовую башню (подающего). С данным радиусом атаки башни данного крипа могут одновременно атаковать 3-3.25 башни.
Скорость атаки башни – 2 выстрела в секунду, урон – 10 на выстрел, ХП крипа – 75, т. е. он выдерживает 8 попаданий. Скорость крипа – 0.8 тайла в секунду.
Так как крипы движутся волной, которая имеет определенную длину, одновременно возможна атака большим количеством башен. Насколько больше – зависит от длины волны. Удлинение волны на один тайл добавляет 1 башню к числу одновременно атакующих.
Длину «змейки» волны можно вычислить как N*dt*v, где N – число крипов, dt – задержка перед появлением следующего, v – скорость крипа.
Примем dt=0.5c (это минимально возможный промежуток между появлениями крипов, так как, в противном случае, в волне становится сложно различить отдельных юнитов), v=0.8т/с.
Тогда, если мы знаем число одновременно атакующих башен, нужно рассчитать, в течение какого времени эти башни будут атаковать, для чего разделим длину пути под атакой на скорость движения крипов.
Произведение этих величин и даст суммарный урон, который нанесут башни данной волне.
Составим неравенство, где
• h – прочность юнита, в ударах для данной башни.
• K – число выстрелов башней в секунду
• L – длина пути юнитов под атакой,
• v и N – скорость и число крипов соответственно.
Для базовой башни и базового юнита получим:
(3+ N* dt* v)* K* L/v>=N* h;
Значения переменных:
K= 2; v= 0.8; dt= 0.5; h= 8;
Получаем промежуточный результат:
L* (7.5+ 2* N* dt)>= 8* N;
Примем dt=0.5, а 7.5 округлим до 8, т. к. башни могут пробивать чуть больше, чем 3 тайла дорожки.
Получим:
(8+ N)* L>= 8* N.
Итого, при длине пути, простреливаемого башнями, больше 8, при любом числе крипов они будут уничтожены. Таким образом, мы нашли формулу, позволяющую вычислить, при какой длине пути сколько крипов можно запускать в волну.
Более того, число крипов в волне должно быть таким, чтобы доход от их убийства позволял построить башню в числе 1-2 штук, но не позволял застроить все поле.
О поведении игрока, предел застройки
Как правило, игрок производит действия с башнями в промежутках между волнами врагов. При числе волн =20 игрок произведет 20 строительств, каждое из которых может включать в себя несколько частей (построил башню, продал другую, сделал апгрейд третьей).
Прикинем, сколько вообще башен сможет построить игрок на обычном поле без скрола. Размер поля у нас 14 тайлов в длину и 6-7 в ширину. Итого, получаем: 14*6.5=91 тайл.
Примем, что точка входа противников находится в противоположным углу от базы игрока. Примем, что эта точка (ячейка поля) одна.
Если взять вариант «дорожка», какую строит игрок, чтобы удлинить путь юнитов врага (чтобы они дольше были под атакой), то ее длина будет порядка 40-45 тайлов.Чтобы заставить врагов двигаться по такой «змейке», игрок должен построить минимум 30 башен, всего же игрок сможет построить еще дополнительно 18 башен (при 43 тайлах пути).
При длине пути 43 и скорость 0.8 тайлов в секунду путь одного крипа займет порядка 55с, путь волны – порядка минуты. Учитывая, что средняя волна будет занимать 30-40с, то найдем время игровой сессии: при 20 волнах оно будет порядка 10-15 минут (без ускорения) на сложных уровнях. Однако, как показала практика, создать насыщенный и драматический уровень можно и меньшим числом волн – порядка 10.
Еще один из плюсов достаточно малого числа волн, и, как следствие, не очень долгого времени прохождения уровня – игрок не теряет энтузиазма, проиграв пару раз в конце уровня, и начинает уровень заново, вместо того, чтобы оставить игру.
Ясно, что никакая волна базовых крипов не сможет пройти этот путь, полностью застроенный башнями (напомню, что при длине пути больше 8, базовые крипы не доходят до базы при любом числе врагов в волне). Тогда, попробуем рассчитать какой HP должны иметь крипы, волна из которых хотя бы частично сможет дойти до базы.
Вернемся к предыдущей формуле:
(8+ N)* L>= h* N.
При длине пути равном 40, HP крипов, чтобы их гарантированно не убивали вышки при любом числе врагов в волне, должны быть не менее 40*10=400 (это в 5 раз больше базового крипа, то есть крип должен выдерживать 40 ударов базовой башни):
(8+ N)* 40>= h* N
320+ 40N>= h* N.
При h=50 получаем:
320>= 10* N, N<= 32.
При таком N (числе крипов в волне) башни не смогут уничтожить всех крипов.
Учитывая, что расчет производился для базовых башен с ценой 60, то можно вычислить сколько денег должен заработать игрок (плюс стартовый баланс денег), чтобы построить такую «змейку» (напомню, для такой змейки нужно построить 30 башен).
Итого, получаем 1800 монет на 20 волн.
Рассчет первых волн.
Рассмотрим начало уровня. Допустим, стартовых денег хватило игроку на установку 3 башен (итого длина пути под обстрелом =4, в среднем, при общей длине под обстрелом 6, но 3 башни одновременно бьют только часть пути), тогда число крипов в первой волне должно быть при dt=0.5c:
(8+ N)* 4>= 8* N
32>4N, N<8.
Итого, тогда каждый крип должен приносить не менее 5-6 монет, чтобы денег с первой волны хватило на покупку базовой башни или апгрейд.
Поэтому, зная сколько денег игрок будет иметь к концу первой волны, можно рассчитать суммарную «убойную мощность» башен на 2й волне, а значит – аналогично прикинуть число крипов во 2й волне. Разумеется, и башен, и врагов должно быть более одного вида, но об их настройке мы расскажем в следующей статье Баланс в играх жанра Tower Defense (часть 2)