Итак, несколько дней go я работал над довольно стандартной системой ELO. Игрок может атаковать защиту другого игрока, и в зависимости от результата очки перераспределяются.
Сначала все работало довольно хорошо, но в конечном итоге игроки с более низким рейтингом не смогли найти совпадения, потому что система находит количество матчей:
- Начать с игрока ранга 1
- Go вниз, пока не найдется игрок, который запросил матч
Очевидно, это привело к необходимости запрашивать данные для 2000 игроков, если ранг участника был близок к 2000.
Итак, теперь игроки с низким рейтингом не могут запросить данные.
Я заметил в других популярных играх, таких как Summoners War и Cla sh of Clans, ваш рейтинг мгновенно отображается, когда ваши очки корректируются, и я не могу себе представить, чтобы они спускались вниз по списку каждого игрока, пока не достигли # 200000.
Я не могу использовать первую пришедшую в голову стратегию (игра в угадывание чисел), которая была бы, если бы было 100 игроков, проверьте точки №50. Если ваши баллы ниже, отметьте # 75, ниже: отметьте # 88 и т. Д. c. Это потому, что я не могу проверить № 50, не проверив также № 2, № 3 и т. Д. c из-за характера OrderedDataStore
Я пытаюсь хранить данные таким образом, чтобы:
- Может отображаться 50 лучших игроков
- Алгоритм может быстро найти 4 защиты игроков, близких к вашему рангу
- Вы можете просмотреть свой собственный ранг
Есть решения?