Как рассчитать игровой баланс
— Вопрос мой прост и краток, — Промолвил Носорог, — — Что лучше: сорок пяток Или пяток сорок? «Винни-Пух и все-все-все» |
Что общего между игровым балансом и, скажем, добродетелью? Да то, что все подряд при случае говорят о них, всякий может их оценить, но при этом мало кто способен внятно объяснить, что же это такое. Вот почему так часто в графе «Недостатки» той или иной игры оказывается этот самый баланс. Ведь очень трудно искать в темной комнате черную кошку, если даже приблизительно не знаешь, что такое кошка — животное, овощ или минерал?
Игровой баланс обычно ищется методом проб и ошибок. Сгоняется легион тестеров (или, в случае самодеятельных разработчиков, игра выставляется в свободное тестирование), а потом долго-долго идет подгонка и настройка.
Это, в общем, правильно: несмотря на обилие теоретических разработок, на месте рассчитать точный игровой баланс удается редко. Но для того, чтобы его поиск не занял годы, надо бы с самого начала сотворить нечто, издали напоминающее баланс. А как?
Конечно, совсем без математики не обойтись. Но тем, кто не питает пламенной любви к рядам Фурье и прочим гомеоморфизмам, не стоит особенно печалиться, потому что баланс можно считать на достаточно примитивной математической основе. Итак, приступим.
С чем его едят
Существует несколько определений игрового баланса; по сути они довольно похожи, так что разбирать их все нет надобности. Чаще всего используется баланс по Гарфильду — им и займемся.
Гарфильд предлагает оценивать не баланс, а, наоборот, дисбаланс, и стараться велико возможно его уменьшить.
Пусть в начале игры человек делает некий выбор: скажем, расы (в стратегии), класса (в ролевке) и так далее. Если существуют такие варианты выбора А и Б, что выбравший А заведомо получит преимущество над выбравшим Б, — налицо дисбаланс первого рода.
Если же в процессе игры существуют такие выборы, которые не используются никогда или, наоборот, наверняка применяются всеми сколько-нибудь разумными игроками, то это дисбаланс второго рода. Сюда относится, например, боец, которого никто не производит по причине очевидной бесполезности, или технология, которую непременно должен изучить всякий игрок, или навык, без которого не обойтись либо, наоборот, на который никогда не находится места...
Многие игроделы считают, что опасен только дисбаланс первого рода: дескать, если какой-то боец круче всех, но все могут его производить — то с балансом все в порядке. Это большая ошибка. Как только игроки понимают, что делать надо, допустим, минотавров, а все остальные рода войск — «подтанцовка», наступает раздражение, игру объявляют «примитивной» и укладывают в долгий ящик.
Как вы уже заметили, бывают дисбалансы «вверх» (когда какой-то выбор резко выделяется в положительную сторону) и «вниз» (когда какой-то выбор заведомо неудачен). Вторые чуть менее опасны: если верхний дисбаланс сужает стратегическое богатство игры до единственно возможного варианта, нижний просто немного урезает набор возможностей. Но и это способно изрядно подпортить впечатление от игры.
Мы начнем с дисбалансов второго рода, и потом уже от них перейдем к первому.
Вопрос цены
Считать баланс можно только после того, как появляются хотя бы приблизительные формулы игры. То есть — когда вы знаете, как именно снимает хиты большой топор и чем лазер Фазера отличается от фазера Лазера.
Для расчетов по Гарфильду нужен такой параметр, как цена объекта. Это — мерило тех усилий или ресурсов, которые надо затратить в игре, чтобы получить объект в свое распоряжение. Баланс по Гарфильду — это нахождение для каждого игрового объекта правильной цены.
Например: в Magic: the Gathering, в принципе, можно сделать карту с текстом вроде «Вы немедленно выигрываете схватку» так, что она не будет дисбалансной. Надо только сделать цену в мане и дополнительные условия достаточно сложными. Что-нибудь вроде «6 ман красного цвета, 4 — белого, пожертвовать 3 существ...».
Первая серьезная задача, с которой мы сталкиваемся, — определить, что же в нашем случае будет ценой. Цена должна быть одним числом; то есть, если вы платите несколькими разными ресурсами — придется подумать, как сделать из них одно число.
Например: для технологии в Civilization ценой можно считать количество «колбочек науки», которые нужно потратить для ее изучения (считая вместе с технологиями, необходимыми для начала ее разработки). Для бойца в Warcraft — цену в золоте, дереве и лимите (надо выработать некий единый параметр, одно отдельное число). Для навыка (Feat) в Neverwinter Nights придется учесть все требования, которые следует исполнить для получения этой способности. А для какой-нибудь хитрой пушки в боевике «ценой» вполне может быть количество усилий, которые нужно затратить для ее добычи.
Как видите, все непросто, но это не страшно. У стратегий, где баланс необходим, как воздух, численные параметры есть. Например, в случае с Warcraft вы можете сложить потребное количество золота и дерева и умножить на что-нибудь вроде 1 + лимит/2. У action (я не имею в виду закупку снаряжения в сетевых боевиках — тут все просто и ясно) может быть достаточно сопоставить предмету условную цену, а потом просто сравнивать одну цену с другой: если, скажем, лазер Фазера окажется стоящим дороже, чем фазер Лазера, значит, в игре его добыть будет сложнее...
Далее будем рассматривать пример, когда мы считаем баланс для отрядов в стратегии; при необходимости замените отряд, скажем, на ствол из боевика, идея будет той же самой.
Первая прикидка
Сначала выберем некое число (допустим, 10) как «среднюю» цену отряда. Обозначим это число как V, от «value». И сопоставим каждому из отрядов цену V.
Дальше сделаем вот что. Предположим, у нас есть два отряда — А и В. Давайте сосчитаем вероятность того, что А победит В.
Нет, я не собираюсь предлагать вам глубоко изучать теорию вероятности. Мы же, в конце концов, программированием занимаемся? Вот и решим эту задачу как программисты — методом Монте-Карло. То есть смоделируем бой между А и В (ведь у нас уже есть формулы боевого взаимодействия? А если нет, то стоит вернуться к предыдущей статье — о дизайн-документе). Смоделируем его, например, 100 раз — и сосчитаем успешные исходы для каждого из бойцов, поделив результаты на количество испытаний (то есть 100). Получим числа от 0 до 1. Назовем их PA и PB.
А теперь пересчитаем цены. Новая цена А будет выглядеть так:
VA = F(PA) * VB
, где F(PA) — такая функция от нашей вероятности:F(PA) = PA/PB, если ни одно из чисел не равно 0; если же оно равно 0, то заменим его в выражении на какую-нибудь маленькую величину, скажем, 0,01.
Разберемся, что это значит. Если, скажем, А побеждает в 75% случаев, а В, стало быть, — в 25%, это означает, что А втрое «круче» В. И по нашей формуле А будет стоить в три раза больше, чем В. Проверка, не равна ли нулю одна из вероятностей, введена потому, что бывает так — шансы нанести повреждение у одной из сторон слишком малы. А нам не нужно, чтобы цены уходили в ноль или бесконечность.
Теперь (конечно, все это мы рассчитываем на компьютере, а не на листочке бумаги!) проведем эту операцию для всех пар отрядов, сравнив каждый с каждым. Верности ради проведем это испытание несколько раз подряд. Получим что-то вроде баланса... хотя и не совсем.
Это интересно: мы решаем сейчас задачу о балансе второго рода, но если мы ее решим, баланс первого рода достигнется почти автоматически. Ведь если все цены справедливы — то игра может быть дисбалансной лишь в том случае, когда у какой-то стороны много меньше родов войск, чем у другой. А это-то уравновесить очень просто...
Учитываем тонкости
Мы получили более или менее рабочую схему балансировки. Теперь попробуем ее усовершенствовать.
Наша система не учитывает нескольких вещей. Во-первых, взаимодействия в группе: понятно, что маг-целитель вряд ли справится один на один с большинством бойцов, но группа с ним намного мощнее, чем без него. Во-вторых — «небоевые» свойства отряда, среди которых обычно важнейшими оказываются скорость и проходимость.
Первому горю помочь нетрудно. Делаем такие же испытания, как и раньше, но только берем две одинаковых группы солдат, одну — усиленную одним бойцом, другую — другим. И проделываем те же операции, сравнивая цену добавленных бойцов.
Замечание: это имеет смысл делать только со «спецбойцами» — лекарями, магами поддержки и т.п. С обычными воинами такое ни к чему.
Осталось задействовать скорость, маневренность и спецсвойства, в бою не участвующие.
Неплохая идея — запустить персонажей в бой (по обычной схеме) с некоторого расстояния; тогда учтется и скорость, и дальнобойность. Для учета всевозможных заклинаний вызова просто прибавьте к цене мага цену вызываемого существа. Для экономических эффектов (например, боец приносит доход ежеходно) присовокупите доход за несколько ходов.
Если сомневаетесь, как учесть какую-то способность, — сделайте просто: не берите ее в расчет изначально, а потом, уже на стадии настройки баланса, выверите цену вручную.
Вообще-то есть специальные методы для расчета по Гарфильду почти любой способности, которую только можно придумать, но их перечень занимает книгу страниц на четыреста, а баланс большинства игр можно оценить и без их помощи (развернутый метод Гарфильда применяется обычно к играм такой сложности, как, например, Magic: the Gathering, или тестированию объемных ролевых систем).
Здания, предметы и прочее
Как балансировать войска, мы вроде разобрались. Теперь разберем несколько приемов, которые помогут совладать с объектами других типов.
Например, здания; если они производят войска, то логично будет составить их цену как цену производимых войск, домноженную на какой-либо коэффициент (попробуйте взять начальные значения, скажем, из Warcraft). Если делают доход — посчитать, как с войсками, дающими доход (см. выше). Если нужны для строительства других зданий — посчитать сумму зданий, которые из него следуют, и умножить на тот же коэффициент, о котором говорилось выше.
Всегда, когда вам для получения здания, бойца или чего-то еще нужно сперва провести несколько подготовительных действий, учитывайте их цену. Не забывайте: когда цена платится за более чем одно действие, ее надо «распределять» по всем объектам, которые выиграли от ее уплаты.
Например: если вы вычислили, что боец должен стоить 20 «условных единиц», но для его строительства надо предварительно затратить на разные вспомогательные нужды еще 30 единиц, однако при этом бойцов такого типа будет строиться в среднем десяток, — вычтите 30 / 10 = 3 единицы из цены бойца, оставьте 27.
Для предметов экипировки, а также всевозможных усовершенствований поможет такая формула: сосчитайте цену бойца, усиленного этим предметом или усовершенствованием (как рассказано в предыдущих главах), вычтите из результата исходную цену бойца — и вот у вас есть цена предмета.
Правило трети
Я говорил, что выправление дисбалансов второго рода почти автоматически выправляет дисбалансы первого. Это верно, но не совсем.
Частенько возникают балансные схемы под названием «камень-ножницы-бумага»: одна сторона легко справляется с второй, но мгновенно проигрывает третьей, третья же, в свою очередь, почти без боя уступает второй. Это не есть баланс, по той простой причине, что, хотя все формально в равном положении, все схватки заканчиваются быстро и предсказуемо.
Самый простой способ предотвратить такое положение — использование правила трети. Когда пишете программу обсчета баланса, заставьте ее сделать табличку, какие вероятности победы в результате получились. Если войска одной из сторон выигрывают у войск другой более чем в 2/3 случаев — стоит подправить их характеристики, усилив одну из них специально против более сильной стороны (после чего пересчитать баланс).
Совет: «прямые» плюсы, вроде «у орочьих шаманов есть +2 против эльфийских магов», — плохое решение, создающее потенциальные и плохоисправимые проблемы в балансе, а главное — раздражающее игрока (тому, кто играет за орков, обидно, что 80% времени его плюсы ни к чему, а тому, кто играет за эльфов, досадно, когда он сталкивается с орками). Лучше вычлените главную сильную сторону стороны-победителя (например, стрелки) и давайте плюсы против всех стрелков...
Это, конечно, очень краткое изложение метода Гарфильда, но вполне пригодное для работы. И даже если вы хотите пока без компьютера прикинуть возможности войск или оружия в вашей игре — этот способ даст возможность примерно оценить баланс игры. Метод идеально подходит к большинству стратегий (особенно RTS и экономическим) и годится для action и RPG (хотя там используется еще метод Хорсманна, о котором мы поговорим в одном из будущих номеров).
Назад