Добро пожаловать на Wargaming.net Wiki!
Варианты
/
/
Балансировщик

Балансировщик

Перейти к: навигация, поиск
Game_manual.png
Балансировщик — программный механизм, в чьи функции входит распределение игроков по командам перед началом боя.


Принцип работы

Основа игры «World of Tanks» — бои двух команд, состоящих из 15 боевых машин каждая. Машины поделены на классы (лёгкие, средние и тяжёлые танки, противотанковые самоходные орудия и самоходная гаубичная артиллерия), каждый класс включает в себя 10 уровней «развития» техники. Чтобы «случайные бои» (основной игровой режим) были интересными для игроков, необходимо выполнение трёх важных условий автоматического подбора танков:

  • Равенство возможностей боевой техники двух противоборствующих команд.
  • Разнообразие составов команд.
  • Непредсказуемость хода боя и его итогов.

Эту задачу и выполняет «балансировщик» — модуль серверной части World of Tanks, который добавляет танки в команду, делает их равными по «силе» и отправляет команды в бой. Балансировщик появился в начале закрытого бета-тестирования игры (на альфа-тесте его не было вообще). В самом первом его варианте уровней боёв было всего два («песок» с уровнями танков 1-2 и общие бои 3-10 уровней). Затем ему на смену пришёл более сложный балансировщик, и появилась первая таблица распределения танков по уровням боёв.

Бои в World of Tanks поделены на двенадцать уровней, первые 10 из которых примерно соответствуют уровням боевых машин в деревьях прокачки. Например, тяжёлый танк 4 уровня, в соответствии с вышеприведённой таблицей, может попасть только в бои 4 и 5 уровня. Балансный вес — это скрытый численный параметр, определяющий боевую эффективность каждой машины. Он связан с типом машины, её уровнем и ролью в бою.

Работа балансировщика «случайных боёв» базируется на следующих принципах:

  • Любая боевая машина может попасть в бои только своего уровня (см. таблицу), за исключением взводов
  • Место машины в списке команды определяется её балансным весом
  • Боевые машины подбираются в команды на основе статистики составов уже собранных команд за прошедшие полчаса
  • Суммарный балансный вес двух противоборствующих команд различается не более, чем на 10 %, за исключением особых случаев;
  • Суммарный балансный вес САУ двух противоборствующих команд различается не более, чем на 20 %, количество — не более чем на 1, число САУ на команду — не более 5;
  • Чем больше конкретная машина ждёт своей очереди, тем более высоким становится её приоритет, а если ожидание превышает 1 минуту, балансировщик стремится отправить в бой именно её.
  • Если обе уже собранные команды не удовлетворяют условиям баланса, они расформировываются и набираются заново.

Балансировщик не учитывает:

  • национальную принадлежность танка
  • модули танка (орудие, башня, двигатель и т. д.)
  • установленное на танк дополнительное оборудование и/или снаряжение
  • уровень прокачки экипажа
  • уровень мастерства игрока

Балансировщик работает с очередями боевых машин. Каждому уровню и типу боёв соответствует своя очередь, всего очередей 36 (12 уровней боя, 3 различных режима боя). Статистика боёв собирается по каждой из очередей отдельно, причём для САУ собирается своя статистика. На основе собранной статистики для каждого из 15 мест в команде рассчитывается примерный балансный вес и балансировщик подбирает машины в команду, ориентируясь на него.

Рассмотрим работу балансировщика на примере. Был выбран американский тяжёлый танк Т14, отличающийся тем, что он может попадать в бои только 2 уровней — 5 и 6 уровень. Для простоты отключим режимы боёв «Штурм» и «Встречный бой». После нажатия кнопки «В бой» танк Т14 попадает в 2 очереди балансировщика, на последнюю позицию в каждой:

Balancer_scheme_01.jpg

Так как танк оказался в конце очереди, приоритет на отправку в бой у него низкий. Однако, балансировщик при подборе машин в команду, просматривает очередь на всю длину, поэтому, если в набираемой команде не хватало именно танка с балансным весом, близким к весу Т14, он может сразу оказаться в команде, направляемой в бой. Но может быть придется и подождать. Балансировщик в каждой из очередей, отправив пару команд в бой, тут же начинает набирать следующую пару. Сначала в команды добавляются САУ, в соответствии с правилами из п.5, которые оказываются в командах на местах, балансные веса которых максимально близки весам этих САУ. Затем балансировщик начинает подбор боевых машин на ещё не занятые места. Сначала подбираются танки на места с большим балансным весом, то есть сначала в команду добавляются «топы» списка. При добавлении взвода в команду балансировщик стремится к тому, чтобы балансные веса всех танков взвода были близки к весам свободных мест команды, при этом приоритет у танка с наибольшим балансным весом.

