/dev/arena/grouping/plan
Посчитать раскладку групп для заданного числа игроков. Ничего не меняет.
Адрес метода
/dev/arena/grouping/plan
Требует сессию пользователя
Только не-прод или админ
Весь раздел /dev/arena доступен, если сервер не продовый либо у игрока стоит флаг админа.
Параметры
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| count | ДА | int | сколько игроков раскладываем |
| size | ДА | int | размер группы; 0 — лига без ограничения |
Результат
{
"response": {
"success": 1,
"count": 1001, "size": 100,
"groups": 11,
"histogram": { "91": 11 },
"total": 1001,
"first": 91, "last": 91
}
}
Что важно знать
Метод ничего не пишет — ни групп, ни игроков не создаёт и не двигает. Только считает.
Зачем существует. Правило ТЗ задано двумя примерами — 1001 и 1000001 игрок. Таких популяций на стенде нет и не будет, а правило проверять надо именно на них: ошибка в арифметике проявилась бы только на проде. Единственный способ — считать раскладку отдельно от данных.
Правило: групп ровно ceil(count / size), дальше count делится между ними максимально ровно.
Не «по size, а остаток в хвост»: при 1001 игроке наивное деление даёт десять групп по 100 и одну с
ОДНИМ человеком, которому не с кем воевать.
Недобор уходит в хвост: первые группы крупнее, последние мельче — ТЗ говорит «размазываем между
остальными (последними по хронологии)». Поля first и last для этого и отданы.
size = 0 означает лигу без ограничения — одна группа на всех. Так устроены низшая лига и Алмаз.