Справедливость в игре очень важна для игроков. Конечно, люди не всегда могут оценивать точно, насколько справедлива игра (тот же честный рандом часто ощущается как несправедливый), но и намеренно пренебрегать равновесием в игре не стоит. Соблюдение равновесия разных сторон в игре и называется игровым балансом. Или дисбалансом, если он рассчитан плохо.
Для начала возьмём ужасно упрощённый игровой пример, нечто похожее можно встретить в книге Джесси Шелла.
Допустим, мы разрабатываем соревновательный шутер, и нам нужно придумать 3 персонажей с пушками, за которых могут играть игроки. Персонажи должны быть равноценны. Есть 3 параметра, которые можно менять: скорость персонажа, сила атаки и частота стрельбы. Число 3 идеально для восприятия, так что продолжим его использовать и дальше. Вместо конкретных чисел возьмём 3 варианта значений параметров: низкий, средний и высокий. Получается, у нас есть по 3 варианта для каждого из 3 параметров, из которых мы можем собирать нашего персонажа. Всего 27 вариантов.
Очевидно, что если сделать все статы низкими, то этот персонаж проиграет всем другим, точно так же как и если сделать все статы высокими, то получится убер персонаж. Два варианта отброшены, но осталось ещё 25. Что делать с ними?
Надо считать баланс или равновесие. Для этого нужно приравнять какие-то параметры друг к другу. Возьмём некий абстрактный параметр силы персонажей (С), который показывает, насколько один персонаж будет сильнее другого, если за него будут играть люди с одинаковым уровнем скиллов. Сила некоторым образом зависит от таких параметров, как: скорость (СКР), сила атаки (АТК) и частота стрельбы (ЧС). В теории эта зависимость может быть любой, но проще всего работать с линейными зависимостями. Таким образом у нас получается формула силы: С = x * СКР + y * АТК + z * ЧС, где x, y и z — это какие-то коэффициенты зависимости от конкретных элементов. При этом силы 3 героев, которых мы хотим создать, должны быть равны для достижения справедливости.
Дальше, чтобы понять числовое значение этих коэффициентов, надо провести тесты: создать трёх персонажей с разным набором скорости, атаки и частоты стрельбы и провести бои. В качестве числовых аналогов вместо низкий, средний и высокий можно брать числа 1, 2, 3. Если один персонаж проигрывает в 2 раза чаще остальных, то получается, что его сила в 2 раза меньше. Это знание можно подставить в формулы и вычислить конкретные коэффициенты. После чего можно варьировать параметры персонажей, пока их сила не станет эквивалентна друг другу.
С простым вариантом разобрались, но что делать с реальными кейсами из игры, в которых параметров может быть сотни?
Допустим, так неудачно сложилась судьба, что тебя прямо на первой работе посадили делать RPG. В игре есть локация, по которой надо распределить врагов разного уровня и рассчитать, какое количество опыта они должны давать, чтобы игроку было прикольно играть. С чего тут начать и что с чем сравнивать для хорошего баланса?
Логично, что один из параметров — это опыт получаемый на локации, обозначим его О. О состоит из суммы A1 + A2 +A3 + …. AN, где A — это количество опыта, получаемого с врага, а N — количество врагов. Потом это О по какой-то формуле переводится в уровни, а ещё можно вспомнить, что в большинстве игр мобы возрождаются, так что их убивают не по одному разу, а с некоторым коэффициентом…
Седые волосы обеспечены от представления долгих лет, в течение которых ты будешь заниматься перебором всех возможных вариантов. Конечно, никто так не поступает. Первым делом нужно заняться упрощением формулы до того состояния, когда варианты относительно легко можно перебрать. Это можно делать разными способами. Один из вариантов — это обобщить врагов, разделив их всего на 3 класса: лёгкие, элитные и боссы. Формула упростится до О = Aл * Nл + Aэ * Nэ + Аб * Nб. Эту формулу можно ещё упростить, сделав зависимость количества врагов от их общего количества. Предполагаем, что 70% обычных мобов, 25% элитных и 5% боссов — это хорошее распределение, тогда формула будет О = 0,7 * N* Aл + 0,25 * N * Aэ. Ещё можно сделать зависимость опыта врагов друг от друга: элитный враг даёт в 3 раза больше, чем обычный, а босс — в 10 раз. Таким образом остаётся всего 3 неизвестных коэффициента:количество опыта, которое мы хотим дать игроку, общее количество врагов и опыт за 1 простого врага.
Дальше можно вспомнить, что игра всё-таки не делается в вакууме и некоторые ограничения уже присутствуют. Например, часто в играх есть ограничения на количество уровней в виде 100, а также логично, что сделать 1000 уникальных боссов вряд ли возможно и их количество или хотя бы порядок известен. Ограничения уменьшают количество вариантов, и считать, и проверять свои гипотезы становится проще.
Подобным образом зависимости одних параметров от других в игре можно и упрощать до бесконечности и наоборот потом умножать, добавляя новые зависимости, исходя из того, насколько важна точность. Главное — не испугаться большого количества параметров изначально и привести формулу к тому количеству неизвестных, которые легко проверить практикой.
В математике существует целый раздел работы с уравнениями, в которых вместо иксов и надо вычислять коэффициенты в уравнениях под названием “матмодели”. С помощью разных теорем можно вычислить коэффициенты с высокой точностью. Но обычно в играх не нужна абсолютная точность коэффициентов, хотя для общего развития можно почитать книги или пройти курс.