Статьи

Методология балансировки игр

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

Предлагаем вашему вниманию конспект и видео с лекции основателя и гейм-продюсера ORC WORK, преподавателя дисциплины «Игровые механики», Сергея Гиммельрейха. В докладе Сергея речь пойдёт о методологии балансировки игр.

pic1

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

pic2

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

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

pic3

Игровой баланс — это, прежде всего, достижение верхней точки этого узкого коридора, фана. Если вы сделаете игру слишком простой, она будет скучной. Если вы сделаете игру слишком сложной, она тоже не будет приносить фана, а только лишь боль. Ваша задача — попасть в этот очень узкий диапазон. Это и есть тот самый баланс. Баланс состоит в том числе и из математики. Причём математика — это не самая большая часть баланса. Это, скорее, рутинная часть, которую придётся делать.
Самая большая часть, которую придётся делать — это плейтесты. Вам придётся играть в игру бесконечно долго.

Почему игрового баланса не существует? Потому что его невозможно просчитать. Таблица в экселе — это всего лишь частный случай, какие-то вещи, которые можно ухватить и посчитать, но не все это можно сделать.

Существует разный контекст, в котором стоит рассматривать игровой баланс.

Когда мы говорим про однопользовательские игры (там тоже есть баланс), мы затрагиваем прежде всего сложность — каждый уровень в игре должен быть сложнее предыдущего, тогда игрок будет ощущать фан, рост своего скилла, изменения и вызовы со стороны игры. Баланс в однопользовательских играх определяет сложность игры, сложность взаимоотношений объектов между собой во времени.

В многопользовательских играх:

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

В играх, где есть несколько стратегий путей достижения, мы используем термин баланс, чтобы объяснить, какая стратегия лучше или хуже, чем другая.

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

pic4

Существует 2 основных игровых системы: симметричные (шахматы, футбол, Counter-Strike) — игры, где обе стороны начинают с одинаковыми условиями, и асимметричные (камень, ножницы, бумага, StarCraft).

pic5

Кажется, что симметричные игры балансировать очень легко: делаешь одну сторону и такую же вторую. Но на самом деле там есть тоже свои сложности. В шахматах существует стратегический вес каждой фигуры. Это тоже элемент баланса, а балансировать элементы даже одной стороны между собой непросто. В симметричной игре очень важно иметь разнообразие, она не должна быть гомогенной. Худший баланс — это тот, в котором разница между объектами взаимодействия минимальна. Каким бы объектом ты ни играл, ты получаешь один и тот же опыт. Это гомогенный баланс, который приводит к скуке. Без коня шахматы были бы не такие фановые. Игровое поле в шахматах состоит из 64 клеток, это результат эмпирического баланса. Оказалось, что 8 на 8 — оптимальный размер для скорости развития партия и тактической вариативности.

pic6

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

Асимметрия появляется из-за ощутимой разницы между начальными условиями игроков.

Street Fighter — совершенно асинхронная игра. Матрица на картинке показывает взаимоотношения между персонажами. Это матчи между персонажами этой игры, в которые играли эксперты. Когда у вас есть много персонажей, которые трудно сравнимы друг с другом из-за разных абилок, единственный адекватный способ баланса — эмпирический или статистический. Статистический способ можно использовать, когда игра уже вышла, а до этого единственное, что вы можете сделать — это записать результаты плейтестов в виде такой таблицы и сортировать так, чтобы это было понятно: нижний персонаж — самый слабый, а верхний — самый сильный.

Парадигмы баланса

Когда вы начинаете баланс, вам необходимо придумать, откуда брать цифры. Первое, что вы начинаете делать, это создавать парадигмы, на основе которых ваш баланс будет строиться. Существует 2 метода.

Первый — метод от образа

Художник набрасывает скетч, а вы, исходя из этого, сами придумываете, какие у них должны быть характеристики и получаете примерно следующее:

pic7

Это то, откуда можно брать начальные цифры. Они могут быть совершенно рандомными, главное, чтобы вы понимали отношения этих цифр: этот тяжёлый, сильный, толстый, а этот худенький и слабый, но очень быстрый и так далее.

pic8

Второй метод — от характеристик

Когда вам задают какие-то начальные характеристики. Бывают игры, в которых ты начинаешь от цифр, такое вполне возможно. Когда, например, речь идёт про sci-fi, а не про реальную жизнь. Когда вы делаете sci-fi игру, вам легче начинать от цифр, понимая, что должны быть какие-то быстрые юниты, должен быть какой-то один большой, который несёт их внутри и так далее. Часто вы не знаете образа, но вы можете его построить на основе характеристик.

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

