Как стать автором
Обновить

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

Время на прочтение6 мин
Количество просмотров54K
Всего голосов 69: ↑67 и ↓2+65
Комментарии38

Комментарии 38

Первое, что делаем с берсерком — смотрим, есть ли снаряжение и механики, которые позволяют держать низкое ХП и не умирать.
Второе — делаем видео/ стрим «lowlife-берсеркер гнёт всех»
Третье — смотрим, затопило ли форум слезами от разбойников, которые в среднем живут хуже и танков, которые не наносят повреждений по сравнению с берсеркерами.
Ну вот как раз есть статья про «оптимальные стратегии»)
Автору спасибо за интересную статью
Ну вот, оптимальная стратегия для игрока, которому лень самому думать — посмотреть возможные варианты и выбрать самый дамажащий из них ( где-то была статистика, что в WoW 85% любят дамажить, 5% танчить, а остальные — поддержка, при этом девушки чаще выбирают персонажей поддержки).
Таких ленивых — большинство, в результате, когда находится вариант, который сильнее — на серверах половина бегает за самый сильный класс в самом сильном билде, а остальные ноют на форумах про дисбаланс и просят нерфов.
Хотя, возможно в этом и цель геймдизайнеров — усиливать малопопулярные классы в одном патче, чтоб ослабить в следующем: да, будут тонны нытья, зато игрокам не скучно.
это они в игры еще заточенные под донат не играли =)
Сбалансить огромное количество данных действительно трудно и да, дпс-ники всегда на коне, люди любят убивать больше чем саппортить.
Другое дело, если к примеру поставить такой баланс, при котором даже у хиллера есть шанс в сражении 1 на 1, только нужна будет другая стратегия: обвешаться бафами, накладывать безмолвие, выхиливать большое количество урона ограниченное количество раз, накладывать дебаф на крит. Игра мечты просто.
По поводу бафов классов, когда то Метелица могла несколько лет подряд не менять особо в механике класса ровным счётом ничего. Помню даже пробег голых гномов во имя справедливости, на который компания положила. Возможно так они видели игру, да и за отсутствием явной соревновательной системы это было ни к чему, было просто обидно.
А вполне возможно всё происходит именно так.
image

Это потому что большинство игр никак не мотивируют саппортов. Даже при раздаче плюшек группе чаще учитывают, кто больше урона нанес. В то время как самый полезный член группы мог за рейд вообще урона не нанести…
Но это уже не столько проблема баланса, сколько гейм-дизайна в принципе.
От части, на мой взгляд, это помогает привлечению казуальной части игроков(что немаловажно). Ну или тех кто не хочет много времени тратить на все эти соревнования по ДПС. Хотя какой потенциал.
В хорошей игре тот кто самый дамажный — он же как правило и самый незащищённый.
Это автоматом повышает требования к «прямоте рук», а на самом деле к тому, чтобы ДУМАТЬ быстро и наперёд, и реализовать дамаг -не дохнуть.

Поэтому те, кто взял дамагеров, очень быстро расслоятся на 15% нагибаторов, ещё 20-30% тех кто хочет и учится, и остальную часть «крабов».

В случае WoW и других игр с развитым PvE процент смещён в плюс, т.к. мобов валять проще, чем игроков.
В хорошей игре кроме урона и защиты есть и более интересные способы баланса. Можно сбалансировать разные классы так, что номинально все будут иметь одинаковый DPS и защиту, но играться будут совершенно по-разному. Например:
— медленные сильные удары против слабых но частых.
— точечные удары против сплеш-атак
— урон можно блокировать бронёй, поглощать за счёт здоровья или уклоняться
— бонусы за контратаки, удары с разбега, комбо, классовое оружие и т.д.
— станы, обезоруживание, связывание, отбрасывание, принудительное агро…
И это всё только для для ближнего боя.

То есть само понятие «самый эффективный» в зависимости от ситуации будет сильно меняться, и это не всегда будет «самый дамажный».

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