Балансировщик следит за тем, чтобы суммарные балансные веса обеих команд отличались не более, чем на 10 %. Для каждого места в командах очередь просматривается полностью, и из неё выбирается боевая машина, балансный вес которой наиболее близок к балансному весу этого места. Может сложиться такая ситуация (ведь состав очередей на бой непредсказуем), что балансный вес выбранной машины будет заметно отличаться от веса места. В этом случае балансировщик изменяет балансные веса ещё незанятых мест, чтобы скорректировать суммарные веса команд.

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

На схеме показано, что Т14 был отобран в команду на бой 5 уровня, формирование которой завершено, и одновременно с этим в команду на бой 6 уровня, формирование которой продолжается. Так как пара команд для боя 5 уровня удовлетворяет текущим условиям баланса, Т14 идёт в бой именно в этой паре:

Balancer_scheme_02.jpg

При этом танк Т14 пропадает из обеих очередей, место, занятое им в команде на бой 6 уровня, освобождается, и балансировщик будет подбирать на это место другую боевую машину. Чем дольше машина игрока находится в очереди, тем более настойчиво балансировщик старается отправить её в бой. При больших сроках ожидания ослабляются критерии отбора. Если отдельный танк или взвод ожидает выхода в бой более 1 минуты, то критерии становятся менее жёсткими, а, начиная со 2 минуты, балансировщик получает разрешение на создание команд неполного состава (но количество боевых машин в командах будет одинаковым). Если же время ожидания машины или взвода в очереди превышает 5 минут, то появляется сообщение, предлагающее выбрать другой танк, и следует переход в ангар.

В World of Tanks, несмотря на огромную популярность во всём мире, иногда бывают ситуации, когда количество игроков онлайн мало. Это происходит в первые минуты появления обновлений игры, на новооткрытых кластерах, а также на серверах открытого тестирования новых версий игры. Балансировщик корректно обрабатывает такие ситуации, хотя подбор команд для каждого из уровней и типов боёв в этих условиях серьёзно затруднён. Но в действие вступает, во-первых, система ослабления критериев отбора (например, разница в балансных весах команды может увеличиться с 10 % до 20 %), если танк долго ждёт своей очереди выйти в бой, во-вторых, балансировщик сам «подстраивается» под ситуацию, ориентируясь на статистику состава команд за последние полчаса.

Балансировщик «случайных боёв» World of Tanks постоянно совершенствуется, чтобы обеспечивать выполнение трёх принципов, указанных в начале статьи. В настоящий момент ведётся работа над алгоритмом, призванным обеспечить равномерное распределение лёгких танков по командам. В работе изменения алгоритмов подбора команд для режима «Штурм». Но принципы, заложенные в балансировщик изначально, остаются неизменными, обеспечивая как равные сбалансированные команды (±10 %) в подавляющем большинстве боёв, так и неожиданные составы боёв, требующие от игроков нестандартных решений.

Таблица уровней боёв и распределения техники

Ballance_table_091.jpg Ballance_table_091_prem.jpg

Как пользоваться таблицей: Определяется уровень и класс искомого танка. Например, танк ИС — тяжёлый танк седьмого уровня. Соответственно первый столбик — строка 7 — тяжёлые танки — уровни боёв с 7 по 9. Перемещаясь по столбикам 7-9 можно определить потенциальных противников танка ИС.

В обновлении 0.8.11 из таблицы удален 12-й уровень боев.

Ограничения по картам

Внимание, в данном разделе идет речь об уровнях боев (столбцы в таблице), а не об уровнях танков.

Низкоуровневые бои проводятся на ограниченном наборе карт. В частности,
1 уровень: Химмельсдорф, Зимний Химмельсдорф, Рудники, Провинция и Малиновка.
2 и 3 уровни: Химмельсдорф, Зимний Химмельсдорф, Рудники, Провинция, Малиновка, Карелия, Прохоровка, Энск.
4 уровень и выше: все, кроме Провинции (доступна только для 1-3 уровней) и Уайдпарк (доступна только для 4-6 уровней).

Видео

Источники информации