pic9

pic10

Виды баланса

На самом деле, баланс имеет огромное количество разнообразных векторов. Начнём с главного вектора, который чаще всего мучает гейм-дизайнера:

Вид баланса — сила

Это отношения объектов, которые взаимодействуют с позиции силы друг с другом в игре (юниты в стратегии, персонажи с мобами в RPG, машинки, которые ездят по дорогам и обгоняют друг друга). Существует три метода балансировки: транзитивный, интранзитивный и некомпаративный.

pic11

Транзитивный метод: прямое сравнение или соотношение характеристик объектов. У нас есть 2 человека, один из них толстый и медленный, а другой — тонкий и быстрый. Эти параметры мы можем сравнить друг с другом напрямую. То есть, составить таблицу, где идёт отношение всех этих одинаковых параметров для разных объектов. Это самый простой вид баланса: вы составляете таблицу ваших объектов, у всех единые характеристики, и каждый из них можно сравнить друг с другом и сбалансировать.

Интранзитивный метод. Как его балансировать? Либо вы строите матрицу, когда у вас объекты друг с другом сталкиваются, и вы раздаёте им очки. можно взять пример из карточной игры: если у вас есть много объектов с разными характеристиками, единственный способ их сравнить — проводить матчи. У меня была карточная игра, в которой нужно было сравнить 40 карт друг с другом. У них были разные абилки. Я написал скрипт, который позволяет считать энное количество боёв и сделал так, чтобы в таблицу вводились наиболее имбовые карты. Соответственно, я открывал эту карту, пытался понять, почему она побеждает остальные, пытался её как-то занерфить, запускал скрипт заново и пытался сделать так, чтобы выбросов было как можно меньше.

Некомпаративный метод: способ балансировки силы тогда, когда вы ничего не можете сделать. Представьте себе, что у вас есть игра, в которой действительно очень много объектов, а вы просто плохой гейм-дизайнер и не умеете делать баланс. Что можно сделать в этой ситуации? Можно просто дать юнитам несравнимые абилки. Например, заморозка и телепорт. Как их сравнить между собой? Никак. Это, конечно, будет иллюзия для игрока, но вы таким образом прикроете свою бездарность как гейм-дизайнер.

pic12

Некоторые приёмы балансировки:

Балансировка от среднего: в транзитивных моделях, когда вам нужно сбалансировать либо карты, либо расы в RPG, нужно создать среднего человека. Часто в RPG человек используется как усреднённое существо. Вы пишете для него какие-то усреднённые характеристики в духе: 100, 100, 100, 100. Это ваш средний юнит, относительно которого вы балансируете все остальные. Чем больше вы будете привязываться к реальности, тем легче игроку будет это понять. Дальше вы считаете power. Power человека — это сумма всех его характеристик. Затем считаете power любого другого существа и если вы разделили и получили единицу, все хорошо.

Группы по времени: если у вас огромное количество объектов, ну, к примеру, 1000 карт. Как быть? Сбалансировать сразу 1000 карт очень тяжело. Вы делите 1000 карт по сотням и распределяете их по времени, с самого начала обозначая, что у вас первая сотня — самые слабые карты, последняя — самые сильные и балансируете уже то, что находится внутри. И заставляете игрока сменять тиры за счёт усложнения. У вас появится кривая сложности и следующие карты — второго тира — получатся сильнее, чем предыдущие. Таким образом вы избавите себя от необходимости балансировать 1000 карт. Вы просто всегда работаете с меньшим количеством.

Все приводить к одному параметру: есть две характеристики для боевых игр, к которым все всегда придёте, будучи гейм-дизайнером (DPS и HPS). HPS — это параметр «живучести» юнита, карты, объекта. DPS — это параметр атаки, его влияния на другие объекты. По сути, повреждения в единицу времени. К этим параметрам можно свести все, в том числе и абилки. К примеру, баф — это очевидный элемент, который увеличивает DPS юнита. Естественно, ты не можешь знать, когда твой объект активирует этот баф. Поэтому ты просто говоришь, что он активируется ровно через каждую его длительность. Например, баф действует 10 секунд, бой длится минуту, и каждые 10 секунд считаешь в своём DPS до конца. Считаем, что игрок постоянно жмёт, когда у него cool down заканчивается. Например, ускорение — это то же самое: можно все превратить в DPS, потому что ускорение увеличивает инициативу юнита и он бьёт чаще.

pic13

На картинке написано, как делать подсчёт суммарной мощности. Есть два простых способа. Первый — сумма характеристик, которые вы сравниваете между собой и тогда определяете, сбалансированы эти объекты или нет. Второй — это когда вы приводите DPS к HPS и, соответственно, ваш power будет соответствовать DPS, умноженному на HPS. Таким образом вы можете сравнивать все объекты взаимодействия.
Вот пример, из которого можно все взять в практику:

pic14

Я иногда использую такие графики, чтобы оценивать, насколько разнятся юниты между собой и какой из них в какую сторону идёт. Площадь этой фигуры обозначает power этого существа. Естественно, по каждому из векторов, scale может быть разный. Потому что скорость может измеряться в одном диапазоне, сила — в другом. Но главное, это очень наглядно показывает, где у вас танк, а где, например, ассасин, но это частный случай. Я использую такой способ, чтобы чётко разделять классы, какие-то карты или персонажей.

pic15

Виды баланса — время

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

Первый контекст — это контекст возникновения игровых событий. В квестах, кстати, это очень важный момент. Если взять адвенчуры, в которых игрок имеет прямое управление, например, это такая смесь аркады и квеста, то время возникновения событий играет там довольно важную роль. И балансировка времени в данном случае подразумевает, что нужно чётко делить, когда, в какое время игроку подать событие, чтобы ему не было скучно или наоборот, как сделать так, чтобы игрок не перенасытился тем, что ему подают. Вот, к примеру, хоррор — игры очень хорошо умеют с этим работать, тот же Resident Evil 7. Там все рассчитано ровно так, что через определённое время твоего движения появляется определённое событие для того, чтобы ты испугался. Сначала тебя к этому подготовили музыкой и созданием напряжения, какое-то время ничего не происходит, ты расслабляешься, и вдруг — БАХ! И тебе страшно.

Время развития игровых сущностей — это очень просто. Фермы, билдеры, игры, в которых есть прокачка персонажей — в них тоже есть время, которое нужно уметь балансировать. От чего оно зависит? Балансировка конкретно времени развития игровых сущностей заключается в следующем: вы определяете длину игровой сессии, частоту возникновения открытий для игрока, опираясь на количество контента, которое у вас есть. Я сейчас говорю про мобильные игры, потому что там это работает очень хорошо. Эта методика совершенно чётко читается. Например, вам известно, что средняя длительность игровой сессии 15 минут, вы предполагаете, что ваши игроки будут играть каждый день по одной сессии. Соответственно, для того, чтобы игроку не стало скучно, ему нужно в каждой сессии открывать что-то новое. Это ваша основа для таймера. К примеру, игрок запускает в начале первой сессии апгрейд своего юнита, в конце сессии он должен получить некий level-up. Помимо того, что у вас есть краткосрочные задачи, вы разделяете ваше время на 3 длины: короткая, которую вы получаете за сессию, средняя — это когда запускается на этой сессии, а происходит в следующей, и долгосрочная, чтобы вернуть игрока, допустим, через 3 сессии. Это то, на что нужно опираться, когда вы продумываете, каким образом вам построить таймер развития игровых сущностей. Это могут быть домики, выращивание морковки, это могут быть юниты, которые апгрейдятся. Для чего это нужно? Естественно, это влияет на интерес к игре, потому что игрок получает открытия со временем. Именно тогда, когда нужно. Второе: игрок должен ожидать: он открыл таймер, который сработает в следующей сессии, и у него в голове откладывается, что в следующую сессию что-то произойдёт. Например, построится домик. Это его возвращает. И эти долгосрочные задачи позволяют вернуть его ещё через несколько сессий. Во free-to-play играх это очень важно.

pic16

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

Хлебные крошки. Когда вы делаете какой-то очень длинный таймер, делайте промежуточные награды. К примеру, если у вас герой развивается 10 часов, игроку будет очень скучно. Давайте ему через каждый час, к примеру, короткие rang up’ы, которые покажут, что он двигается к прогрессу во времени. То есть, нельзя делать слишком длинные таймеры, которые игрока фрустрируют, потому что он не видит своего вклада в это. Особенно когда речь идёт про level up’ы.

pic17

Вид баланса — пространство

