Балансировщик боёв: уровни, классы, боты

 

 

 

Система балансирования сторон в игре построена таким образом, чтобы, с одной стороны, игрокам не приходилось много времени находиться в очереди, а с другой — команды были равноценны относительно уровней и классов техники.

Балансировщик не учитывает характеристики конкретных моделей самолётов, только уровень и класс.

Очередь

Все игроки, нажавшие кнопку «В бой», формируют очередь. Очередь состоит из элементов:

  • одиночные самолеты;
  • звенья из двух самолетов. Для балансировки каждое звено рассматривается как одна неделимая сущность.

 

В первую очередь обрабатываются элементы, дольше стоящие в очереди.

Общий вид алгоритма заполнения комнат

  1. Очередность формирования боёв — от высших уровней к более низким.
  2. Балансировщик прогнозирует количество комнат, которые удастся создать на выбранном уровне боя, на основе количества подходящих для него самолётов в очереди.
  3.  Производится выбор, какую из двух команд заполнять первой. Выбор случаен (50 на 50).
  4. Находящиеся в очереди звенья распределяются равномерно по прогнозированному количеству комнат. На выходе получается множество слабо заполненных комнат.
  5. Эти комнаты дополняются одиночными самолётами, при этом образовывающийся в них дисбаланс по классам и уровням техники «выравнивается» имеющимися в очереди необходимыми машинами.

Подобный процесс проходит каждый «тик» сервера. Т.е. каждый «тик» балансировщик проверяет очередь и, если есть возможность, создаёт новые комнаты и начинает с ними работать, одновременно формируя команды в уже созданных.

Уровни боя

Есть десять уровней боев, по количеству уровней самолетов. Уровень боя соответствует максимальному уровню техники в нём. В комнату может допускаться техника на один уровень меньше уровня боя (в редких случаях — двумя уровнями ниже, если подходящей техники в очереди нет долгое время).

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

Максимальное количество игроков в одной комнате — 22. Оставшиеся восемь ячеек резервируется для ботов, по четыре в каждую команду.

Звенья

Уровень боёв для звена соответствует уровню боёв для самолёта максимального уровня в нём.

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

Классы

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

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

Карма

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

Наполненность арен

Максимально наполненная комната состоит из тридцати участников, где двадцать две ячейки отведены для игроков и восемь для ботов. В случае, если людей мало, балансировщик также отправит их в бой, уравняв между собой. Чем дольше времени не собирается полная комната, тем меньше требований к наполненности этой комнаты для балансировщика. Минимальное количество игроков, которое может быть отправлено в бой — два, по одному за каждую команду.           

Ботменеджер 

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

Количество игроков в комнате Количество ботов
2 18
4 16
6 14
8 12
10 12
12 14
14 16
16 14
18 12
20 10
22 8

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

Комментарии

(37)