После просмотра программы "Популярная механика", посвящённой работе балансировщика "случайных боёв", неизбежно возникают вопросы, требующие дополнительного освещения.
Но сначала подчеркнём ещё раз то, что уже было сказано в программе:
В алгоритмах балансировщика заложена возможность сбора нестандартных команд. Число боёв таких команд не должно превышать 5% от общего количества боёв, однако в конкретной ситуации у конкретного игрока этот процент может варьироваться, в полном соответствии с Теорией вероятностей. Например, если вы сыграли 10 боёв подряд на ИС-3, и в 3 (15%) из этих боёв наблюдали нарушение "правила первых 5 мест" (не было равенства машин по уровню), то это не является ошибкой балансировщика и скорее всего в следующих 10 боях не повторится.
Балансировщик стремится привести составы команд в соответствие с текущим состоянием очереди, поэтому в случаях, когда состав необычен, шаблон набора боевых машин в команду может значительно отличаться от эталонного (используемого сразу после старта серверов). Статистика уже отправленных в бой команд влияет на эталонный шаблон с первых минут, и уже через полчаса шаблон соответствует текущему состоянию очереди и "отслеживает" изменения в её составе. Например, во время публичного тестирования обновлений игры очередь может оказаться заполненной однотипными танками, которые участники теста берут в первую очередь, и можно заметить, что в командах всё больше и больше этих "популярных" танков, а время ожидания боя на них сокращается.
Если боевая машина стоит в очереди на бой более 1 минуты, то балансировщик стремится отправить в бой именно её, ослабляя требования к составам команд. Но в бой уходит 30 машин (2 команды по 15), и даже если вы ждали менее 1 минуты, вы всё равно можете попасть в бой, состав команд в котором подобран именно под такого настойчивого игрока. Ещё одна причина появления нестандартных составов - взводы. Если взвод собран из однотипных машин (например 3 тяжёлых танка VII уровня), балансер легко подберёт команду такому взводу. А если во взводе собраны очень разные танки, например тяжёлый 10 уровня и 2 "брелка" 2 уровня? Балансер корректно обрабатывает и такую ситуацию, однако состав обеих команд скорее всего будет необычным. Ещё одна разновидность взводов, под которые балансировщик может подобрать нестандартные команды - взводы артиллерии либо лёгких танков-"разведчиков". Эти классы машин в игре балансируются по-своему, а взводы, собранные из них, не должны нарушать правила балансировки.
Собирая команду на бой, балансировщик заполняет незанятые места в ней, двигаясь от 1 к 15 ячейке и пропуская уже заполненные. Очередь просматривается балансировщиком на всю длину и из неё выбирается очередная машина, балансный вес которой максимально близок к весу текущей ячейки. Однако, если веса всё же различаются (в очереди не оказалось танка с нужным весом), то ячейка заполняется, а балансные веса ячеек, оставшихся незанятыми, корректируются так, чтобы не выйти за 10% (20% в случае наличия в очереди игрока, который ждёт боя более 3 минут) разницы суммарных весов команд. Именно этим объясняются случаи выдачи танков "на сдачу", когда на 15 месте в команде оказывается слабый танк: балансировщик несколько раз корректировал балансные веса ячеек, и вес последней незанятой оказался минимально допустимым.
Ячейки заполняются в обеих командах синхронно, от 1-й до 15-й. "Пересортировка" 30 уже отобранных боевых машин с целью обеспечения равенства составов не производится, и если в паре команд одна содержит группу однотипных машин, а вторая - нет, то при соблюдении прочих условий балансировщика такая пара команд отправится в бой. При заполнении незанятых ячеек в команде, начиная с 6-й, балансер не учитывает тип и уровень машины в ячейке противоположной команды под тем же номером, поэтому сравнивать команды "по парам машин" имеет смысл только в первых 5 ячейках. Но и в них "равенство пар" не гарантировано, так как для долго ожидающих в очереди машин это правило отменяется.
Если количество игроков на сервере мало, либо в очереди избыток боевых машин определённых типов, то время ожидания боя может расти, и в этом случае допускаются следующие послабления в правилах подбора команд:
Могут создаваться бои, где больше 5 арт-САУ на команду (если у какого-либо игрока время ожидания в очереди превысило 3 минуты);
Могут формироваться команды неполного состава (7-14 машин), при равном количестве машин на команду (если у какого-либо игрока время ожидания в очереди превысило 3 минуты);
Лёгкие танки с повышенным балансным весом могут занимать места тяжёлых и средних танков на топ-позициях команды;
Может появиться заметное неравенство классов техники и её уровней, вплоть до разницы в суммарных балансных весах команд в несколько очков (равенство соблюдается только для арт-САУ);
Начиная с 7 уровня боя на топ-позиции команды может оказаться ПТ-САУ, средний танк или даже арт-САУ;
Танк вообще не попадает в бой и по истечении 5 минут отправляется назад в ангар.
Всё вышеперечисленное - частные случаи работы балансировщика.