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

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

Перейти к: навигация, поиск
Версия 12:29, 8 февраля 2013Версия 12:49, 18 февраля 2013
Добавлено подробное описание по принципу работы балансировщика
Строка 4:Строка 4:
 <noinclude> <noinclude>
 === Принцип работы === === Принцип работы ===
?Игрок нажимает кнопку «В бой!» и попадает в очередь ожидания. Механизм обрабатывает данные боевой машины игрока и присваивает ей числовое значение (вес). В основе расчёта веса техники лежит уровень и класс техники, а также её боевая эффективность. Исходя из веса танка определяется диапазон уровней боёв, в которые может попасть этот танк. После того, как уровень определён, балансировщик начинает подбирать соответствующую этому уровню технику из очереди для формирования команд. Общий вес двух команд при любых условиях всегда будет равным. Артиллерия балансируется отдельно. Когда процесс формирования команд завершён, игроки попадают в бой. В случае, когда в очереди недостаточно техники определённого уровня боёв, составы команд могут быть неполными.+Основа игры "World of Tanks" - бои двух команд, состоящих из 15 боевых машин каждая. Машины поделены на классы (лёгкие, средние и тяжёлые танки, противотанковые самоходные орудия и самоходная гаубичная артиллерия), каждый класс включает в себя 10 уровней "развития" техники. Чтобы "случайные бои" (основной игровой режим) были интересными для игроков, необходимо выполнение трёх важных условий автоматического подбора танков:
 +* Равенство возможностей боевой техники двух противоборствующих команд.
 +* Разнообразие составов команд.
 +* Непредсказуемость хода боя и его итогов.
 + 
 +Эту задачу и выполняет "балансировщик" - модуль серверной части World of Tanks, который добавляет танки в команду, делает их равными по "силе" и отправляет команды в бой. Балансировщик появился в начале закрытого бета-тестирования игры (на альфа-тесте его не было вообще). В самом первом его варианте уровней боёв было всего два ("песок" с уровнями танков 1-2 и общие бои 3-10 уровней). Затем ему на смену пришёл более сложный балансировщик, и появилась первая таблица распределения танков по уровням боёв. В настоящее время доступна таблица для обновления 0.8.3 (см. первое сообщение темы).
 + 
 +Бои в World of Tanks поделены на двенадцать уровней, первые 10 из которых примерно соответствуют уровням боевых машин в деревьях прокачки. Например, тяжёлый танк 4 уровня, в соответствии с вышеприведённой таблицей, может попасть только в бои 4 и 5 уровня. Балансный вес - это скрытый численный параметр, определяющий боевую эффективность каждой машины. Он связан с типом машины, её уровнем и ролью в бою.
 + 
 +Работа балансировщика «случайных боёв» базируется на следующих принципах:
 +* Любая боевая машина может попасть в бои только своего уровня (см. таблицу), за исключением взводов
 +* Место машины в списке команды определяется её балансным весом
 +* Составы команд подбираются на основе статистики за прошедшие полчаса
 +* Суммарный балансный вес двух противоборствующих команд различается не более, чем на 10%, за исключением особых случаев;
 +* Суммарный балансный вес арт-САУ двух противоборствующих команд различается не более, чем на 20%, количество - не более чем на 1, число арт-САУ на команду - не более 5;
 +* Чем больше конкретная машина ждёт своей очереди, тем более высоким становится её приоритет, а если ожидание превышает 1 минуту, балансировщик стремится отправить в бой именно её.
 +* Если обе уже собранные команды не удовлетворяют условиям баланса, они расформировываются и набираются заново.
  
 Балансировщик не учитывает: Балансировщик не учитывает:
