[GL] Экономика - ACT2.numbers 43:28

Игровой баланс. Часть 2

Краткое содержание цикла про баланс:

Введение и подготовка к работе
Начало работы: константы и прогрессии
— Боевой баланс (расчет эффективности)
— Модели и экономика

Начало работы

Дисклеймер: я набивал руку на «диких» проектах, в которых был единственным геймдизайнером. Когда я начал работать с профессионалами — использовал уже наработанный опыт. Меня никто не учил специальным и общепринятым методикам — если таковые вообще существуют.

Итак. Все что мы хотим от таблички я делю на несколько элементов:

  • Константы
  • Прогрессии
  • Баланс эффективности
  • Модели баланса и экономики

Будем разбираться по порядку.

Константы

Константы — значения, которые известны заранее или задаются исходя из логики.
Например: мы делаем простой мобильный баттлер, вроде Blood Brothers. И хотим, чтобы бои длились +-1 минуту. Это и будет нашей константой.

Все остальные значения так или иначе выводятся из констант.
Зная длительность боя мы можем представить параметры карт-юнитов, чтобы они бились ровно минуту.
Допустим, все атаки занимают 5 секунд, юниты атакуют по очереди, значит среднее здоровье должно быть = 60/(5*2) = в 6 раз больше среднего урона.
В реальности все немного сложнее, но пока остановимся на этом.

Здесь мы должны задуматься: а почему не наоборот?
Можно же константой взять «отношение здоровья к атаке», а из нее вывести «длительность боя».
Ответ прост: «отношение здоровья» нам неважно — само по себе оно почти не влияет на геймплей. Зато в мобильной игре важна продолжительность сессии, как следствие и длительность боя.
Взяв что-то за константу мы будем уверены, что это значение останется под контролем и не будет случайно меняться в расчетах.

Точно так же подбираются константы, относящиеся к прогрессу и экономике: опираясь на то, что важно и нельзя случайно поломать.
Например: за победу дается золото, и есть два режима игры — PvP и Кампания. Мы должны быть уверены, что игроку интересны оба режима, но в PvP игроки имеют 40-60% побед, а в Кампании доля побед близка к 100%. Чтобы PvP не игнорировали — награда за него должна быть +- в 1.5 раза выше.
В константы можно добавить либо процент побед для каждого режима, либо сразу множитель. Я рекомендую процент — так мы не забудем, откуда взялся множитель.

Не пытайтесь выписать все константы сразу — в процессе работы они, в любом случае, будут меняться и пополняться.
Пока достаточно понимания, о чем идет речь.

Прогрессия

Прогрессия — это просто последовательность чисел.
При расчете баланса такие последовательности составляют львиную долю работы: повышается уровень, растет сила отряда, награда за победу.
Все это — разные прогрессии.
Из них мы будем выводить все значения игры: параметры юнитов, экономические показатели, таблицы опыта и наград.

Определимся, с какой прогрессии начать работу. Что в игре главное?
В ситилбилдере были бы строения и их эффективность.
В RPG — параметры прокачки героя и шмоток.
В нашем баттлере — это карты-юниты. И первой прогрессией будет сила карт от первого до последнего уровня. Если в нашем баттлере — как в любом другом — карты деляться по «типам редкости», то прогрессия должна быть у каждого типа редкости.

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

Шаг третий: прикинем, насколько быстрым должен быть рост этих чисел. Как сильно 8-ой уровень отличается от 9-ого? А 79-ый от 80-ого?
Если наша прогрессия будет экспонентой — мы рискуем получить огромный разрыв между высокоуровневыми игроками (один 79-ый валит четырех 78-ых).
С другой стороны, если взять арифметическую прогрессию, игроки не прочувствуют профит и пафос нового контента.

Определившись, приступаем к выбору типа прогрессии.

Типы прогрессии

Вы наверняка слышали про разные прогрессии: арифметическая, геометрическая, ряд Фибоначчи…

На вопрос «какую выбрать?» есть простой и сложный ответ.

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

t12(на примере ряда Фибоначчи)

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

Я рекомендую делать так: каждое значение прогрессии вычисляется не из предыдущего числа, а из своего порядкового номера (в игре это, скорее всего, уровень — с ним удобно работать).
Этот уровень сперва возводится в степень X, потом умножается на Y. Подгоняя X и Y мы заручимся ровно теми крайними значениями и скоростью роста, которые нам нужны.
При необходимости формулу легко поменять.
Вот пример трех таких прогрессий с разной скоростью роста:

t5

Легко, гибко, понятно.
А попробовали бы проделать такое в мичети с Фибоначчи.

Итак, наша прогрессия готова.
Осталось несколько нюансов.

Базовая прогрессия

Некоторые числа завязаны друг на друга: например, размер награды может зависит от силы врагов.

Чтобы упрочнить связи и целостность баланса, я рекомендую использовать одну прогрессию для всех связанных расчетов.
Как это выглядит: сначала мы делаем одну базовую последовательность чисел.
Сталкиваясь с конкретной задачей — например, таблицей силы — применяем к каждому значению базовой прогрессии подходящий множитель; для другой задачи, например для прогрессии цен, другой множитель; и так далее.

Особой причины использовать базовую прогрессию нет, можно для каждой задачи делать свою.
Но базовая прогрессия снижает путаницу, если в игре много связей.
А если нужно поменять скорость роста — вместо множителя можно возводить значения производных прогрессий в степень.
Как это выглядит:

t3

Круглые значения

Последняя мелочь.
С некоторыми значениями игрок часто сталкивается и долго их наблюдает: например, опыт до уровня.
Хорошо, когда такие значения круглые и красивые: 2500 вместо 2468, и т.д.

Для этого значения можно заполнять вручную или округлять до кратного (MROUND):

t13

Столбец «Проверка» смотрит, чтобы текущее требование к опыту было больше предыдущего — а то с округлением всякое бывает.
Если заморочиться, то надо проверять, чтобы разница между текущим и предыдущим требованием к опыту была не меньше разницы предыдущих двух. То есть, чтобы росло не только значение, но и число, на которую оно повышается.
Это не обязательно, но логично.

____________

На этом мы заканчиваем с прогрессиями.
На выходе у нас должны быть как минимум прогрессии силы и таблица опыта.

В следующем посте: боевой баланс или баланс эффективности.
Будем выводить реальные параметры из нашей прогрессии.

Share on Facebook0Tweet about this on TwitterShare on VK