Статья интересная. Даже появилось желание применить подобный подход в своей игре (от необходимости балансировать которую мне хочется запереться в шкафу без кофе и печенек и громко выть от тоски). Я даже выписывал вопросы и замечания по ходу прочтения (чего обычно не делаю). Вот такие например:

  1. Это типичные классы персонажей в RPG.
    Понятие «длины» палки (силы урона) вводится слишком резко, внимание на нем не сконцентрировано в должной мере, отчего переход от черных фигур к цветным разных размеров становится понятен только после третьего прочтения (да, я тугодум, но все же). Здесь же сразу добавляется и другая характеристика — ширина прямоугольника. Хотя про нее уже говорилось, но мне кажется, визуально отметить границы палок было бы полезно.
  2. Подумайте, что это за персонаж:
    Эй, мы тут цветные прямоугольники рассматривали, и не договаривались, что имеем дело с графиками зависимости силы урона от времени. И хотя этот факт логично вытекает из принятых абстракций, незнакомый с математикой человек здесь впадет в ступор и будет долго хлопать глазами (это не «берсерк», извините, — это буква «L», упавшая на спину, когда у нее полноги отрубили). Сами оси на рисунках таки появляются (куда ж без них), но гораздо позже, чем хотелось бы.
  3. Но что, если у нас в руках Потрошитель Гоблинов, который наносит им двойной урон?
    В этом моменте я всерьез начал думать, что подход с палками и площадями хорош в начале разработки, а не когда игра уже сделана и ее (внезапно!) нужно балансировать. Тогда есть возможность двигаться от простого к сложному, постепенно наращивая детали и усложняя математическую модель (да, в «статье без математики» поразительно много математики — автор пытается завуалировать ее применение наглядными картинками, но суть от этого не меняется. Это ни в коей мере не является критикой, так как мы работаем с точными системами и сбалансировать игру вообще без математики ну никак не получится). Так вот, в реальной жизни урон не будет постоянной величиной. И еоличество гоблинов на уровне тоже. А значит вам (нам, им, всем) придется иметь дело с вероятностями, распределениями и прочими муторными вещами (за которые я в ВУЗе на экзамене получил тройку и не решился ее пересдавать). В лучшем случае, вы будете умножать ваши длины и ширины (эммм… такого слова нет) на проценты (а это уже математика). В худшем же случае… рядом со мной в шкафу есть еще одно место.
  4. В шутере нам надо знать сколько процентов от карты составляют коридоры, а сколько — тесные комнаты
    Ну да, так и есть — к готовой игре подход уже неприменим (либо с нуля переделывать). Как посчитать процент «корридорности» корридора, чтобы понять эффективность дробовика? Как учесть взаимное расположение двух (пусть вначале двух) игроков на карте, если точек спауна N? (тут я хотел формулу вставить — ну эту, из комбинаторики, но вовремя вспомнил, где нахожусь и что за люди зашли почитать эту статью). А если игроков больше двух? А если оружия больше двух? А если уровень трехмерный? А если есть оружие, которое дает AoE? А ежели дождь во время усушки, а?. Сложность модели растет в геометрической прогрессии — успевай только памперсы менять. Вы должны быть готовы к серьезной, кропотливой работе, делать которую трудно, но совершенно необходимо (иначе ваша игра быстро всем надоест).
  5. Теперь среднюю силу силу дробовика снова можно посчитать как сумму площадей прямоугольников:
    Автор это знает, но стесняется сказать (чтоб не отпугивать народ): персонажи шутеров не перемещаются по карте рывками, а потому на соответствующем графике (можно я все же буду говорить «график», а?) никаких «ступенек» не будет — а будет плавная «волна», выражаемая некоей функцией. В конце автор честно признается: чтобы высчитать площадь, необходимо взять интеграл этой функции в нужных пределах (добро пожаловать в мир математики).

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

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

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

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

Теперь по конкретным моментам.

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

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

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

4) А вот тут я не соглашусь. На своей практике я подобным образом работал с уже существующей игрой. У существующей игры уже есть какая-то модель баланса, даже если она никем никогда не задумывалась. Если цифры просто подгонялись на глаз после множества тестов. В таком случае эту модель надо обнаружить. Это задача reverse engineering, и я такие делал. Возможно выкопать модель баланса из игры, и когда вы ее раскопаете, ее можно будет описать вот подобным образом. Только не так примитивно как я это сделал — вы уже будете знать все детали и зависимости в игре к концу процесса.
На эту тему я опять сошлюсь к Шрайберу, у него есть лекция по реверс инжинирингу баланса стоимости маны в MtG. И она будет очень полезна, даже если работать надо не с ККИ, описанный там подход универсален.
ссылка

