Рейтинг игрока за игру со случайными командами - PullRequest
15 голосов
/ 20 июня 2010

Я работаю над алгоритмом подсчета очков для отдельных игроков в командной игре. Проблема в том, что не существует фиксированных команд - каждый раз, когда 10 игроков хотят играть, они делятся на две (несколько) четные команды и играют друг с другом. По этой причине нет смысла оценивать команды, а вместо этого нам нужно полагаться на индивидуальные рейтинги игроков.

Есть ряд проблем, которые я хочу принять во внимание:

  • Новым игрокам необходим своего рода предварительный рейтинг , чтобы достичь своего "реального" рейтинга, прежде чем их рейтинг будет считаться таким же, как у опытных игроков.
  • Система должна принимать во внимание, что команда может состоять из комбинации уровней квалификации игрока - например. один действительно хороший, один хороший, два посредственных и один действительно плохой. Поэтому простого «среднего» рейтинга игроков, вероятно, будет недостаточно, и, вероятно, его необходимо каким-то образом оценить.
  • Рейтинги корректируются после каждой игры, и поэтому алгоритм должен основываться на каждой игре, а не на «рейтинговом периоде». Это может измениться, если будет найдено хорошее решение ( Мне известно, что Glicko использует рейтинг ).

Обратите внимание, что мошенничество не является проблемой для этого алгоритма, поскольку у нас есть другие способы проверки игроков.

Я посмотрел на TrueSkill, Glicko и ELO (это то, что мы сейчас используем). Мне нравится идея TrueSkill / Glicko, где у вас есть отклонение, которое используется для определения точности рейтинга, но ни один из алгоритмов не учитывает случайность случайных команд и, как представляется, в основном основан на играх 1 на 1 или FFA.

Где-то было предложено оценивать игроков так, как если бы каждый игрок из команды-победителя победил всех игроков проигравшей команды (25 «дуэлей»), но я не уверен, что это правильный подход, поскольку это может привести к серьезным последствиям завышать рейтинг, когда действительно слабый игрок в выигравшей команде и получает победу против очень хорошего игрока в проигравшей команде.

Любые предложения приветствуются!

РЕДАКТИРОВАТЬ: Я ищу алгоритм для известных игроков + какой-то способ ранжирования новичков, а не два вместе взятых. Извините за путаницу.

AI нет, и игроки играют друг с другом. Игры определяются выигрышем / проигрышем (ничья не проводится).

Ответы [ 8 ]

5 голосов
/ 20 июня 2010

Предварительные рейтинговые системы всегда несовершенны, но лучшие (такие как Elo) предназначены для более быстрой корректировки предварительных рейтингов, чем для рейтингов известных игроков.Это признает, что попытка установить рейтинг способностей только из нескольких игр с другими игроками по своей природе будет подвержен ошибкам.

Я думаю, что вы должны использовать средний рейтинг всех игроков в команде противника в качестве входных данных дляустановить предварительный рейтинг начинающего игрока, но обрабатывать его как одну игру, а не как N игр против N игроков.Каждая игра - это всего лишь одна выборка данных, и система Elo обрабатывает накопление этих игр, чтобы улучшить оценку рейтинга для отдельного игрока с течением времени, прежде чем перейти на обычную систему ранжирования.

Для простоты я также не стал бы различать установленные и предварительные рейтинги для членов противостоящей команды при расчете нового рейтинга обеспечения для какого-либо члена другой команды (если Эло не требует этого).Все эти рейтинги подразумевают ошибку, поэтому нет смысла добавлять ненужные осложнения, которые, вероятно, мало полезны для улучшения оценок рейтинга.

2 голосов
/ 21 июня 2010

Без каких-либо знаний в этой области мне кажется, что системы ранжирования - это в основном статистическая модель.Хорошая модель будет сходиться к последовательному ранжированию во времени, и цель будет состоять в том, чтобы сходиться как можно быстрее.Мне приходит в голову несколько мыслей, некоторые из которых были затронуты в других публикациях:

  1. Очевидно, что у известных игроков есть послужной список, а у новых игроков нет.Таким образом, неопределенность, вероятно, больше для новых игроков, хотя для непоследовательных игроков она может быть очень высокой.Кроме того, это, вероятно, зависит от того, использует ли игра врожденные навыки или приобретенные навыки.Я думаю, что вам нужен параметр «дисперсии» для каждого игрока.Дисперсия может состоять из двух частей: истинная дисперсия и «температура».Температура такая же, как при моделируемом отжиге, где у вас есть температура, которая охлаждается со временем.Предположительно, температура понизится до нуля после того, как будет сыграно достаточное количество игр.
  2. Есть ли несколько аспектов, которые могут сыграть?Как и в футболе, у вас могут быть хорошие стрелки, хорошие прохожие, ребята, которые хорошо контролируют мяч и т. Д. По сути, это будут степени свободы в вашей системе (по моей аналогии с футболом они могут быть или не быть действительно независимыми).Кажется, что точная модель будет принимать их во внимание, конечно, вы можете иметь модель черного ящика, которая неявно обрабатывает их.Однако я ожидаю, что понимание количества степеней свободы в вашей системе будет полезно при выборе черного ящика.
  3. Как вы делите команды?Ваш командный алгоритм подразумевает модель того, что делает равные команды.Возможно, вы могли бы использовать эту модель, чтобы создать вес для каждого игрока и / или ожидаемый уровень производительности.Если существуют различные аспекты навыков игрока, возможно, вы могли бы дать дополнительные очки игрокам, чья производительность в одном аспекте значительно лучше, чем ожидалось.
  4. Действительно ли игра выиграла или проиграла, или разница в счете может проявитьсяиграть?Поскольку вы сказали, что нет связей, это, вероятно, неприменимо, но, по крайней мере, близкий результат может означать более высокую неопределенность в результате.
  5. Если вы создаете модель с нуля, я бы разработал снамерение изменить.Как минимум, я ожидаю, что может быть несколько параметров, которые можно настраивать, и даже может быть автоматической настройки.Например, поскольку у вас больше игроков и больше игр, начальные значения температуры и начальные рейтинги станут более известными (если вы отслеживаете статистику).Но я бы, конечно, ожидал, что чем больше игр будет сыграно, тем лучше будет модель, которую вы сможете построить.