Левел-дизайн — это часть игрового дизайна и гейм-дизайнеры, хоть и не делают уровни сами, но должны знать, что пространство — это неотъемлемая часть баланса игры. В частности, есть несколько приёмов, как балансировать пространство. Мультиплеерные карты чаще всего делают зеркальными. Потому что у всех команд, которые участвуют в игре получаются равные условия. Как мы знаем, пространство коррелируют между собой. Симметричные карты хороши тем, что там есть достаточно времени и достаточный объем пространства, то есть, за счёт зеркалирования, все получают равные условия. Карты маршрутов: когда вы создаёте любой левел-дизайн, первое, что вы начинаете рисовать — это карту перемещения игрока. Независимо от того, сетевая это карта или это однопользовательская игра. По сути, вы строите граф, в котором обозначаете точки пересечения игроков. В мультиплеерных картах должно быть 3 ответвления от каждого перекрёстка, чтобы игроки могли пересекаться. Пространство может расширяться и сужаться, в зависимости от того, чего вы хотите добиться.

pic18

Что такое схема навигации? На любой карте должны быть ориентиры, игрок всегда должен знать, где он находится. На каждой карте должны быть определённые точки, которые позволят игроку сориентироваться и объяснить другим игрокам, куда бежать. Это тоже элемент баланса, который нужно иметь в виду. И, соответственно, конфигурация боевых областей — у вас не должен быть слишком сложный лабиринт, карта должна хорошо читаться. Если игра в жанре sci-fi, на неё тоже можно экстраполировать схему навигации. Космос — это тоже путь, в котором можно передвигаться по звёздам.

pic19

pic20

Вид баланса — экономика

В балансе экономики важно:
Определить ценность всех объектов, которые есть в игре. В частности, оружия, машины, карты и так далее.
Построение диаграммы отношений ресурсов, ресурсный цикл. Очень важно правильно просчитать, на что будут тратиться ресурсы и как они будут получаться и построить цикл, по которому чётко видно из каких активностей что игрок добывает и на что он может это потратить. Очень важно, чтобы в балансовом цикле не было ситуаций, когда ресурс приобретается, но очень мало куда тратится. Ресурсный цикл может меняться во времени: сначала один ресурс был востребован и на него было больше затрат, в эндгейме он может затрачиваться меньше, а какой-то другой — больше.
Разделение ресурсных циклов по игровым активностям. Снова пример — Heroes Charge, там каждая активность имеет свои ресурс и валюту. Это удобно тем, что вы таким образом сокращаете время балансировки. То есть, если у вас очень большая и сложная экономика, делите её на микроэкономики. Если вы делите её на ресурсы, получается маленький цикл, который легче балансировать.

pic21

Построение шкалы ассортимента для разных групп пользователей. Это очень важно для free-to-play игры. Если у вас игра, в которой есть только 2 in-app’а, это плохой free-to-play. По-хорошему, чем шире у вас ассортимент, тем больше возможностей поймать в эти сети покупателя. То есть, старайтесь, чтобы у вас в игре было, что покупать.
Привязка цен к номиналам банкнот и типовым затратам. Это один из способов таких методов, как придумать, сколько стоит ваш in-app. Очень часто задают вопрос, как придумать in-app и сколько он должен стоить. Самые простые способы указаны на картинке. Допустим, для нас 40 рублей в маршрутке — это ощущаемая затрата, относительно которой можно взять минимальный in-app в России. То есть, это в принципе то, на что человек может потратиться легко. Для американцев 1$ — это комфортный in-app. Есть некоторые типовые затраты, например, сколько тратит человек в магазине. К примеру, 1000 рублей. Это такая середина для России.
Очень хорошо, когда in-app привязан к номиналу банкнот. Люди постоянно видят их у себя в кошельке и легко их ассоциируют. Это очень хороший и простой приём, с помощью которого можно придумать ценность своему in-app’у.
Оценка спроса на товар, эластичность спроса. Вы можете прогнозировать её в начале, но на самом деле, чаще всего та экономика, которую вы спрогнозировали, к концу игры будет уже не такой. Поэтому вы сначала ставите стоимость товара, относительно ценности, которую вы определяете в начале, а после этого, когда получаете статистику, вы начинаете её оценивать с помощью эластичности спроса. Рассчитывать, например, точечный спрос, и по эластичности определять его точную цену. Вы никогда не сможете изначально это придумать.

pic22