Ну и по последнему пункту думаю я дал ответ в начале. Еще раз спасибо :)
Блин, а так можно было!?

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

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

Автору мой респект!
Но как понять, сбалансированы ли эти классы между собой?? Ответ вы могли уже узнать — надо просто посчитать площади прямоугольников. Если они одинаковые, значит у классов одинаковая сила и они в балансе между собой.


Смею заявить, что это очень наивный подход к понятию баланса.

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

Если решать в лоб, то можно и так. Также можно уменьшать размерность, приводя характеристики к эквивалентам. ХП и броня вместе легко конвертируются в так называемые eHP (эффективные ХП) и сводятся в один параметр. Туда же легко идет уворот и некоторые виды лечения. В свою очередь, скорость атаки и крит достаточно просто конвертируются в урон.

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

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

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

К сожалению, я плохо себе представляю изменение прямоугольников других персонажей (как союзных, так и враждебных). Как это вообще работает? Ладно, если вы четко знаете, сколько персонажей в игре и какие у них прямоугольники (то есть, какой тип персонажа — это важно знать, так как у разных типов может быть разная восприимчивость/сопротивляемость к различным воздействиям). Но если их произвольное количество? Как сбалансировать персонажа, который (например) уменьшает урон врагов, если их больше пяти, но при этом получает повышенный урон, если враг всего один? Это уже походит на магию какую-то. Явно, без условностей не обойтись. Например: параметры «сопротивляемость к урону вилкой» и «сопротивляемость к урону пылесосом» имеют одинаковую ценность, а значит при равных значениях взаимно балансируют друг друга. Ну или что-то в этом роде (когда-то видел учебный ролик, в которой базовой идеей было выразить все параметры персонажа через какие-то общие единицы и посчитать суммарную «стоимость» — нечто сродни подходу, описываемому в данной статье).

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

Так вот откуда берутся эти непомерно дорогие кольца "+10% к вероятности крита". Типа наносим 100 урона в секунду с вероятностью критануть х2 в 10% — так что кольцо дает ажно +20 к урону по мнению геймдизайнера

Есть нюанс, что крит — параметр относительный. Чем больше у тебя базовой атаки, тем больше дополнительного урона тебе даст крит. А вот цену надо назначить один раз и на всю игру.
Скорее всего, если это кольцо непомерно стоит, то это потому, что его цена считалась относительно ситуации где-то в конце игры. Когда у персонажа уже не 100 урона в секунду, а 1000. И продешевить тут очень опасно, потому что тогда прокачанные персонажи будут поголовно бегать обвешанные критами, куплеными за бесценок.

По этой же причине в мобах на разных этапах игры разные статы экономически выгоднее. В начале матча выгоднее покупать чистый урон. Крит стоит дорого, а ДПСа даст мало. В конце крит покупать выгоднее, потому что он будет давать больше ДПСа, чем урон на те же деньги.

А тактика кайтинга преобразуется в "очень много бесплатных атак"

Фиксится выносливостью, контролем, ценой апгрейда скорости, левел-дизайном, возвращаемым уроном (привет Iron Maiden), блинком…
НЛО прилетело и опубликовало эту надпись здесь
Не самое удачное решение (со стороны разработчика). Игра — это возможность выбора. Вы можете выбирать между "выносливостью, контролем, ценой апгрейда скорости, левел-дизайном, возвращаемым уроном (привет Iron Maiden), блинком…", но выбор между критами и поражением не добавит игре интереса.
НЛО прилетело и опубликовало эту надпись здесь
В чем проблема сделать плавающую сложность? Если предыдущая команда облажалась, босс становится слабее. Если выиграла — сильнее. Параметры мейн-босса менять в зависимости от урона, упавшему на мелких боссов (вроде как мейн одевает разную бижу в зависимости от нагрянувших гостей).

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

