Перейти к содержимому


Балансировщик и уровни боёв


  • Закрытая тема Тема закрыта
В теме одно сообщение

Storm #1 Отправлено 28 Дек 2010 - 21:20

    Агент контрразведки

  • Разработчики
  • Publishing Producer
  • 4943 боя
  • 24 119
  • Регистрация:
    26.04.2009

*
Популярное сообщение!

Обновлено для версии 9.15.1

Картинка, отражающая текущее распределение танков по боям:


Балансировщик подбирает танки в бой следующим образом:
Берётся танк из очереди и определяется его тип и уровень. Например танк ИС - тяжёлый танк, уровень 7.
Берём строчку 7-тяжелые и смотрим, в какие уровни боёв (столбцы таблицы) попадает этот танк. В нашем примере это уровни (столбцы) с 7 по 9.
Рандомно выбираем уровень от 7 до 9 включительно. Например 8.
Потом балансировщик начинает обрабатывать очередь танков, выбирая из них танки, которые могут участвовать в 8-м уровне боёв (8-й столбец) и составляет из них команды.

 


Продюсер проекта World of Tanks.


BYBY3EJIA #2 Отправлено 11 Фев 2013 - 16:04

    Шутюзела

  • Разработчики
  • Community Manager
  • 32418 боев
  • 14 408
  • [WG] WG
  • Регистрация:
    30.10.2010

*
Популярное сообщение!

Принципы работы балансировщика


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

Эту задачу и выполняет "балансировщик" - модуль серверной части World of Tanks, который добавляет танки в команду, делает их равными по "силе" и отправляет команды в бой. Балансировщик появился в начале закрытого бета-тестирования игры (на альфа-тесте его не было вообще). В самом первом его варианте уровней боёв было всего два ("песок" с уровнями танков 1-2 и общие бои 3-10 уровней). Затем ему на смену пришёл более сложный балансировщик, и появилась первая таблица распределения танков по уровням боёв. В настоящее время доступна таблица для обновления 0.8.11 (см. первое сообщение темы).
Бои в World of Tanks поделены на одинадцать уровней, первые 10 из которых примерно соответствуют уровням боевых машин в деревьях прокачки. Например, тяжёлый танк 4 уровня, в соответствии с вышеприведённой таблицей, может попасть только в бои 4 и 5 уровня. Балансный вес - это скрытый численный параметр, определяющий боевую эффективность каждой машины. Он связан с типом машины, её уровнем и ролью в бою.
Работа балансировщика "случайных боёв" базируется на следующих принципах:
  1. Любая боевая машина может попасть в бои только своего уровня (см. таблицу), за исключением взводов;
  2. Место машины в списке команды определяется её балансным весом;
  3. Боевые машины подбираются в команды на основе статистики составов уже собранных команд за прошедшие полчаса;
  4. Суммарный балансный вес двух противоборствующих команд различается не более, чем на 10%, за исключением особых случаев;
  5. Суммарный балансный вес арт-САУ двух противоборствующих команд различается не более, чем на 20%, количество - не более чем на 1, число арт-САУ на команду - не более 5;
  6. Чем больше конкретная машина ждёт своей очереди, тем более высоким становится её приоритет, а если ожидание превышает 1 минуту, балансировщик стремится отправить в бой именно её;
  7. Если обе уже собранные команды не удовлетворяют условиям баланса, они расформировываются и набираются заново;
  8. Балансировщик не учитывает:
  • Национальную принадлежность танка;
  • Модули танка (орудие, башня, двигатель и т.д.);
  • Установленное на танк дополнительное оборудование и/или снаряжение;
  • Уровень прокачки экипажа;
  • Уровень мастерства игрока.

Балансировщик работает с очередями боевых машин. Каждому уровню и типу боёв соответствует своя очередь, всего очередей 33 (11 уровней боя, 3 различных режима боя). Статистика боёв собирается по каждой из очередей отдельно, причём для САУ собирается своя статистика. На основе собранной статистики для каждого из 15 мест в команде рассчитывается примерный балансный вес и балансировщик подбирает машины в команду, ориентируясь на него.
Рассмотрим работу балансировщика на примере. Был выбран американский тяжёлый танк Т14, отличающийся тем, что он может попадать в бои только 2 уровней - 5 и 6 уровень. Для простоты отключим режимы боёв "Штурм" и "Встречный бой". После нажатия кнопки "В бой" танк Т14 попадает в 2 очереди балансировщика, на последнюю позицию в каждой:


Так как танк оказался в конце очереди, приоритет на отправку в бой у него низкий. Однако, балансировщик при подборе машин в команду, просматривает очередь на всю длину, поэтому, если в набираемой команде не хватало именно танка с балансным весом, близким к весу Т14, он может сразу оказаться в команде, направляемой в бой. Но может быть придется и подождать. Балансировщик в каждой из очередей, отправив пару команд в бой, тут же начинает набирать следующую пару. Сначала в команды добавляются арт-САУ, в соответствии с правилами из п.5, которые оказываются в командах на местах, балансные веса которых максимально близки весам этих арт-САУ. Затем балансировщик начинает подбор боевых машин на ещё не занятые места. Сначала подбираются танки на места с большим балансным весом, т.е. сначала в команду добавляются "топы" списка. При добавлении взвода в команду балансировщик стремится к тому, чтобы балансные веса всех танков взвода были близки к весам свободных мест команды, при этом приоритет у танка с наибольшим балансным весом.
Балансировщик следит за тем, чтобы суммарные балансные веса обеих команд отличались не более, чем на 10%. Для каждого места в командах очередь просматривается полностью, и из неё выбирается боевая машина, балансный вес которой наиболее близок к балансному весу этого места. Может сложиться такая ситуация (ведь состав очередей на бой непредсказуем), что балансный вес выбранной машины будет заметно отличаться от веса места. В этом случае балансировщик изменяет балансные веса ещё незанятых мест, чтобы скорректировать суммарные веса команд.
Когда пара команд собрана, обе команды проверяются на соответствие текущим условиям баланса, и только если эти условия выполняются, команды отправляются в бой. Иначе команды расформировываются и их набор начинается заново. Может случиться и так, что балансировщик не может завершить подбор боевых машин в команды (например, если в очереди оказалось много однотипных машин, которые не подходят к уже отобранным в команды). В этом случае очередь как бы "засыпает", ожидая изменений (например, кто-то выйдет из неё, так как попал в бой другого типа или уровня, либо кто-то добавится, нажав кнопку "В бой!"). В этот момент очередь "просыпается" и балансировщик пробует доукомплектовать команды снова.
На схеме показано, что Т14 был отобран в команду на бой 5 уровня, формирование которой завершено, и одновременно с этим в команду на бой 6 уровня, формирование которой продолжается. Так как пара команд для боя 5 уровня удовлетворяет текущим условиям баланса, Т14 идёт в бой именно в этой паре:


При этом танк Т14 пропадает из обеих очередей, место, занятое им в команде на бой 6 уровня, освобождается, и балансировщик будет подбирать на это место другую боевую машину. Чем дольше машина игрока находится в очереди, тем более настойчиво балансировщик старается отправить её в бой. При больших сроках ожидания ослабляются критерии отбора. Если отдельный танк или взвод ожидает выхода в бой более 1 минуты, то критерии становятся менее жёсткими, а, начиная с 3 минуты, балансировщик получает разрешение на создание команд неполного состава (но количество боевых машин в командах будет одинаковым). Если же время ожидания машины или взвода в очереди превышает 5 минут, то появляется сообщение, предлагающее выбрать другой танк, и следует переход в ангар.
В World of Tanks, несмотря на огромную популярность во всём мире, иногда бывают ситуации, когда количество игроков онлайн мало. Это происходит в первые минуты появления обновлений игры, на новооткрытых кластерах, а также на серверах открытого тестирования новых версий игры. Балансировщик корректно обрабатывает такие ситуации, хотя подбор команд для каждого из уровней и типов боёв в этих условиях серьёзно затруднён. Но в действие вступает, во-первых, система ослабления критериев отбора (например, разница в балансных весах команды может увеличиться с 10% до 20%), если танк долго ждёт своей очереди выйти в бой, во-вторых, балансировщик сам "подстраивается" под ситуацию, ориентируясь на статистику состава команд за последние полчаса.
===============================================
Балансировщик "случайных боёв" World of Tanks постоянно совершенствуется, чтобы обеспечивать выполнение трёх принципов, указанных в начале статьи. В настоящий момент ведётся работа над алгоритмом, призванным обеспечить равномерное распределение лёгких танков по командам. В работе изменения алгоритмов подбора команд для режима "Штурм". Но принципы, заложенные в балансировщик изначально, остаются неизменными, обеспечивая как равные сбалансированные команды (+-10%) в подавляющем большинстве боёв, так и неожиданные составы боёв, требующие от игроков нестандартных решений.

===============================================

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

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

Как балансировщик определяет уровень боёв в который попадёт взвод? Максимальный уровень боев, в который может попасть взвод, равняется максимальному уровню боев среди техники, входящей во взвод. Минимальная граница уровня боев взвода определяется сравнением минимальных уровней боев каждой машины во взводе, и наиболее высокий из них принимается за общий минимальный уровень боев данного взвода. 

===============================================

Особенности формирования шаблона* команд и его нюансы

Корректный шаблон создаётся спустя 30 минут работы балансировщика. С ним балансировщик точно знает, какую технику брать из очереди, в следствии чего игроки меньше ждут в очереди начало боя. Балансировщик постоянно следит, на какой технике игроки входят в бой и, если нужно, вносит изменения в шаблон.

В первые полчаса балансировщик работает без шаблона, из-за чего могут сформировываться не совсем сбалансированные команды. Процент таких боёв крайне невелик по отношению ко всем боям на сервере.

===============================================

Ответы на основные вопросы:

1. Существует ли льготный режим боев для недавно приобретенной стоковой техники?

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

2. Имеют ли премиумные машины приоритет на попадание вверх списка команды?

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

3. В какой момент осуществляется выбор карты? До или после формирования команды?

Ответ: Выбор карты осуществляется после формирования обеих команд.






Количество пользователей, просматривающих этот форум: 2

0 пользователей, 2 гостей, 0 анонимных