April 17, 2024

Филлинг We Are Warriors  

Больше интересного про ГК - в моём тг-канале:
>>>> Геймдев Бомж <<<< Спасибо за подписку!

Отличный чат по разработке гипер-казуальных игр: https://t.me/hyper_casual
(Спасибо Анатолию за рекламу и статистику)

Статья написана совместно с Александром Кузнецовым, спасибо за помощь!

О чём речь

Есть такая игра, We are Warriors, от авторов EatVenture.

С виду очень простая и поначалу многим кажется скучной. По факту серьезно затягивает и ревенью у неё тоже серьёзный:

  • Дата выхода: 23 сентября 2023
  • Загрузок: 18 млн. инсталлов
  • Доход: ~4 млн. долларов если вместе с рекламой.

Немного доп.инфы от разработчика:

(на Редите нашёл)

Сколько времени заняла разработка? - 3 недели для изначального прототипа и первого теста. 5 месяцев до полного релиза.

Сколько людей работало над игрой? - 2 разработчика, 1 художник и 1 геймдизайнер

На чём сделана игра? - Unity

Какие дальнейшие планы по игре? - Выпускать регулярные обновления

Сколько неудачных итераций было до успеха WaW? - Около 30

Почему эта скучная игра столько зарабатывает? В этой статье я опишу первую сессию и покажу, какие эмоции она вызывает.

Таблица филлинга

Тактика имеет значение

Если смотреть, сколько времени занимал каждый трай, и сколько денег за трай игрок зарабатывал, то никакой плавной зависимости от прокачки не наблюдается. Жёлтая линия заработка скачет туда-сюда от трая к траю, хотя никакого рандома в поведении врагов нет.

На графике расположил юнитов, в том порядке и том тайминге,
в котором они спавнятся во время трая.

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

После 17го трая мне хватило на Эволюцию (Evolve) - все прокачки сбросились, купленные юниты сбросились, золото сбросилось:

Зато чувак с дубиной превратился в чувака с вилами, у которого в 2.6 раз больше ДПС и в 3.6 раз больше ХП.После чего я за несколько траев снова дошёл до последней волны, купил дальнобойного чела, и ещё через три трая всех победил.

Выводы 1

Крутые моменты, которые я себе записал:

  • Ручная подстройка мелочей в балансе:
    • Твой самый слабый юнит на 0.01% сильнее вражеского (на остальных юнитов это правило не распространяется)
    • Камнеметатель умирает от одного удара милишника, но ему хватает 0.01 сек, чтобы успеть его закидать издалека.
    • При первом трае тебе не хватает 0.01 сек, чтобы заспавнить юнита и спасти базу.
  • Тебе не показывают окошко, сколько ты заработал за трай, пока ты не заработаешь серьезную сумму и будешь готов нажать на х2. Правило действует до первого показа окна, потом оно появляется, если заработал хоть что-то.
  • Тебе перестают давать возможность посмотреть ревард в начале трая, чтобы ты почувствовал неудовлетворение и желание повторить то чувство, когда твоя толпа всех выносит. Для этого придётся пофармить и посмотреть побольше ревардов на х2.
  • Ты понимаешь, что спавнишь юнитов не идеально. В следующем трае заспавнишь получше.
  • У тебя есть мнимый выбор, что прокачивать, но вторая прокачка, по сути, бесполезна. В итоге выбор есть, а муки выбора нет.
  • Ты не можешь купить софтвалюту. Возникла мысль, что сейчас никто не пытается развести меня на деньги, поэтому не грех и пофармить.

Во второй части статьи я прикину, как с нуля считают баланс для такой игры, не до конца, но хотя бы первый этап.


Часть 2 - Расчёт баланса

Как это балансить?

Чтобы забалансить такую игру, придётся делать симуляцию геймплея, чтобы можно быстро рассчитывать, какой прогресс будет через N часов.
Но для симуляции всё равно нужен какой-то изначальный баланс, так что расчехляем Эксель!

Коэффициент скила

По графику результатов за каждый трай видно, что скилл (умение вовремя спавнить правильных юнитов) существенно влияет на результат.
Давайте посмотрим, насколько.

Простой способ, попробовал где то в середине прокачки:

  • Если тупо спавнить только самых мощных юнитов, динозавров, по кд - зарабатываешь 209 монет
  • Если постараться и спавнить по тактике, то 342.

Важно ещё не просто спавнить танков перед дальнобоями, но и не давать замесу случаться близко к вражеской базе. Если замес вплотную к базе, твои юниты переключаются на уничтожение базы, и вражеские дальнобои расстреливают твоё войско не отходя со спавна.

Получается, успех зависит от прокачки процентов на 60-70, примем что коэф-т скила = 0.65 (использую эту инфу позже)

Игра подначивает тебя пробовать трай за траем, такой Clash Royale на минималках. В каком-нибудь Арчеро ты можешь объяснить свои неудачи, что ты просто дед без реакции. В этой игре геймплей очень неспешный, так что отговорок и фрустрации нет.

Настраиваем волны мобов
Время на все волны должно быть полторы минуты.
Мощность волн не должна постоянно расти, а то будет скучно, должны быть и лёгкие волны.

Настраиваем характеристики юнитов, чтобы между ними чувствовалась разница:

  • ХП
  • Урон за удар
  • Скорость атаки
  • Стоимость в мясе
  • Скорость передвижения у всех юнитов одинаковая.

Не умею дизассемблить апк-шки и вытаскивать баланс, прикинул поэтому характеристики мобов по видео:

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

Добавляем прокачку

У нас есть один главный параметр:

  • Производство мяса в секунду

Враги нападают волнами, характеристики у вражеских юнитов такие же, как у наших.