Впрочем, этим ребятам выбор не нужен. Достаточно вызова.
Проблема в том, что игроки очень не любят такую отрицательную обратную связь. Потому что они в той или иной степени чувствуют, что их штрафуют (делают босса сложнее) за то что они прокачены (вложили время и деньги в прокачку) и наоборот.
А про Power Creep у Extra Credits есть отличная серия роликов www.youtube.com/results?search_query=extra+credits+power+creep
Там много разных вариантов выхода они предлагают (что само по себе говорит, что хорошего нет). Мне больше всего нравится подход с созданием новой «оси» (типа абилки) вместо просто увеличения статов, хотя у этого подхода наряду с классными плюсами, конечно, есть прям большие минусы (сильно «дорого» по ресурсам, наверное, главный из них)
На мой взгляд, «честный» уворот — штука сложная: во-первых, нельзя давать собирать 100% уворота, ибо получится бессмертие.
А во-вторых, даже 99% уворота при честном генераторе случайных чисел не гарантирует, что следующие 2-3 удара пройдут по тебе полностью и обеспечат мгновенную смерть, что вызывает ОЧЕНЬ яркие эмоции у игрока.
В одной известной игре от уворота очень быстро отказались. Взамен дали временный 100% уворот в небольшой области.
Вот пример из PoE механики уклонения (ага, и ещё отдельной механики уворота) с механизмом, уменьшающим шанс получить большую серию попаданий ( или промахов) по персонажу, влиянию на шанс критического удара ( если кубик показал на попадание — прокидываем ещё раз, был ли удар критически) и дополнительной механикой для удачных / неудачных шансов увернуться ( в обоих случаях прокидываем кубик дважды — если удачный шанс — выбираем хоть 1 успех, неудачный — выбираем хоть 1 неуспех).
А ещё у врагов есть меткость, которая тоже участвует в расчёте шансов уклонения и эту меткость можно увеличить / уменьшить.
И да, в большинстве случаев уклонение от заклинаний, снарядов оружия дальнего боя и от атак ближнего боя будет рассчитываться по-разному.
Похоже на извращение, но работает.
В другой малоизвестной немецкой ММО с фуллдропом от уворота тоже отказались, но при этом у кожаных ДД есть невидимости, прыжки и прочие радости.
Великолепная статья! Большое вам спасибо за труд!
НЛО прилетело и опубликовало эту надпись здесь
Помню как первый раз столкнулся D&D. Я понял, что у этой системы есть ответы на любые вопросы и выходы из любых ситуаций. Можно было бы создать такой баланс без помощи математики? Не думаю. Но нужны ли подобные масштабы для большинства игр? Тоже не думаю. Однако основы логики нужны как для успешного программирования, так и для баланса игры. Каждый умудряется взглянуть на это дело под своим углом и угол автора мне по душе. Спасибо за статью.
Конечно лучшим вариантом всё-таки будет завести калькулятор для своего детища, как только разберешь основы и выстроишь основную логику.
К сожалению, мой конкретный опыт подсказывает, что в реальной жизни такой подход (вычисление мощности которое равно урон*ХП) подходит только на этапе прикидки. Да, наверняка картинки (спасибо за них) типа habrastorage.org/webt/cn/b-/16/cnb-167iht8au-zbtiak7hbxzv0.jpeg полезны для визуализации того что есть в игре (и выявлению того чего там не хватает). Но, во-первых, концепция мощности практически перестает работать как только в игре появляются абилки лечения (что вообщем есть практически в любой игре), а тем паче вампиризма (когда ваше (само)лечение зависит от нанесенного вами же урона, да пусть он и не так распространен в играх), а если в вашей игре есть еще и стан к этому всему, то приходится переходить с концепта статичной мощности куда-то в сторону динамической (в том смысле, что считать сколько урона можно нанести в ту единицу времени за которую вы можете снести в ноль healthbar противника), что уже во многом усложняет расчеты.

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

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

Что касается осей и стоимостей, да, это тоже хороший подход. В следующей статье я немного его затрону. У него есть свои трудности: корректная оценка стоимости шага по каждой из осей, наличие бинарных эффектов, которые не раскладываются в ось, количество самих осей. Но тут как и с любой методологией, все зависит от механики игры и целей. В одном случае система стоимостей покажет себя лучше, в другом беглая оценка по ХП/ДПС будет достаточно эффективной.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий