Удивительная разница, которую вы испытываете в многопользовательских играх, состоит в том, что разные люди с разными рейтингами «встают в очередь» в разное время.
По системе ELO в идеале все игроки должны быть сопоставлены с доступным игроком ссамый близкий счет им.Поскольку, если я правильно понимаю, 64 «игрока» в вашей игре всегда доступны, эта комбинация приводит к отсутствию разнообразия, поскольку оптимальные совпадения всегда будут, ну, в общем, оптимальными.
Чтобы решить эту проблему, яПредложить приоритетную очередь, основанную на том, когда вашим «игрокам» хочется снова играть.Например, если кто-то хочет сделать длинный перерыв, он может получить низкий приоритет и быть размещенным ближе к концу очереди, то есть пройдет некоторое время, прежде чем вы снова увидите их.Если кто-то хочет сделать небольшой перерыв, возможно, после примерно 10 матчей, вы снова увидите их в матче.
Это «желание» может быть выполнено случайным образом, и вы можете назначить разные характеристики каждому персонажуискажите это поведение, например, «победа над игроком с более высоким ELO увеличит вероятность того, что этот игрок снова сыграет раньше».С точки зрения игрового дизайна, эти личности делают персонажей более интересными для меня, заставляя меня хотеть остаться.
Итак, у вас есть упорядоченный список игроков, которые хотят играть.Я могу подумать о трех подходах, которые вы могли бы предпринять для фактического создания матча:
- Посмотрите на первых 5 игроков в очереди и выберите лучший матч
- Подберите первого игрока с еголучший матч в следующих 4 игроках в очереди (по-видимому, дольше всех ждал, поэтому должен быть поставлен в очередь немедленно, независимо от честности матча)
- комбинация обоих, где, если человек во главесписок не выбирается, он увеличивается в «энтропии», что влияет на вычисление ELO, делая их более вероятными для сопоставления
Edit С точки зрения реализации,Я бы рекомендовал использовать дельта-список вместо фактической очереди приоритетов, поскольку игроки должны «повышаться» в ожидании.