Re: Предложения по улучшению мода
Posted: 12 Jun 2016, 11:10
Ну как-то так (пытаюсь восстановить в памяти).
1) Берем всех игроков обоих команд, сводим в одну таблицу по очкам (рейтингу перса/кд перса/попугаям - не уверен, по какому принципу лучше оценивать). В любом случае, получаем одну таблицу с распределением игроков по местам.
2) Раздаем очки обратно пропорциональные месту в таблице каждому игроку (т.е., например всего игроков 10, 1ое место получит 10 очков, 10ое место получит одно очко).
3) Находим самую большую группу игроков одного клана.
4.1) Если их больше половины, отбираем из них половину с очками как можно ближе к середине (в указанном чуть выше примере в сумме получается 55 очков, т.е. середина должна быть 27-28 очков).
4.2) Если группа составляет ровно половину игроков, то балансим их в одну тиму.
4.3) Если меньше половины, то делим общую таблицу на классы. Классы каким-то образом определяются в списке персонажей
но для упрощения можно взять нативные конник, стрелок, пехотинец.
Далее начинаем делить, предположим, конницу.
4.3.1) Если конницы в той 1ой группе достаточно (или даже больше, чем половина), переходим к следующему классу.
4.3.2) Если нужно дополнить, ищем другие группы игроков одного клана, включающие в себя конницу (причем, чтобы её было не больше необходимого кол-ва) и не превыщающие половины игроков в сумме с уже распределенными группами.
4.3.2.1) Если нашлось несколько подходящих групп, выбираем наиболее подходящую группу по каким-нибудь критериям (наибольшее кол-во конницы, наименьшее кол-во посторонних классов, наиболее подходящий рейтинг - чтобы средний рейтинг получившейся группы был ближе всего к середине), повторяем п. 4.3.2.
4.3.2.2) Если нашлась только одна подходящая группа, добавляем её, дальше дополняем одиночными игроками, опять же, опираясь на средний рейтинг, как и в предыдущем пункте. Дополняем пока конницы не станет достаточно, либо не кончатся одиночные игроки.
Повторяем п. 4.3.1-4.3.2 для остальных классов.
5) Вот и поделили, PROFIT.
Этот алгоритм опирается в первую очередь на клановую принадлежность, затем на классы и в последнюю очередь на рейтинг. В отдельных случаях могут быть проколы, но чтобы прийти к идеальному балансу, алгоритм придется очень сильно усложнять, что ударит по производительности. Хотя, возможно, даже приведенный алгоритм слишком сложный.
1) Берем всех игроков обоих команд, сводим в одну таблицу по очкам (рейтингу перса/кд перса/попугаям - не уверен, по какому принципу лучше оценивать). В любом случае, получаем одну таблицу с распределением игроков по местам.
2) Раздаем очки обратно пропорциональные месту в таблице каждому игроку (т.е., например всего игроков 10, 1ое место получит 10 очков, 10ое место получит одно очко).
3) Находим самую большую группу игроков одного клана.
4.1) Если их больше половины, отбираем из них половину с очками как можно ближе к середине (в указанном чуть выше примере в сумме получается 55 очков, т.е. середина должна быть 27-28 очков).
4.2) Если группа составляет ровно половину игроков, то балансим их в одну тиму.
4.3) Если меньше половины, то делим общую таблицу на классы. Классы каким-то образом определяются в списке персонажей
но для упрощения можно взять нативные конник, стрелок, пехотинец.
Далее начинаем делить, предположим, конницу.
4.3.1) Если конницы в той 1ой группе достаточно (или даже больше, чем половина), переходим к следующему классу.
4.3.2) Если нужно дополнить, ищем другие группы игроков одного клана, включающие в себя конницу (причем, чтобы её было не больше необходимого кол-ва) и не превыщающие половины игроков в сумме с уже распределенными группами.
4.3.2.1) Если нашлось несколько подходящих групп, выбираем наиболее подходящую группу по каким-нибудь критериям (наибольшее кол-во конницы, наименьшее кол-во посторонних классов, наиболее подходящий рейтинг - чтобы средний рейтинг получившейся группы был ближе всего к середине), повторяем п. 4.3.2.
4.3.2.2) Если нашлась только одна подходящая группа, добавляем её, дальше дополняем одиночными игроками, опять же, опираясь на средний рейтинг, как и в предыдущем пункте. Дополняем пока конницы не станет достаточно, либо не кончатся одиночные игроки.
Повторяем п. 4.3.1-4.3.2 для остальных классов.
5) Вот и поделили, PROFIT.
Этот алгоритм опирается в первую очередь на клановую принадлежность, затем на классы и в последнюю очередь на рейтинг. В отдельных случаях могут быть проколы, но чтобы прийти к идеальному балансу, алгоритм придется очень сильно усложнять, что ударит по производительности. Хотя, возможно, даже приведенный алгоритм слишком сложный.
- Off Topic
- увы, поездка на шашлыки накрылась медным тазом, погода