Я работаю над алгоритмом для выигрыша индивидуальных игроков в основанной на команде игре. Проблема состоит в том, что никакие фиксированные команды не существуют - каждый раз, когда 10 игроков хотят играть, они разделены на две (несколько) ровных команды и играют друг друга. Поэтому не имеет никакого смысла выигрывать команды, и вместо этого мы должны полагаться на оценки индивидуального игрока.
Существует много проблем, которые я хочу принять во внимание:
Обратите внимание, что обман не является проблемой для этого алгоритма, так как у нас есть другие меры проверки плееров.
Я посмотрел на TrueSkill
, Glicko
и ELO
(который является тем, что мы в настоящее время используем). Мне нравится идея TrueSkill/Glicko, где у Вас есть отклонение, которое используется, чтобы определить, насколько точный оценка, но ни один из алгоритмов не принимает случайную перспективу команд во внимание и, кажется, главным образом на основе 1v1 или игры FFA.
Было предложено где-нибудь оценить плееры, как будто каждый плеер из команды-победительницы избил все плееры в проигрывающей команде (25 "поединков"), но я не уверен, является ли это правильным подходом, так как это могло бы дико расширить оценку, когда действительно слабый игрок находится на команде-победительнице и получает победу по сравнению с очень хорошим плеером в проигрывающей команде.
Любому и всем предложениям рады!
Править: Я ищу алгоритм для установленных плееров + некоторый способ оценить новичков, не эти объединенные два. Извините за беспорядок.
Нет никакого AI, и игроки только играют друг друга. Игры определяются победой/потерей (нет никаких, тянут).
Предварительные рейтинговые системы всегда несовершенны, но лучшие из них (такие как Elo) разработаны так, чтобы корректировать предварительные рейтинги быстрее, чем рейтинги уже состоявшихся игроков. Это признает, что попытки установить рейтинг способностей на основе всего лишь нескольких игр с другими игроками по своей природе будут сопряжены с ошибками.
Я думаю, что вы должны использовать средний рейтинг всех игроков команды соперника в качестве исходных данных для определения предварительного рейтинга начинающего игрока, но рассматривать это как одну игру, а не как N игр против N игроков. Каждая игра на самом деле является всего лишь одной выборкой данных, и система Эло обрабатывает накопление этих игр для улучшения оценки рейтинга отдельного игрока с течением времени, прежде чем переключиться на обычную систему рейтинга.
Для простоты я бы также не делал различий между установленными и предварительными рейтингами членов команды-соперника при расчете нового рейтинга для какого-либо члена другой команды (если только Эло не требует этого). Все эти рейтинги имеют подразумеваемую погрешность, поэтому нет смысла добавлять ненужные сложности, которые, вероятно, имеют небольшую ценность для улучшения рейтинговых оценок.
Первый вопрос имеет очень игривый характер. ' решение. вы можете либо создать лобби для новичков для первых двух игр, где игроки еще не могут видеть свой счет, пока они не закончат определенное количество игр, которые предоставят вам достаточно данных для точного рейтинга.
Другой вариант - это вариант первого, но более простой - дать им один матч против ИИ, который будет использоваться для определения начального счета (например, посмотрите на Quake Live).
Несколько лет назад в журнале Game Developer Magazine была опубликована статья некоторых ребят из команды TrueSkill в Microsoft, в которой объяснялись некоторые из своих соображений, лежащих в основе принятых там решений. В нем определенно упоминаются командные игры для Xbox Live, так что он должен быть хотя бы в некоторой степени актуальным. У меня нет прямой ссылки на статью, но вы можете заказать предыдущий выпуск здесь: http://www.gdmag.com/archive/oct06.htm
Один конкретный момент, который я помню из статья оценивала команду в целом, а не, например, дает больше очков игроку, который убил больше всех. Это было сделано для того, чтобы побудить людей помочь команде победить, а не просто попытаться максимизировать свой собственный счет.
Я полагаю, что была также некоторая дискуссия о настройке параметров, чтобы попытаться ускорить сходимость для точной оценки навыков игрока, что похоже на то, что вас интересует.
Надеюсь, что это поможет ...
как рассчитывается «подсчет очков»?,
если команда наберет в сумме 25 очков (оценки всех игроков в team), вы можете разделить очки игроков на общий результат команды * 100, чтобы получить процент от того, сколько этот игрок сделал для команды (или всех очков с обеими командами).
Вы можете рассчитать оценку с помощью этих данных, и если процент ниже, чем, например, 90% членов команды (или членов обеих команд): относитесь к игроку как к новичку и подсчитывайте счет с другим коэффициентом взвешивания.
иногда более простая концепция срабатывает лучше.
Во-первых: очень маловероятно, что вы найдете идеальная система. У каждой системы где-то есть изъян.
И отвечу на ваш вопрос: возможно, идеи здесь помогут: Рейтинг Lehman на OkBridge .
Эта рейтинговая система используется (с 1993 года!) На сайте интернет-моста OKBridge. Мост - это партнерская игра, в которую обычно играют командой из 2 человек, противостоящей другой команде из 2 человек. Система рейтинга была разработана для оценки отдельных игроков и учитывает тот факт, что многие люди играют с разными партнерами.
Без какой-либо подготовки в этой области мне кажется, что системы ранжирования - это в основном статистическая модель.Хорошая модель со временем приведет к последовательному ранжированию, и цель будет состоять в том, чтобы сойтись как можно быстрее. Мне приходит в голову несколько мыслей, некоторые из которых были затронуты в других публикациях:
Просто набор случайных мыслей, но это похоже на забавную задачу.
Каждый раз, когда 10 игроков хотят играть, они делятся на две (в некоторой степени) ровные команды и играют друг с другом.
Это интересно, поскольку подразумевает, что средний уровень мастерства в каждой команде одинаков (и поэтому не имеет значения) и что каждая команда имеет равные шансы на победу. Если предположить, что это ограничение верно, то простой подсчет побед и поражений для каждого отдельного игрока должен быть таким же хорошим показателем, как и любой другой.