Большинство онлайн-игр произвольно формирует команды. Часто времена до пользователя, и они выберут быстрый сервер со свободным слотом. Это поведение производит несправедливые команды, и люди бушуют выход. Путем отслеживания помех игрока (или каких-либо помех, которые могут быть собраны), как можно выбрать команды, которые максимально справедливы?
Одной из наиболее известных сейчас систем является алгоритм Microsoft TrueSkill .
Люди также пытались адаптировать систему Эло для командного подбора игроков, хотя она больше предназначена для пар 1-на-1.
Один из способов - просто создать список игроков, ищущих совпадения в любой момент времени, отсортированный по рангу игрока.Как только вы наберете достаточное количество людей, чтобы начать новый матч (или, возможно, на два меньше, чем требуется), сгруппируйте их так:
и т. Д. и т.д. и т.п., пока ваши команды не будут заполнены.
Если вы решили начать новый матч с меньшим, чем требуется, то пришло время позволить игрокам подождать, пока к ним присоединятся новые люди. Как только к вам присоединится новый человек, вы захотите включить его в открытую команду с наименьшим общим счетом.
В качестве альтернативы, если вы хотите избежать игр, в которых в одной команде сочетаются хорошие и плохие игроки, вы можете разделить всех на уровни , (группы на основе их рейтинга) и подбирать людей только из одной и той же команды. ярус. Для этого потребуется новый открытый / отсортированный список для каждого дополнительного уровня.
Пример
Игра 4 на 4
A - 1000 очков
B - 800 очков
C - 600 очков
D - 400 очков
E - 200 очков
F - 100 очков
Как только вы получите эти шесть очков, сгруппируйте их в команды как таковые:
Команда 1: A, F, D (общий счет 1500)
Команда 2: B, E, C (общий счет 1600)
Теперь ждем, когда к нам присоединятся еще два игрока.
Во-первых, игрок E получает 500 очков. Он переходит в Команду 1, потому что у них более низкий общий счет.
Затем игрок F получает 800 очков. Он переходит в Команду 2, потому что это единственная оставшаяся открытая команда.
Всего команд:
Команда 1: A, F, D, E (общий счет 2000)
Команда 2: B, E, C, F (общий счет 2400)
Обратите внимание, что команды были на самом деле довольно честно, пока не пришли последние два. Честно говоря, лучший способ - создать матч только тогда, когда у вас достаточно игроков, чтобы начать его. Но тогда время ожидания может оказаться слишком большим для игрока.
Отрегулируйте, сколько вам нужно, прежде чем формировать матч. Меньше = меньше времени ожидания, более вероятно несправедливо. Выше = больше времени ожидания, менее вероятно несправедливо.
Если у вас есть экран перед игрой, то нижний также предоставит больше времени людям, чтобы поболтать и поговорить со своими будущими товарищами по команде во время ожидания.
После моего предыдущего ответа я понял, что если вы хотите по-настоящему фантазировать, вы можете использовать действительно простую, но мощную идею: цепи Маркова.
Интуитивная идея использования цепи Маркова выглядит примерно так:
Эта идея, например, успешно использовалась для реализации алгоритма ранжирования страниц Google. Чтобы описать, как вы можете его использовать, рассмотрите следующее:
Некоторые предостережения: существует несколько проблем при прямом применении, самая большая проблема будет в разделенных паутинах (то есть ваша цепь Маркова не будет несократимой и, следовательно, не будет гарантированно сходиться силовой метод). Удачно для вас, Google справился со всеми этими и другими проблемами при реализации своего алгоритма ранжирования страниц, и все, что вам остается, это посмотреть, как они обходят эти проблемы, если вы так склонны.
Трудно оценить мастерство любого игрока по единой метрике, и такой метод склонен к злоупотреблениям. Однако, если вам важно реализовать что-то простое и хорошо работающее, попробуйте следующее:
Это имеет очевидный недостаток в случае, когда у игрока соотношение побед и поражений может быть 5-0, а у другого 50-20, у первого бесконечный процент, а у другого более разумный. Логично, что система подбора признает это и будет гораздо более уверена в том, что последний игрок обладает более высоким мастерством из-за требуемого постоянства; однако, выставление этих двух игроков друг против друга, вероятно, было бы хорошей вещью, потому что игрок 5-0, вероятно, пытается работать с системой, играя против более слабых игроков, поэтому выставление его против стабильно хорошего игрока пойдет на пользу всем.
Заметьте, я говорю по опыту игры только в стратегические игры, такие как Warcraft 3, где это типичное поведение при подборе игроков. Мне кажется, что процент побед над поражениями - это отличная метрика, по которой можно подбирать игроков.