Строка 12:Строка 28:
 * уровень прокачки экипажа * уровень прокачки экипажа
 * уровень мастерства игрока * уровень мастерства игрока
 +
 +Балансировщик работает с очередями боевых машин. Каждому уровню и типу боёв соответствует своя очередь, всего очередей 36 (12 уровней боя, 3 различных режима боя). Статистика боёв собирается по каждой из очередей отдельно, причём для САУ собирается своя статистика. На основе собранной статистики для каждого из 15 мест в команде рассчитывается примерный балансный вес и балансировщик подбирает машины в команду, ориентируясь на него.
 +
 +Рассмотрим работу балансировщика на примере. Был выбран американский тяжёлый танк Т14, отличающийся тем, что он может попадать в бои только 2 уровней - 5 и 6 уровень. Для простоты отключим режимы боёв "Штурм" и "Встречный бой". После нажатия кнопки "В бой" танк Т14 попадает в 2 очереди балансировщика, на последнюю позицию в каждой:
 +
 +[[Файл:Balancer_scheme_01.jpg|700px]]
 +
 +Так как танк оказался в конце очереди, приоритет на отправку в бой у него низкий. Однако, балансировщик при подборе машин в команду, просматривает очередь на всю длину, поэтому, если в набираемой команде не хватало именно танка с балансным весом, близким к весу Т14, он может сразу оказаться в команде, направляемой в бой. Но может быть придется и подождать. Балансировщик в каждой из очередей, отправив пару команд в бой, тут же начинает набирать следующую пару. Сначала в команды добавляются арт-САУ, в соответствии с правилами из п.5, которые оказываются в командах на местах, балансные веса которых максимально близки весам этих САУ. Затем балансировщик начинает подбор боевых машин на ещё не занятые места. Сначала подбираются танки на места с большим балансным весом, т.е. сначала в команду добавляются "топы" списка. При добавлении взвода в команду балансировщик стремится к тому, чтобы балансные веса всех танков взвода были близки к весам свободных мест команды, при этом приоритет у танка с наибольшим балансным весом.
 +
 +Балансировщик следит за тем, чтобы суммарные балансные веса обеих команд отличались не более, чем на 10%. Для каждого места в командах очередь просматривается полностью, и из неё выбирается боевая машина, балансный вес которой наиболее близок к балансному весу этого места. Может сложиться такая ситуация (ведь состав очередей на бой непредсказуем), что балансный вес выбранной машины будет заметно отличаться от веса места. В этом случае балансировщик изменяет балансные веса ещё незанятых мест, чтобы скорректировать суммарные веса команд.
 +
 +Когда пара команд собрана, обе команды проверяются на соответствие текущим условиям баланса, и только если эти условия выполняются, команды отправляются в бой. Иначе команды расформировываются и их набор начинается заново. Может случиться и так, что балансировщик не может завершить подбор боевых машин в команды (например, если в очереди оказалось много однотипных машин, которые не подходят к уже отобранным в команды). В этом случае очередь как бы "засыпает", ожидая изменений (например, кто-то выйдет из неё, так как попал в бой другого типа или уровня, либо кто-то добавится, нажав кнопку "В бой!"). В этот момент очередь "просыпается" и балансировщик пробует доукомплектовать команды снова.
 +
 +На схеме показано, что Т14 был отобран в команду на бой 5 уровня, формирование которой завершено, и одновременно с этим в команду на бой 6 уровня, формирование которой продолжается. Так как пара команд для боя 5 уровня удовлетворяет текущим условиям баланса, Т14 идёт в бой именно в этой паре:
 +
 +[[Файл:Balancer scheme 02.jpg|700px]]
 +
 +При этом танк Т14 пропадает из обеих очередей, место, занятое им в команде на бой 6 уровня, освобождается, и балансировщик будет подбирать на это место другую боевую машину. Чем дольше машина игрока находится в очереди, тем более настойчиво балансировщик старается отправить её в бой. При больших сроках ожидания ослабляются критерии отбора. Если отдельный танк или взвод ожидает выхода в бой более 1 минуты, то критерии становятся менее жёсткими, а, начиная со 2 минуты, балансировщик получает разрешение на создание команд неполного состава (но количество боевых машин в командах будет одинаковым). Если же время ожидания машины или взвода в очереди превышает 5 минут, то появляется сообщение, предлагающее выбрать другой танк, и следует переход в ангар.
 +
 +В World of Tanks, несмотря на огромную популярность во всём мире, иногда бывают ситуации, когда количество игроков онлайн мало. Это происходит в первые минуты появления обновлений игры, на новооткрытых кластерах, а также на серверах открытого тестирования новых версий игры. Балансировщик корректно обрабатывает такие ситуации, хотя подбор команд для каждого из уровней и типов боёв в этих условиях серьёзно затруднён. Но в действие вступает, во-первых, система ослабления критериев отбора (например, разница в балансных весах команды может увеличиться с 10% до 20%), если танк долго ждёт своей очереди выйти в бой, во-вторых, балансировщик сам "подстраивается" под ситуацию, ориентируясь на статистику состава команд за последние полчаса.
 +
 +Балансировщик "случайных боёв" World of Tanks постоянно совершенствуется, чтобы обеспечивать выполнение трёх принципов, указанных в начале статьи. В настоящий момент ведётся работа над алгоритмом, призванным обеспечить равномерное распределение лёгких танков по командам. В работе изменения алгоритмов подбора команд для режима "Штурм". Но принципы, заложенные в балансировщик изначально, остаются неизменными, обеспечивая как равные сбалансированные команды (+-10%) в подавляющем большинстве боёв, так и неожиданные составы боёв, требующие от игроков нестандартных решений.
  
 ===Таблица уровней боёв и распределения техники=== ===Таблица уровней боёв и распределения техники===

Версия 12:49, 18 февраля 2013

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

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

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

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

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

Бои в 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%) в подавляющем большинстве боёв, так и неожиданные составы боёв, требующие от игроков нестандартных решений.

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

Уровень Тип \ Уровень боя 1 2 3 4 5 6 7 8 9 10 11
1 Лёгкие
1 Средние
2 Лёгкие
2 Средние
2 ПТ-САУ
2 САУ
3 Лёгкие
3 Средние
3 ПТ-САУ
3 САУ
4 Лёгкие
4 Средние
4 Тяжёлые
4 ПТ-САУ
4 САУ
5 Лёгкие
5 Средние
5 Тяжёлые
5 ПТ-САУ
5 САУ
6 Лёгкие
6 Средние
6 Тяжёлые
6 ПТ-САУ
6 САУ
7 Лёгкие
7 Средние
7 Тяжёлые
7 ПТ-САУ
7 САУ
8 Лёгкие
8 Средние
8 Тяжёлые
8 ПТ-САУ
8 САУ
9 Средние
9 Тяжёлые
9 ПТ-САУ
9 САУ
10 Средние
10 Тяжёлые
10 ПТ-САУ
10 САУ
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
3 uk:Valentine
5 uk:Covenanter
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
5 uk:Matilda Black Prince
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
5 uk:Excelsior
6 uk:Crusader
' :<value_unset_error>
' :<value_unset_error>
6 uk:TOG II*
' :<value_unset_error>
7 china:Type 62
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
8 china:Type 59
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
' :<value_unset_error>
8 china:112
' :<value_unset_error>
' :<value_unset_error>
8 china:T-34-3
8 china:112

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

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

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

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

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