Танковый баланс
Василий Чобиток
(Броне-сайт, сентябрь 2016)
Введение
Настоящий метод разработан в августе 2015 года. Он рассматривается на примере игры World of Tanks, но может быть применён в любых подобных играх с командными боями и персонажами (техникой) с различным боевым потенциалом.
Предлагаемый метод не является оригинальной идеей, он основан на методиках математического моделирования боёв, которые разрабатывались в бронетанковой отрасли СССР. На Броне-сайте данная работа публикуется с целью продемонстрировать как эти наработки могут применяться в иных областях, в частности – игровой индустрии.
Под балансом (балансировкой) часто понимают две различные задачи, а именно: 1) создание игровой машины (танка), которая по боевым возможностям соответствовала бы своему уровню в дереве развития техники и 2) формирование команд перед боем таким образом, чтобы их совокупный потенциал по боевым возможностям техники был примерно равным и победа каждой из команд была равновероятна.
Настоящая методика позволяет решить обе задачи. Более того, она позволяет автоматизировать процесс. Главным преимуществом автоматической балансировки является исключение огромного объема связанных с балансом работ и необходимости изменения ТТХ игровых машин (что чаще имеет негативную реакцию у игроков).
Метод балансировки техники
Историческая справка
Согласно разработанным в СССР методикам сравнительной оценки танков вводится коэффициент технического уровня (КТУ) или, он же, критерий боевой эффективности танка. Данный критерий по сути означает балансный вес (обозначим его K) танка в бою.
Например, если для танка Т-72А КТУ = 1, то у Леопард 2А1 – 1,99 (значения реальные). Это означает, что в бою два Т-72А равноценны одному Леопард 2А1.
Предельно кратко суть методики определения КТУ сводилась к следующему:
- из набора исследуемых машин выбирается базовая, та, которой присваивается КТУ=1 – для этой машины КТУ принимается константой;
- проводится моделирование большого числа различных видов боя как между одиночными, так и подразделениями исследуемых танков с учетом других видов вооружений на поле боя (сложный математический аппарат, учитывающий множество технических характеристик машин и других параметров) и определяется вероятность победы в этих боях;
- исходя из полученных вероятностей рассчитывается КТУ. В случае парного боя для i-го танка:
(1)
где Wi – вероятность победы i-го танка в парном бою с базовой машиной.
Если в результате получено, что танк № 1 имеет КТУ = 1, а для танка № 2 КТУ = 1,5, это означает что при встрече подразделений этих танков в соотношении 3 к 2 вероятность победы каждой из сторон 0,5 (если не учитывать ничейную ситуацию).
Для WoT может быть использован такой же метод определения K с той разницей, что в игре не требуется сложный матаппарат моделирования боя, т.к. имеются статистические данные результатов реально проведенных игровых боёв.
Описание метода балансировки
Решаемая задача
Данный метод решает задачу автоматического перерасчета балансного веса машин таким образом, чтобы при использовании этого балансного веса в балансировке команд статистика побед всех типов игровых машин была примерно равной.
Описание алгоритма решаемой задачи
Суть метода заключается в корректировке балансного веса при отклонении статистики побед машины в ту или иную сторону от 0,5.
Исходные данные
- Wi – вероятность победы i-го танка в среднем по игровым серверам (известно из игровой статистики за прошедшие сутки);
- Wнi – вероятность ничьей i-го танка в среднем по игровым серверам. Для идеально сбалансированного танка Wi + Wнi /2 = 0,5;
- K'i – значение балансного веса i-го танка, рассчитанное предыдущий раз (при первом запуске системы значения могут быть заданы эмпирически или все равные 1);
- для одной из машин (назовём её «базовой») принимается Kb = 1 = const.
Алгоритм
- По результатам статистики дня боев для каждой из машин определить значение:
Wdi = Wi + Wнi/2; - С использованием (1) вычислить Kdi – эффективность каждого танка за прошедший день (если Kdi = 1, то значение балансного веса Ki идеальное и корректировки не требует):
; - Для каждой машины скорректировать балансный вес:
Ki = Kdi × K'i; - Привести балансный вес всех машин к балансному весу базовой машины (балансный вес самой базовой машины, скорректированный по результатам дня боёв, приводится к единице):
Ki = Ki / Kbd,
где Kbd – эффективность базовой машины за прошедший день.
Контрольный пример
Пусть имеется пять машин (T1 – базовая), для которых известны K предыдущего дня (K') и Wd за текущий день. Это дает возможность произвести перерасчет боевой эффективности машин (см. таблицу).
T1 | T2 | T3 | T4 | T5 | |
---|---|---|---|---|---|
K' | 1,00 | 2,00 | 3,00 | 5,00 | 8,00 |
Wd | 0,48 | 0,55 | 0,49 | 0,50 | 0,47 |
Kd | 0,96 | 1,11 | 0,98 | 1,00 | 0,94 |
K | 0,96 | 2,21 | 2,94 | 5,00 | 7,53 |
K = K / Kbd | 1,00 | 2,30 | 3,06 | 5,20 | 7,84 |
Некоторые замечания
Возможно фиксированный балансный вес должен быть задан не одной машине в игре, а одной машине в каждом классе, балансировка которых в бой осуществляется отдельно (например, для артиллерии, лёгких танков и т.п.)
Также K=1 не обязательно задавать машинам первого уровня. К примеру, если принять K=1 для БТ-2, то у МС-1 K < 1.
Балансировка команд осуществляется по примерному равенству сумм K участвующих в бою машин. Также учитывается балансировка по классам (например, артиллерия и лёгкие танки подбираются отдельно).
Экспериментальная модель
Для проверки работоспособности предлагаемой методики балансировки техники разработана программная модель.
Допущения и исходные данные
В модели участвуют 10 условных типов танков, соответственно пронумерованных от 1 до 10.
Для приближения условий эксперимента к игровым используется три уровня боёв, в которых могут участвовать танки как указано в таблице.
Принимается допущение, что существуют такие значения K = const, при которых баланс техники можно считать близким к идеальному. Для каждой машины задается такой К, в дальнейшем он используется для вычисления и присуждения победы одной из сформированных команд.
Расчетный K обозначим Кр. В начале эксперимента для всех танков принимается Kp = 1.
Базовой машиной принимается Т2, для нее: К = Кр = 1
Т1 | Т2 | Т3 | Т4 | Т5 | Т6 | Т7 | Т8 | Т9 | Т10 | |
K | 0,8 | 1 | 2 | 4 | 6 | 8 | 16 | 18 | 25 | 28 |
I | ||||||||||
II | ||||||||||
III |
Порядок проведения эксперимента
- Случайным образом задаётся уровень боя от I до III.
- Для заданного боя случайным образом подбираются участвующие в бою 30 машин из числа соответствующих уровню боя. Из этих машин формируется отранжированная по Kp очередь.
- Производится формирование команд с балансировкой по текущим значениям Kp, для этого участвующие в бою машины в порядке очереди добавляются в ту из команд, суммарный вес танков которой ниже.
- Победившей в бою командой считается та, у которой суммарный вес по K выше. При равенстве – фиксируется ничья.
- Результаты боя фиксируются в статистике каждого типа машин.
- пп. 1-5 выполняются 5000 раз.
- По накопленным результатам в соответствии с описанным выше алгоритмом производится корректировка значений Кр, а результаты фиксируются как промежуточные.
- пп. 1-7 повторяются достаточное для анализа результатов число раз.
Критерии оценки результата
Эксперимент считается успешным, если в результате определённого числа итераций наблюдается выраженная тенденция, при которой для каждого танка:
- Kpi → Ki
- Wi + Wнi / 2 → 0,5
Результаты моделирования
Результаты эксперимента сведены в таблицу.
Т1 | Т2 | Т3 | Т4 | Т5 | Т6 | Т7 | Т8 | Т9 | Т10 | |
K | 0,8 | 1 | 2 | 4 | 6 | 8 | 16 | 18 | 25 | 28 |
Итерация 1 | 43% 0,96 |
44% 1 |
51% 1,12 |
52% 1,15 |
45% 1,01 |
44% 0,99 |
55% 1,23 |
50% 1,10 |
56% 1,25 |
59% 1,33 |
Итерация 10 | 45% 0,85 |
45% 1 |
46% 1,86 |
48% 3,24 |
50% 2,32 |
51% 2,55 |
53% 5,49 |
52% 5,32 |
53% 7,64 |
53% 8,61 |
Итерация 26 | 50% 0,82 |
49% 1 |
50% 2,11 |
50% 4,15 |
51% 5,85 |
50% 7,81 |
51% 16,08 |
51% 18,01 |
50% 25,45 |
50% 28,15 |
Выводы
- В результате проведенного моделирования установлено, что при заданных начальных исходных данных требуемый результат достигается примерно на 25-27 итерации при начальном Кр = 1 для всех танков. Вероятность победы (с учетом ничьих) при этом стремится к 0,5.
- Установлено, что при зеркальном балансе команд (равное число танков одного типа в командах) эффективность предлагаемого метода балансировки значительно падает, т.к. при зеркальном балансе независимо от реального веса машины её статистика «победы-поражения» также зеркальна, что не позволяет адекватно проводить корректировку балансного веса. Т.к. в игре зеркальный баланс невозможен принципиально, то данная проблема не актуальна.
- Поскольку после достижения машинами своего реального балансного веса последующие перерасчеты дают незначительные колебания значений в ту или иную сторону, то после стабилизации статистики по процентам побед последующие итерации перерасчета K можно проводить значительно реже за больший период, например, за неделю.
- Новым, вводимым в игру машинам, можно задавать K ориентируясь на существующие значения близких по характеристикам машин – через несколько итераций K новой машины примет своё реальное значение.