Курс Молодого Геймдизайнера 2: баланс прогрессии и динамики без математики

Предыдущая статья про баланс персонажей и снаряжения собрала много отзывов и я решил не тянуть с продолжением.

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

Бонусом в конце — несколько ссылок по теме.

Баланс, экономика и прогрессия

Продолжим тему RPG и мечей (все еще рекомендую начать с прошлой статьи, если вы не знаете, о чем я). Например, в Diablo игрок выбивает из бочек золото, чтобы потом купить на него новый, более крутой меч.

Сколько должен стоить обычный меч с единицей урона? Не знаю, придумайте сами, это не так важно. Я возьму 10 золота за меч с 1 урона. Главный вопрос — сколько тогда будет стоить меч с 2 урона? Наверное, 20 золота? А с 5 урона? Очевидно, 50.

И да и нет. Сначала вы могли задаваться вопросом: а какие правила нашей игры, как она работает? В зависимости от механик, меч с 5 урона может стоить и 50 и 150 золота.

Представим, что у всех врагов 5 единиц жизней. Для игрока это значит, что с мечом, у которого 1 урона, ему понадобится 5 атак, чтобы убить врага. Если меч с 2 урона — 3 атаки, с 3 или 4 урона — 2 атаки. И одна атака мечом с 5 урона.

И это очень важно — чем меньше время жизни врага, тем меньше урона он успеет нанести.

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

В результате получим некую кривую стоимости:

  • 1 урона — 10 золота;
  • 2 урона — 30 золота;
  • 3 или 4 урона — 60 золота;
  • 5 урона — 100 золота.

В этот момент надо снова подумать о механике. Как быстро враги наносят игроку урон?

Вот игрок купил меч с 5 урона, и каждый враг умирает с одной атаки. Допустим, у нас RPG в реальном времени и очень мало врагов на экране — они подходят к игроку по одному, и умирают до того, как успеют нанести урон. В такой игре меч с 5 урона сделает игрока фактически бессмертным. Это будет не весело, а такой меч слишком сильным, чтобы вообще существовать. Но что если в каждый момент времени на экране будет 100 врагов, и даже если игрок убивает каждого с одного удара, он физически не сможет уворачиваться от остальных? Тогда и меч будет хорошим, и он не испортит удовольствие от игры (если оно изначально было).

Может быть мы хотим, чтобы наша RPG работала по-другому. Чтобы у врагов росло количество HP с уровнями. Тогда, повышая урон меча, игрок не будет становиться сильнее, чем враги, он будет лишь оставаться на их уровне. И тогда можно оставить стоимость в 10 золота за каждую единицу урона, как мы изначально и собирались.

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

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

Пример из практики. В шутерах у оружия обычно есть боезапас — количество выстрелов, которое можно сделать до необходимости перезарядиться. В большинстве классических шутеров, вроде Call of Duty, большой боезапас — это преимущество. Чем больше у тебя выстрелов, тем меньше требования к точности игрока, тем больше шансов убить цель, тем больше врагов можно убить за магазин. В War Robots и других шутерах, где одного магазина почти никогда не достаточно, чтобы убить цель, долгое время разрядки магазина перестает быть преимуществом. Потому что, пока ты стреляешь в противника, он стреляет в ответ и ты теряешь HP. Преимущество имеют пушки с одним выстрелом в магазине — из них можно мгновенно нанести урон и спрятаться на время перезарядки от ответного огня.

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

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

Цена возможности

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

Многие знакомы с коллекционными карточными играми (ККИ) — Hearthstone или Magic: The Gathering. В них есть существа с некой силой, которая считается как:

(урон+HP) * 100%

Это немного отличается от того, что я рассказывал в первой статье из-за особенностей механики ККИ (просто поверьте, что это так). Внутри матча существа «покупаются» за ману и, потратив какое-то время, мы можем рассчитать, как назначать цену:

  • 1 мана — 3 единицы силы, разделенные между уроном и HP;
  • 2 маны — 5 единиц;
  • 3 маны — 8 единиц;
  • и так далее.

Достаточно ли этого, чтобы назначит адекватную цену?

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

Допустим, у вас 10 маны. И за 10 маны вы призвали огромное существо — Колосса — у которого 15 урона и 15 жизней. Он убьет любого врага с одного удара, а один на один его убить никто не сможет. Потратив всю свою ману за ход, вы лишаетесь возможности призвать кого-либо еще или использовать заклинание. Также у вас будет всего одно существо, которое уязвимо к заклинаниям мгновенной смерти. В этом случае одна единственная карта с заклинанием (которая, вероятно, дешевле, чем Колосс) в руке соперника может лишь вас всей боевой силы.

