Repository files navigation
Есть список пользователей(pool), в который добавляются пользователи через POST /users.
Алгоритм запускается с частотой указанной при старте сервиса (TICKER_FREQUENCY).
Пользователи каждый раз сортируются по времени ожидания в очереди.
Берётся первый пользователь и ему подыскивается команда перебором остальных пользователей.
Команда подбирается таким образом, чтобы разница между skill и latency первого игрока и остальными не была больше
чем DIFF_SKILL, DIFF_LATENCY.
Если команду удалось найти, то из этих пользователей формируется группа, а сами пользователи удаляются из пула.
Если команду не удалось найти, пользователи, из которых формировалась группа, возвращаются назад в пул.
Если команду не удалось найти, то берётся следующий пользователь и для него осуществляется попытка подбора команды.
Далее переходим опять к пункту 5.
Цикл заканчивается если найдена команда или осуществлён перебор всех пользователей.
Сложность перебора пользователей будет в худшем случае O(n^2).
Границы заданы жёстко DIFF_SKILL, DIFF_LATENCY, можно предусмотреть условия их увеличения.
Больше тестов.
About
matchmaker
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.