Background Layer 2

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

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

Зато мне понравилась статья Ника Филатова, где он рассказывает про применение рядя Фибоначчи в балансе. И все там хорошо: и подход, и слог, и картинки.
Одно плохо: я с ним не согласен. И чтобы объяснить это несогласие мне пришлось описать свой подход к балансу «от сохи».

Я старался быть максимально кратким, подчеркивать главное, несколько раз сокращал текст, но в результате все-равно получился небольшой цикл постов. Буду публиковать по одному в день.

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

 

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

Введение

Что такое баланс

Самое простое определение: любые числа, влияющие на геймплей.

Возьмем простейшую змейку: она перемещается со скорость 1 клетка в 0.5 секунд по квадратному полю 10х10 клеток. Весь баланс в этих двух числах — скорость змейки и размер поля.

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

Из этого получится хороший геймплей, и не надо никаких табличек и формул.

Вывод №1: без табличек можно обойтись. И не только со змейкой.

Но… Как же таблички?!

А теперь возьмем World of WarCraft: несколько режимов игры, десяток классов, десятки локаций, сотни абилок, тысячи врагов, море взаимодействия — драки, торговля, гильдии…
Подобрать все это «на глаз» физически невозможно.

Здесь то и пригодятся таблички и формулы.
Они автоматизируют подбор чисел и позволяют контролировать сложные системы.

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

Вывод №2: таблички упрощают вашу работу, но не делают ее лучше.

 Подготовка к работе

Точность автоматизации зависит от количества входных данных — чем больше мы знаем заранее, тем точнее и лучше получится наш баланс.

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

Если мы решим делать «змейку-rogue-like» с процедурной генерацией локаций, предметами и прочем — нам, все же, понадобятся расчеты. Однако, почти все исходные данные, по-прежнему, придется подбирать вручную. Добавили, например, тролля, который бегает и обрубает змейке хвост — сколько таких троллей мы можем сгенерировать на локацию, чтобы игра не стала слишком сложной?
Ответ можно узнать только в прототипе.

Вот еще несколько примеров:

  • В тактических боях игрок много считает в уме, поэтому для параметров юнитов лучше брать маленькие числа.
  • У жанра idle/incremental есть потребность в огромных числах, чтобы сохранить иллюзию постоянного быстрого роста.
  • В action-играх, где визуализируют нанесенный урон, не подойдут ни слишком мелкие числа — никого не впечатлит пафосно отлетающая единичка — ни слишком большими, т.к. получится информационный перегруз и будет сложно отличить 131348 от 12883.
  • В мобильных играх надо помнить даже о размере экрана — если какие-то числа необходимо показывать и нельзя сокращать, ими можно замусорить интерфейс.
  • В RPG параметры предметов и оружия должны сильно отличаться, чтобы игрок почувствовал разницу и свой рост.
  • Но с PvP эти различия не должны быть слишком большими, иначе драка между игроками чуть-чуть разных уровней станет совсем предсказуемой и неинтересной. Этот пример я разобрал во втором апдейте к ревью Clash Royal — балансерам обязательно к прочтению.
  • В развитии и экономике надо помнить про быстрый рост на старте и равномерную подачу контента по времени, чтобы он не успевал приедаться. Конечно, отчасти эта работа делается уже вместе с табличками, при создании кривой обучения. Но чем больше мы представляем заранее — тем меньше переделывать потом.

Вывод №3: нужно определить числа, которые мы уже знаем и найти все важные места, где числа пересекаются с механикой.

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

Расставляя числа задумайтесь, как измениться игра, если это число будет больше или меньше. А если все числа этого типа изменить на порядок?

В следующей части: начало работы, константы и прогрессии.

Share on Facebook0Tweet about this on TwitterShare on VK
  • u041eu0442u043bu0438u0447u043du043e, u0436u0434u0435u043c u043fu0440u043eu0434u043eu043bu0436u0435u043du0438u044f

    • u0412u0442u043eu0440u0443u044e u0447u0430u0441u0442u044c u043du0435u0434u0430u0432u043du043e u043fu0443u0431u043bu0438u043au043eu0432u0430u043b: http://warnworld.com/balance-2/nu0422u0440u0435u0442u044cu044f u0431u0443u0434u0435u0442 u0437u0430u0432u0442u0440u0430 :)

      • u043eu0442u043bu0438u0447u043du043e, u043du0435 u043du0430u0448u0435u043b u043bu0438u0447u043au0438, u043fu043eu043fu0440u0430u0432u044cu0442u0435 u043fu0430u0440u0443 u043eu043fu0435u0447u0430u0442u043eu043anu041eu043fu0440u0435u0434u0435u043bu0438u043cu0441u044f, u0441 u043au0430u043au043eu0439 u043fu0440u043eu0433u0440u0435u0441u0441u0438u0418nu0438u0441u043fu043eu043bu044cu0437u043eu0432u0430u0442u044c_u043eu0434u043du0443 nu0438u0441u043fu043eu043bu044cu0437u043eu0432u0430u0442u044c u0431u0430u0437u043eu0432u0443u042e u043fu0440u043eu0433u0440u0435u0441u0441u0438u044e

        • «u043cu0438u0447u0435u0442u044c» u044du0442u043e u043cu0435u043c :)nu0417u0430 u043eu0441u0442u0430u043bu044cu043du043eu0435 u0441u043fu0430u0441u0438u0431u043e!

  • jdie

    u041du0435 u043eu0436u0438u0434u0430u043b u043du0430u0439u0442u0438 u0447u0435u043bu043eu0432u0435u043au0430 u043fu043eu043du0438u043cu0430u044eu0449u0435u0433u043e u0445u043eu0442u044c u0447u0442u043e-u0442u043e u0432 u0431u0430u043bu0430u043du0441u0435 u0438 u0446u0438u0444u0440u0430u0445. u041au0430u043a u0433u043eu0432u043eu0440u0438u0442u0441u044f u0441u044du043du043au0441 u0433u0430u0434! u0423u0434u0430u0447u0438 u0432 u043du0430u0447u0438u043du0430u043du0438u0438 u0438 u0441u043fu0430u0441u0438u0431u043e!