Просто куча случайных мыслей, но это звучит как забавная проблема.

2 голосов
/ 20 июня 2010

Прежде всего: очень маловероятно, что вы найдете идеальную систему. У каждой системы будет где-то недостаток.

И чтобы ответить на ваш вопрос: Возможно, идеи здесь помогут: Рейтинг Lehman на OkBridge .

Эта рейтинговая система используется (с 1993 года!) На сайте интернет-моста OKBridge. «Бридж» - это партнерская игра, в которую обычно играют командой из двух человек против другой команды из двух человек. Система рейтинга была разработана для того, чтобы оценивать отдельных игроков и учитывать тот факт, что многие играют с разными партнерами.

1 голос
/ 08 января 2017

Если вы заинтересованы в использовании (больше, чем в разработке), вы должны попробовать rankade , нашу систему ранжирования.

В противоположность Elo и Glicko (здесь сравнение ), ранг может управлять любым видом матча (один на один, фракция против фракции (две команды, которые могут быть асимметричными), многопользовательские, многопартийные, совместные игры, одиночные игры и т. д.), поэтому вы можете вставить один матч (без разбивки одного фактического матча в нескольких поддельных матчах).

В соответствии с вашими потребностями, рейтинги корректируются после каждой игры , алгоритм управляет сочетанием уровней квалификации игрока и предварительных рейтингов (посредством активности * динамика )

Мы принимаем много спортивных групп / клубов на основе случайных команд, вот наше додзё .

1 голос
/ 20 июня 2010

Несколько лет назад в журнале Game Developer была опубликована статья некоторых парней из команды TrueSkill из Microsoft, в которой объяснялись некоторые их причины, лежащие в основе принятых там решений. В ней определенно упоминаются командные игры для Xbox Live, поэтому она должна быть хоть как-то актуальна. У меня нет прямой ссылки на статью, но вы можете заказать ее здесь: http://www.gdmag.com/archive/oct06.htm

Один конкретный момент, который я помню из этой статьи, это оценка команды в целом, а не, например. давая больше очков игроку, который получил наибольшее количество убийств. Это должно было побудить людей помогать команде побеждать, а не пытаться максимизировать собственный счет.

Я полагаю, что была также некоторая дискуссия о настройке параметров, чтобы попытаться ускорить сближение с точной оценкой навыка игрока, что звучит как то, что вас интересует.

Надеюсь, это поможет ...

0 голосов
/ 30 июня 2010

Каждый раз, когда 10 игроков хотят играть, они делятся на две (несколько) даже команды и играть друг с другом.

Это интересно, поскольку подразумевает, что средний уровень квалификации в каждой команде одинаков (и, следовательно, не важен), и что каждая команда имеет равные шансы на победу. Если вы предполагаете, что это ограничение выполняется, простое число побед против проигрышей для каждого отдельного игрока должно быть такой же хорошей мерой, как и любое другое.

0 голосов
/ 20 июня 2010

Первый вопрос имеет очень «игровое» решение.вы можете либо создать лобби для новичков в первых двух играх, где игроки еще не могут увидеть свой счет, пока они не закончат определенное количество игр, которые дают вам достаточно данных для точного рейтинга.сначала, но проще - дайте им одно совпадение с ИИ, которое будет использоваться для определения начального балла (например, посмотрите на Quake Live).

0 голосов
/ 20 июня 2010

как устроен «подсчет очков»?,

, если команда наберет в общей сложности 25 очков (баллы всех игроков в команде), вы можете разделить счет игроков на общий балл команды * 100 дополучить процент от того, сколько этот игрок сделал для команды (или все очки для обеих команд).

Вы можете рассчитать счет с этими данными, и если процент ниже, чем, например, 90% членов команды(или члены обеих команд): относитесь к игроку как к новичку и рассчитывайте счет с другим весовым коэффициентом.

иногда более простая концепция работает лучше.

...