Получается простой KPI для баланса:

  • К моменту последней волны мы должны произвести столько же мяса, сколько суммарно стоят все вражеские юниты со всех 11 волн.

Если в числах, то это 153 мяса за 1:50 сек, т.е. 1.39 мяса в секунду будет достаточно для победы тупым копированием волн противника. Умножаем на коэффициент скила 0.65, получаем 0.9 мяса в сек.

// Проверка
Прошёл первый этап ещё раз, не делая Эволв, и у меня получилось победить как раз при 0.92 мяса в секунду.
Но затем я опять несколько раз проиграл) На 1 мяса в сек. побеждал уже более-менее стабильно.

Теперь нам надо настроить стоимость и количество прокачек, а также прикинуть, сколько в принципе уйдёт времени на прохождение.

Наши вводные на основе наших хотелок:

- Мин. и макс. продолжительность трая (30 и 130 сек)

- Скорость производства мяса, при которой можно будет пройти уровень
(1 мясо в сек)

- Начальная цена прокачки (8 мяса)

- Шаг прокачки (0.02 мяса в сек)

- Начальная скорость производства мяса (0.16 мяса в с ек)

- Сколько максимально можно заработать за трай (1000 монет)

Что нам надо найти:

- По какому закону должна расти стоимость прокачки?

- Сколько времени необходимо потратить игроку для прохождения 1 стейджа?

Находим на изи число уровней прокачки:

  • Знаем начальную величину (0.16),
  • Знаем шаг (0.02),
  • Знаем конечную величину (1)
  • Итого:

0.16+0.02*x=1
x=(1-0.16)/0.02=42 раза надо нажать на кнопку “Upgrade”

Находим формулу увеличения стоимости прокачки:

  • Знаем, что в таких играх обычно применяют формулу с экспонентой вида y=e^(kx+b)
  • Теперь знаем количество прокачек (42)
  • Если подсматриваете баланс в чужой игре, можно пользоваться этим сайтом:
    выставляешь точки, и он по ним аппроксимирует кривую нужного типа.
    А потом уже подгоняешь в Экселе, довольно быстро получается:
  • Если делаешь с нуля, просто прикидываешь, чтобы цены за прокачку были разумные.
    Если для одной прокачки надо фармить 50 траев - баланс туговат). У нас финальная прокачка стоит 7к, это 8-10 траев, норм.
  • После подгонки в Экселе коэффициентов k и b, (чтобы сумма прокачек была как в оригинале)
    Получилась формула y=e^(1,94x+1,64)
Если вам интересно почитать про экспоненциальные функции, то вот классная статья на GDCuffs

Находим число монет за весь 1й стейдж:

  • В нашей упрощенной модели игрок накапливает до последней прокачки и одерживает победу
    Следовательно, за все траи он заработает ровно столько, сколько в сумме стоят все прокачки, 43977 золота.

Находим число траев, и сколько игрок потратит в итоге времени:

  • В реальной игре заработок игрока за трай - скачущая жёлтая линия.
    Продолжительность трая так же скачет.
  • Но в нашей упрощенной модели длительность трая растёт линейно, так же как и заработок:
    Красная линия на графике:
  • Площадь этого треугольника - это сколько игрок заработает за весь стейдж, это мы уже рассчитали, 43977 золота.
  • Зная максимальный заработок за трай (1000), находим сколько траев в итоге уйдёт на прохождение:

(1000*x)/2=43977

x=87.9

Получается, на всё потребуется 88 траев

Находим время, которое игроку придётся на эти траи потратить:

Суммарная продолжительность всех траев, это площадь прямоугольной трапеции, где:

левая сторона - минимальное время трая (30сек),
правая сторона - максимальное время трая (130сек),
основание - количество траев (88).

Итого, общее время на прохождение 1го стейджа  = (30*88)+(130*88/2) = 8360 секунд = 2.3 часа

// Проверка В реале я измерил два прохождения:

  • За 50 минут:
    • С эволвом (сбросом прогресса ради новой стадии юнитов)
    • С просмотром ревардов на доп.мясо
    • С просмотром ревардов на х2 монет
  • За 90 минут:
    • Без эволва
    • С просмотром ревардов на доп.мясо
    • С просмотром ревардов на х2 монет
    • С просмотром ревардов на 1.5 ускорение игры (появляются после часа игры где то)

Думаю, это хорошая метрика, что все реварды в совокупности должны ускорять прогресс где то в 2.5 раз.

Как балансить дальше:

  • Дальнейший фарм после эволва никакого смысла не несёт - прогресс при эволве сбрасывается.
  • Получается, единственно верная тактика - копить на эволв и сразу его делать. После чего можно перепроходить старые уровни и фармить золото там.
  • Получается, мы с каждым эволвом повышаем сложность врагов, и компенсируем это добавлением перманентных улучшалок, которые постепенно копятся и не сбрасываются.
  • Дальше в игре так же добавляются скилы, они вносят небольшое разнообразие, но по ощущениям не особо влияют на баланс.
  • В общем, конечно, не просто балансить, но в этой игре хотя бы виднеется дно, если делать анализ, как её считать.
    Можно анализировать и учиться.

Выводы 2

  • Чтобы упростить написание баланса, можно просто ввести “коэффициент скила” для расчётов.
  • Реварды в совокупности должны ускорять прогресс где то в 2.5 раз.
  • Приятно зачищать старые уровни после Эволва

Больше интересного в моём тг-канале: >>>> Геймдев Бомж <<<< Спасибо за подписку!

Отличный чат по разработке гипер-казуальных игр: https://t.me/hyper_casualНаписать мне в лс - @belchak