Версия 09:22, 4 апреля 2014 | | Версия 15:09, 7 апреля 2014 |
Строка 4: | | Строка 4: |
| <noinclude> | | | <noinclude> |
| | | | |
? | === Принцип работы === | | + | Балансировщик сука бросает в команду где процент на победу 30 ненавижу |
? | Основа игры «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|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 %) в подавляющем большинстве боёв, так и неожиданные составы боёв, требующие от игроков нестандартных решений. | | + | |
| | | | |
| === Таблица уровней боёв и распределения техники === | | | === Таблица уровней боёв и распределения техники === |
Как пользоваться таблицей:
Определяется уровень и класс искомого танка. Например, танк ИС — тяжёлый танк седьмого уровня.
Соответственно первый столбик — строка 7 — тяжёлые танки — уровни боёв с 7 по 9.
Перемещаясь по столбикам 7-9 можно определить потенциальных противников танка ИС.
В обновлении 0.8.11 из таблицы удален 12-й уровень боев.