Балансировщик боёв – традиционно острая тема для всех наших игроков. Именно он зачастую воспринимается как источник незаслуженных побед или обидных поражений, порождая различные версии о принципах его работы и зачастую даже всевозможные «теории заговора». Со времени нашего прошлого рассказа о принципах работы балансировщика прошло уже почти два года, потому стоит обновить информацию.
Основные принципы работы балансировщика не поменялись с момента выхода обновления 2.0. В целом он стал проще, чем тот, который отвечал за составы команд в версии 1.9. Основная причина тому – изменения в игровом режиме, который стал менее ориентирован на сам воздушный бой по себе и уничтожение самолётов, и более сфокусирован на захвате территорий, который достигается разными классами по-разному.
Теперь при добавлении игроков из очереди для балансировщика классы самолётов разделены на две условные группы — PvP и PvE. В первую входят все три истребительных класса, во вторую – штурмовики и бомбардировщики. При составлении команд, которые отправятся в бой, балансировщик подбирает игроков по количеству самолётов из этих групп, но более не учитывает их принадлежность к конкретному классу. Это означает, что, например, в одной команде 7 игроков на самолётах, ориентированных на воздушный бой, будут уравновешены 7 машинами из этой же группы, но конкретный состав этих «семёрок» по классам не будет зеркальным. Это позволяет значительно уменьшить время ожидания боя для всех игроков в очереди.
Главные параметры, которые учитывает балансировщик, собирая арену (бой) – это уровни самолётов, количество звеньев в очереди и командах, и вышеупомянутое соотношение самолётов из разных групп.
Общее правило: максимальная разница между уровнем арены и уровнем самолёта в ней — «-1», т.е. в бою VII уровня могут быть самолёты VI уровня, но не наоборот.
Каждые 2 секунды балансировщик проверяет очередь на наличие ожидающих самолётов и по возможности начинает сборку арены. Алгоритм выглядит следующим образом:
Шаг 1. В арену добавляются звенья. Балансировщик анализирует очередь и добавляет максимум по одному звену в каждую команду. При этом учитывается только уровень самолётов в звеньях, но не их классы. Если в очереди есть звено, которое ожидает боя уже 70 секунд — оно может попасть в бой без пары игроков в противоположной команде.
Шаг 2. Из очереди добавляются одиночные игроки. Вначале состав команд балансируется по группам классов. К примеру, если одно звено состояло из штурмовика и истребителя, а второе из двух «тяжей» — первая команда получит один самолёт PvP-класса, а вторая — одну PvE-машину. При этом будет учитываться суммарный уровень техники в звеньях и добавляемой одиночной техники.
После того, как достигнуто равновесие, балансировщик продолжает добавлять пары игроков (по одному на команду), по возможности — одинакового уровня. Соотношение самолётов из разных групп классов в командах при этом зависит от игрового режима. Например, в режиме «Завоевание» в одной команде может быть максимум 7 PvP-ориентированных самолётов и максимум 4 PvE машин (не одновременно). В других игровых режимах эти настройки значительно отличаются, т.к. в них победа достигается другими действиями. Например, в режиме «Сопровождение» одна из команд в принципе не имеет PvE-самолётов.
Максимальное количество игроков в бою на данный момент – по 9 на команду.
При составлении команд балансировщик суммирует уровни добавленных самолётов игроков в каждой команде и сравнивает результаты, чтобы, с одной стороны, уменьшить время ожидания в очереди, а с другой — обеспечить максимально равные шансы на победу. В боях с 1 игроком в каждой команде разница уровней не допускается, по 2 игрока на команду — возможна разница суммы в 1 уровень, в боях 3х3 и более – до 2 уровней. Эта разница затем уравновешивается ботами.
Шаг 3. Балансировщик с помощью ботов максимально уравновешивает составы команд по уровням и корректирует классовые составы команд. При этом он стремится сделать суммы уровней самолётов в командах одинаковыми, а составы по классам (не по группам классов!) максимально близкими к заданному нами оптимальному соотношению.
Для режима «Завоевание» оно выглядит следующим образом:
Боты добавляются до полного состава арены — 12 против 12 самолётов. Из них 1/3 будет на самолётах максимально допустимого уровня, 2/3 – на 1 уровень ниже. В зависимости от уровня арены их навыки будут отличаться: на I-III уровнях все они новички, на IV-V – бойцы, на VI-X – ветераны.
После завершения этого процесса запускается бой.
Отдельный случай – когда балансировщик находит в очереди одиночных игроков, ожидающих боя более 100 секунд. Для них создаётся арена, в которой команды собираются только из ботов. В неё за ту же команду сразу добавляются все одиночные игроки на самолётах подходящих уровней, ожидающие более 80 секунд. Эта команда дополняется ботами до 12 самолётов и балансируется по уровням и классам командой, полностью состоящей из ботов. После этого сразу запускается бой.
Никакие другие факторы не влияют на составы команд. Не учитываются: модель и комплектация самолёта (в том числе и «Специалист»), использование какого-либо снаряжения или оборудования, премиум аккаунт, процент побед игрока, «карма» (количество выигранных или проигранных боёв за прошедшее время), конкретные аккаунты и т.п.