Большинство игровых продуктов в том или ином виде сталкиваются с боёвкой. Где-то это эпический кошмар уровня Dark Souls, где-то полуавтоматический бой между группами чибиков в мобильном батлере. В этой статье я покажу один из подходов, используемый геймдизайнерами при проектировании боевой системы для конкретной игры.

Скриншот из игры автора
Скриншот из игры автора

Определить вводные

Для начала необходимо понять, какого типа будет ваша боевая система: линейная боёвка файтингов типа Mortal Combat, сражение стеков юнитов, как в Героях Меча и Магии, или же эпические баталии Warhammer: Total War - вариантов много.

И вообще, что такое боевая система? Какие требования мы к ней предъявляем?

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

Давайте назовём это число мощью (или боевой мощью).

Предположим, что у нас сражается два персонажа, как в MMORPG. С большей вероятностью победит тот, чья мощь больше. Почему не гарантированно, а с большей вероятностью? Дело в том, что на исход боя влияет три составляющие:

  1. Характеристики персонажа

  2. Навыки игрока

  3. Случайность

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

Мощь - единая величина, характеризующая силу сражающегося субъекта.

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

Боевая мощь

Обозначим за мощь персонажа на P. Тогда условие большей вероятности победы игрока 1 над игроком 2 будет выглядеть так:

Формула 1
Формула 1

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

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

Формула 2
Формула 2

Простейшая модель

Рассмотрим случай сражения двух персонажей, игроки которых имеют равные навыки.

Тогда игрок 1 имеет H1, D1 > 0

Тогда игрок 2 имеет H2, D2 > 0

Побеждает тот, кто своим уроном первым доведёт запас здоровья противника до нуля. То есть:

Формула 3
Формула 3

Т.к. все величины тут положительные, неравенство можно переписать как:

Формула 4
Формула 4

И тут мы вспоминаем формулу 1. Получается, что в самом простом случае мощь персонажа - это произведение его эффективного запаса здоровья на эффективный урон.

Формула 5
Формула 5

Преобразование характеристик

Пора разобраться с эффективными характеристиками и прийти к чему-то более привычному.

Наша задача - определить список характеристик игрока и свести их все к базовым:

  • Эффективному H

  • Эффективному D

Для этого удобно использовать таблицы конвертации:

Таблица 1
Таблица 1

Пусть у нас будет 4 производных характеристики: сила, ловкость, интеллект и выносливость. Для каждой обозначим на какую базовую характеристику они влияют как показано в таблице 1. Кстати, преобразование характеристик - вовсе не самое муторное, что есть в боевых системах. На своих лекциях в WN Academy я рассказываю про то, как посчитать придуманные вами способности, боевую систему стратегий с сотнями юнитов и другие прикольные фишки, касающиеся не только боёвки, но и всех аспектов геймдизайна.

И так, вернёмся к теме. Обратите внимание, я добавил в таблицу Crit и Dodge. Но эти параметры вовсе не участвуют в формуле мощи. Значит мы также будем должны свести их к эффективным H и D.

Как посчитать, сколько должна давать каждая характеристика?

  1. Задать масштаб единиц: сколько HP и DMG будет давать 1 характеристика

  2. Задать динамику боя N: сколько ходов, секунд, ударов и т.д. нужно для победы

Чем больше N, тем более медленный получится бой.

Формула 6
Формула 6

Пусть N = 5, а масштаб характеристик – k1 = 2. Тогда берём характеристику, конвертирующуюся только в HP или DMG, в нашем случае это выносливость:

Формула 7
Формула 7

Базовое условие эквивалентности вклада всех характеристик в мощь:

Рисунок 1
Рисунок 1

Тогда сила суммарно может дать 2 единицы урона или 10 единиц запаса здоровья. Пусть сила даёт 1,5 урона, тогда коэффициент при запасе здоровья будет:

Формула 8
Формула 8

Значит силу можно расписать как:

Формула 9
Формула 9

Тогда исходная таблица 1 будет выглядеть следующим образом:

Таблица 2
Таблица 2

Аналогичным способом посчитаем остальные характеристики.

Теперь вернёмся к Crit и Dodge. К примеру, Crit можно учесть как:

Формула 10
Формула 10

Где D0 - изначальный урон до учёта крита, а critFactor - коэффициент увеличения урона при крите. Обычно это х2.


Посмотрев на всю эту математику, у нас всё еще остался вопрос, что же такое боевая система?

Да, во многом, это формулы для расчёта боя. Да, это математическая модель типа описанной выше, необходимая для баланса боевых сущностей. Но ещё боёвка - это сама механика: способности, управление, тактильность.. Боёвка - это визуализация сражения, динамика, анимации и VFX. Боёвка - это система характеристик: придуманная вами или стандартные DND, SPECIAL, GURPS.

Рисунок 2
Рисунок 2

Но главное, боёвка - это фан. Механика боя - это то, с чем игроку предстоит сталкиваться в игре множество раз. И совершенно непростительно, если она будет навевать тоску и отталкивать своей бесполезностью.

Работа по созданию игр - это симбиоз из творчества, бизнеса и сложного труда. И как по мне, пренебрегать творчеством совершенно недопустимо.

Комментарии (15)


  1. ildarin
    15.03.2024 07:36
    +3

    Чет как то вообще скудно. "У вас есть две цифры: хп и дамаг. Все остальное - просто арифметический прирост хп и дамага". Тогда уж просто одно число - уровень. У кого больше - тот и победил. Прокачивается деньгами. Имхо - идеальная игра выйдет.

    Где синергии, расчет прогресии, хоть что-то игровое? Последовательность прокачки, билды? Даже будучи просто игроком - уже расчеты в голове намного сложнее, чем просто разделить две цифры. Один только крит по эффективности - в играх прокачивается: вероятность и множитель крита отдельно, что дает кубическую прогрессию, а уклонение - геометрическую.

    Я уже не говорю про такие банальные вещи вроде камень-ножницы-бумага, когда "мощь" одного персонажа несопоставима с "мощью" остальных одной цифрой пэ.

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

    И даже если оценивать вероятность одной буквой пэ, то будет не p1>p2, а p1/p2. Ибо в первом случе это не вероятность, а истинность победы игрока 1.

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

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

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


    1. uhf
      15.03.2024 07:36

      Тогда уж просто одно число - уровень. У кого больше - тот и победил

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


    1. Kallist Автор
      15.03.2024 07:36

      Я ставил своей задачей показать именно "с чего начать расчёт боёвки". Если тема интересная, то буду рад копнуть чуть глубже. Это абилки от простых типа исцеления или dot, до краунд-контрол эффектов. Это прогрессия, которую вы упомянули. У меня на занятиях только прокачке посвящены отдельные 4 часа =)

      А ещё ведь есть системы характеристик. К примеру, мне очень нравится факторное решение в World of Warcraft, где влияние некоторых характеристик на HP и DMG зависит от уровня игрока и противника.

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


      1. ildarin
        15.03.2024 07:36

        Человеческий фактор сложен для подсчета ибо это вообще рандом. Даже по большей части рандомная игра типа покера, с многовековой историей сложна для расчета именно поэтому. А уж тема ммр и спорта - отдельную книгу писать можно на каждую игру. Там уже даже больше статистика учитывается.

        Ну тема расчета вероятности как P=m/n это даже не к боевке относится, а в принципе к самому термину вероятности. Статья навела на рефлексию на тему, люблю математику и инженерию.

        Если у нас конечный автомат - то расчет победы особо-то и не нужен с математикой, просто запускается эмуляция. Автобатлерам привет.

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

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

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

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

        А для чего вам еще нужно вычислять вероятность победителя?


        1. Kallist Автор
          15.03.2024 07:36

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

          Второй случай - в рамках методов сведения игроков в бой, чтобы сводить условно сильных с сильными, слабых со слабыми. К примеру, это может быть модифицированный рейтинг Эло. Как-то я сделал в MMO Action честный Эло, и он убил донатеров =) пришлось учитывать донатные вещи отдельно и занижать для них расчётную мощь, т.к. в противном случае донаторов быстро начинало кидать к топ-игроками с высокими скиллами.


  1. tas
    15.03.2024 07:36

    Еще несколько моментов, которые можно было бы подсветить:

    • Целевая длительность боя - грубо говоря за сколько ударов может умереть противник, сопоставимого с пользователем уровня - за 1-2 или за 20-30 (включая промахи).

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

    • Балансировка архетипов (возможно - синергия архетипов) - у вас ведь не будет безликий солдат - наверняка будут и воины ближнего боя и лучники и маги и у каждого из них свои плюсы и минусы.


    1. Kallist Автор
      15.03.2024 07:36

      Спасибо за идеи для новых статей!


  1. ildarin
    15.03.2024 07:36
    +1

    Работа по созданию игр - это симбиоз из творчества, бизнеса и сложного труда.

    Тут не соглашусь. Разработка игр - это чистое творчество. Бизнес тут сбоку припеку, скорее бизнес эксплуатирует геймдев. Вы б еще маркетинг записали, менеджмент и логистику.


    1. Kallist Автор
      15.03.2024 07:36

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

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


      1. ildarin
        15.03.2024 07:36

        Вы сами себе противоречите:

        Если мы инди или у нас есть деньги, можно заниматься творчеством для души.

        Поэтому, хотим мы того или нет, в разработке игр всегда будет и бизнес, и маркетинг и всё остальное

        "Всегда" И "если мы инди" = ложь.


    1. KEugene
      15.03.2024 07:36

      Ну не совсем согласен. У меня на телефоне есть онлайн шутер. Так вот разработчики явно влияют на игровой процесс, склоняя участников к покупкам. За пару лет акценты сильно поменялись. Часть оборудования нельзя получить за игровую валюту. Более того, большое количество бонусов или достижений также связаны с реальными деньгами. Если раньше можно было с помощью задрота достигнуть топ уровня, то сейчас есть порог, который без доната не преодолеть.


      1. Kallist Автор
        15.03.2024 07:36

        Мобильный рынок - это большая проблема геймдева. Так как это самый большой сегмент (51% всего геймдева), количество желающих заработать на нём огромно. Как следствие мобильных игр выпускается больше, чем нужно. Это приводит к колоссальному росту цены привлечения игрока. А это приводит сразу к двум проблемам. Во-первых, даже самые лояльные разработчики всё больше упирают на монетизацию. Во-вторых, мобильные игры теряют разнообразие. Они все становятся +- с одинаковыми механиками, т.к. именно такой геймплей приносит больше всего денег и, соответственно, позволяет хоть как-то окупать высокую стоимость маркетинга.

        Мы видим, как мобайл начал падать уже два года подряд. По моим прогнозам, 24-й год не станет ещё хуже и рынок мобильных игр США упадёт на 5-6%. А за ним и другие рынки.


        1. vlad4kr7
          15.03.2024 07:36

          "да наоборот-же"

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


  1. Apxuej
    15.03.2024 07:36

    Лучшая боевая система в играх от третьего лица как мне кажется была (есть?) в игре Toribash. Игра держалась полностью на боевой системе построенной на физике и управлении отдельными частями тела. То есть не было кампании и сюжета, не было почти никакого визуала - сражались куклы построенные из геометрических фигур и мир был просто белой плоской поверхностью с редкими геометрическими объектами, не было практически никакого обучения и порог входа был очень серьёзным - т.е. прежде чем ты начнёшь делать что-то осмысленное может пройти час, а прежде чем начнёшь делать что-то эффективное - десятки.

    Однако, та свобода и возможности, которые давал Toribash по сравнению с какими-нибудь RPG и даже всеми остальными файтингами просто поражала. В зависимости от мода (правил комнаты) ты мог попасть в мир айкидо, бокса, сражения на мечах, паркура, прохождения полосы препятствий или даже каких-нибудь прыжков на лыжах.

    Toribash по моему мнению так и не стал популярной игрой и причин тому несколько в порядке значимости:

    1) Нет помощи алгоритма на этапе обучения и первых боёв, чтобы научить игрока управлять телом, без ощущения того что он решает пазл, а не пытается ударить противника кулаком в челюсть.

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

    3) Игра была пошаговой с довольно короткими временными отрезками между ходами. Не всем нравиться походовый режим в файтинге. Опять же топ игроки думаю сумели бы играть в реальном или немного замедленном времени, но чтобы обычный игрок мог это делать - ему нужна помощь c управлением телом.

    4) В игре нет мира, нет истории - т.е. в игру играли только люди, которым нравиться соревнование. Нет других монстров кроме человекоподобных кукол. Нет физики мягких тел в полной мере.

    Если бы все эти проблемы были решены, то у нас была бы не просто очень популярная игра, а игра которая могла бы потенциально изменить ожидание игроков в том, как должна выглядеть боевая система игр как минимум от крупных студий. Я прекрасно понимаю, что не все имеют таланты в командах, способные создать алгоритм помогающий с движением тела, однако я уверен, что Rockstar точно бы справились, например. Epic смогли бы добавить такую возможность в Unreal. Nvidia тоже могла бы помочь с этим вопросом - они в нём очень хорошо разбираются.

    Можно возразить, что мол если хочешь играть с точным управлением тела в реальном времени, пожалуйста, есть Mount&Blade, Chivalry 2 и другие. Но это совершенно не одно и то же. Возможно это могла быть версия управления с максимальной поддержкой игрока, однако должна быть возможность отключить эту поддержку и самому управлять всеми основными суставами. Например, управление копьём - Вы можете придумать кучу действий и анимировать их все: прямой удар, удар наискось, блок, подсечка, плюс к этому можно ещё сделать всякие действия тела: прыжок, перекат, уклонение и прочие. Однако это во первых никогда не сравниться с тем какое количество действий сможет воплотить в жизнь игрок, а во вторых избавит игры от ощущения отсутсвия массы или некой нереальности подконтрольного тела.и оружия. В классической боевой системе очень тяжело сделать оружие которое подчиняется физике и всё оружие походит мечи из звёздных войн. Приведу также пример, почему такая система может быть интересна не только в сеттинге средневековья:

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

    Что бы происходило в какой-нибудь старозаветной MMORPG:

    Дракон дышит огнём, бьёт лапами и хвостом. Группа уклонятся от огня перемещаясь бегом по полю боя, когда дракон поднимает лапу, бойцы ближнего боля рубят подушечки, когда дракон открывает рот дальнобойные вносят свой урон. Танки срезают урон, хилеры восстанавливают полученный урон. Происходит значительная игра цифр и незначительное кол-во принятых решений. Количество нестандартных принятых решений стремиться к нулю. Здоровье дракона падает до нуля и он умирает.

    В современной синглплеерной игре или продвинутой MMOPRG:

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

    Что потенциально возможно в игре с полным управлением телом персонажа и не требует от разработчика заранее придумать, а затем воплотить в коде определённое взаимодействие :

    Два игрока подбрасывают третьего игрока вверх как это делают акробаты в цирке, чтобы тот смог дотянуться до цели. Игрок может обвиться вокруг кончика хвоста на излёте удара и получить значительное ускорение во время обратного взмаха, для того чтобы использовать его в своих целях, например быстро переместиться на другой участок поля боя или долететь до деревьев. Так как дракон также является объектом подчиняющимся физике, то появляется возможность прервать часть его атак например закрыв челюсть ударом сверху по голове (тот же прыжок с деревьев) или сильно ударив по опорной лапе, во время его замаха, врезавшись в неё с ускорением. Опять же удар многотонного монстра не может пройти без последствий и даже если броня танка выдержит, то сам он отправиться в полёт, если будет парировать удар просто стоя - здесь поможет опыт и скоростное мышление игрока, чтобы принять такое положение, чтобы удар пришёлся на щит по касательной. Чтобы скрыться от дыхания дракона, игроки могут прятаться за разнообразными препятствиями в том числе маленькими, за другими игроками или с помощью акробатических трюков. Волшебник кастующий заклинание требующее неподвижности может быть вынесен из зоны огненного дыхания разогнавшимся игроком.

    И многое другое, чего я не вижу, потому что не играл в подобные игры. Это называется emergent gameplay - способы решения проблем в игре, которые разработчик не зашивал в игру сознательно. Самые яркие воспоминания от игр, часто возникают в результате того, что игроки находят подобные решения.


    1. Kallist Автор
      15.03.2024 07:36

      Спасибо за такой подробный коммент! Узнал для себя новую игру =)