Вид баланса — сложность

pic23

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

pic24

Считайте FU-фактор. Отношение попыток к выигрышу к попыткам близкого достижения цели, на уровне, например. Чем больше это значение, тем хуже настроен уровень. В match-3 этот параметр является одним из ключевых для того, чтобы измерить, насколько игрокам заходит уровень. Когда игрок приближается к цели, например, ему остаётся один ход, чтобы закончить, это означает, что у него остаётся чувство, что ещё немного и все будет классно. Идеальный FU-фактор приближается к этой единице, к этому последнему ходу. В Gardenscapes очень хорошо сделано это ощущение, когда ты приближаешься к границе, остаётся один ход, и ты готов задонатить в этот момент.

pic25


Если хотите лично посетить новые открытые лекции по игровой индустрии, то в марте можно сходить на несколько бесплатных открытых мероприятий в ВШБИ, вход на которые осуществляется просто по регистрации:

15 марта: Управление командой в игровой индустрии
22 марта: Игровая графика: базовые принципы и инструменты
1 апреля: Открытая лекция Сергея Зыкова про первоапрельские акции в играх

9 комментариев

  • Zo0m3R

    Так и не понял почему урон 100 лучше, чем урон 102. Из-за красоты круглой цифры? А то, что 102 больше, должно большему количеству понравитсья, в особенности тем, кто любит находить везде выгоду.

  • Shermann

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

  • Slork

    С фу-фактором – работает только на новичках, или при учёте ивентов типа флинта.
    Обычно если игрок чувствует, что уровень почти проходится, он не стремится заплатить, потому что он ощущает уровень достаточно простым, чтобы платить. Ему кажется что вот ещё разочек – и ему повезёт, и он сам пройдёт уровень.
    Едва-опытный игрок в принципе не стремится расстаться с ресурсами/деньгами.
    А вот если уровень достаточно недружелюбный с точки зрения фу, и на 4ый – 5ый раз игрок достигает 90% цели, а не привычные для этого уровня 60%, то у него появляется ощущение, что вот в этот раз ему почти повезло, и если он сейчас уровень не “добьёт” бустами – то ещё 3-4 партии будет париться с этим уровнем.
    А вот с новичками, думаю, только фу-шными уровнями и надо оперировать. Пусть растёт и крепнет в условиях позитива и соблазнов.

  • Тимофей

    Все приводить к одному параметру

    Пусть Сила дает +1 к урону, пусть Выносливость дает +6 к здоровью. Пусть оба наносят удары с одинаковой скоростью. Пусть оба изначально имеют 3 Силы и 3 Выносливости, а также дополнительно 3 свободные характеристики, которые по своему усмотрению могут распределить в силу или выносливость.

    power = сила * выносливость * 6

    Первый вариант:
    Игрок1 распределил так: сила 6, выносливость 3
    Игрок2 распределил так: сила 3, выносливость 6

    power игрока1 = 6 * 3 * 6 = 108
    power игрока2 = 3 * 6 * 6 = 108

    Второй вариант:
    Игрок1 распределил так: сила 6, выносливость 3
    Игрок2 распределил так: сила 4, выносливость 5

    power игрока1 = 6 * 3 * 6 = 108
    power игрока2 = 4 * 5 * 6 = 120

    Баланс сломался. Несмотря на то что у обоих игроков суммарно по 9 характеристик, во втором варианте игрок2 имеет power выше оппонента только лишь из-за того что по другому распределил свободные характеристики. Так вот и как решать данную проблему?

    • Егор Павлов

      Дело в том, что эти характеристики созависимы. Заметьте, игроку с 1 силой и 100 выносливостью совершенно невыгодно прокачивать выносливость. Если у юнита очень много выносливости, то ему гораздо выгоднее прокачивать силу, нежели выносливость. И наоборот.
      Во втором примере первый игрок увеличил силу на 100% (тем самым увеличив power на 100%), а второй игрок увеличил силу на 33% и выносливость на 66%, получили суммарное увеличение power: 1,33 * 1,66 = 2,2 (120%). Если в Вашем случае это создаёт проблему, то решить её можно так: каждое следующее очко характеристик вносит больший вклад в стат. Допустим, у игрока сила прокачана на 3. Вливание одного стата увеличит силу на 1. Вливание ещё одного стата уже увеличит силу на 1,1, и так далее. Больше статов — больше вклада очки вносят в эти статы.

Добавить комментарий