Кроме того, если враг атакует несколькими существами, то ваш Колосс сможет блокировать только одного из них (если это MtG) или вообще никого (Hearthstone).


Блокирование урона в MtG

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

С другой стороны, если у вас какая-то авторская механика, одно существо сможет блокировать целую армию противника, а в игре нет карт моментальной смерти или контрзаклинаний — тогда цена возможности будет не такой высокой как в MtG или Hearthstone. Все зависит от фундаментальных правил игры и набора конкретных возможностей.

Цену возможностей можно встретить повсюду. Например, в шутерах снайперские прицелы дают хорошее увеличение, но уменьшают обзор. Это и есть упущенная возможность, которой вы расплачиваетесь за силу прицела.

И снова повторюсь — ключ к правильному балансу находится не в математике, а в правилах игры.

Баланс динамики игры

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

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

Когда мы говорили о цене мечей, то установили взаимосвязь одних свойств с другими. Например, 1 урон — это 10 золота. Урон и золото — это свойства. Соотношение 1 урона к 10 золота — правило. Чем больше свойство «урон», тем больше свойство «золото».

Также мы видели, что свойство «урон» может влиять не только на свойство «золото», но и на соотношение (на само правило).

Вспомним меч, у которого стоимость каждого следующего урона росла. Меч с 1 урона стоил 10, меч с 2 урона уже 30 (10 + 20 золота за дополнительную единицу), меч с 3 урона — 60 золота (30 + 30 золота за доп. единицу) и так далее.

Когда какое-либо свойство в игре влияет на правило, это называется цепью обратной связи. Цепи обратной связи описывают динамику игры. Их есть два вида:

  1. Цепи позитивной обратной связи.
  2. Цепи негативной обратной связи.

Позитивная обратная связь нужна чтобы «разгонять» игру. Негативная — чтобы «замедлять», стабилизировать.

Пример негативной обратной связи легко найти в МОВА-играх. Например, у вас очень удачный матч и вы убиваете одного и того же противника раз за разом. И с каждой новой смертью он дает вам все меньше и меньше золота. Уменьшение награды — это цепь негативной обратной связи. Она не дает вам заработать слишком много золота на слабом враге и оторваться от него слишком далеко.

Пример цепи положительной обратной связи возьмем из Starcraft. Там вы добываете минералы, за которые можете построить больше рабочих, чтобы добывать больше минералов, чтобы построить больше рабочих, чтобы… и так далее.

В этом примере количество минералов не влияет на правило напрямую, но влияет на свойство, которое в свою очередь усиляет правило. Больше минералов в секунду = больше рабочих, производящихся в секунду.

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

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

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

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

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

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

Вы можете выбирать, между какими элементами строить эти связи, изменять их силу или характер. В примере с футболом можно менять количество игроков не за каждое очко, а за каждые 2 или 5 голов. Или привязать это не к счету, а ко времени, которое команда лидирует. Или менять не количество игроков на поле, а правила начисления очков — два очка за гол отстающей команде. У каждого из этих изменений будут свои последствия. Например, бонус за очки преимущества сделает очень напряженной игру за каждое четное очко, чего не добиться, строя правило вокруг одного или пяти очков. Это позволит вам тонко настраивать динамику и косвенно режиссировать ход всей игры, помогать ей развиваться так, как вы задумали. Даже если это мультиплеерная игра, на которую у вас (как у дизайнера) нет прямого влияния.

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

Заключение и ссылки

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

Рассматривая примеры, мы не думали, как посчитать, чтобы юнит А был по силе равен юниту Б. Мы разобрали игру на компоненты, залезли в дизайн миссий, прогрессию, экономику, динамику, правила игры и ощущения. И это универсальная экспертиза, не привязанная к конкретным жанрам или механикам. Она не зависит от реалий рынка и его трендов.

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

  • Лекции Яна Шрайбера по балансу. На русском и английском. В них детальнее обсуждаются темы, которые я затронул. Я даже позволил себе стащить несколько примеров. Также там есть вполне конкретные инструкции, как считать вещи.
  • Game Mechanics: Advanced game design — целая книга, посвященная цепям обратной связи. Материал не для новичков, но аналогов пока нет.
  • Блог Манжеты ГД.