- PVSM.RU - https://www.pvsm.ru -
Раньше наш рабочий процесс прерывался из-за ряда неразрешенных вопросов:
Наш опыт решения данных вопросов с помощью системы рейтинга Elo будет рассмотрен в статье. А также ссылка на репозиторий и на сайт будут разбросаны по статье.
Когда компания маленькая, а игроков еще меньше, то вопрос лучшего решается простым проведением турнира в пятницу вечером раз в пару месяцев. <совет>Шикарнейший повод выпить за счет компании.</совет>(Мы по неопытности это не сразу поняли. И сначала просто так играли.) Но компания растет, лига тоже увеличивается, и вот уже отыграть турнир, даже с учетом предварительного разбиения на группы, становится очень сложно. Это просто физически тяжело на большом футбольном столе провести 15 партий за вечер.
На данном этапе опытные игроки в онлайн игры шахматисты подсказывают, что существует метод расчета относительной силы игроков Elo, которая как раз используется для оценки уровня шахматистов.
Разработал систему американский профессор физики и шахматист Арпад Эло.
Каждый новый игрок обычно получает рейтинг 1400. На самом деле не принципиально сколько. По итогам каждого матча часть рейтинга переходит от одного игрока к другому. И чтобы не уходить в минус берется изначально с запасом.
Будем считать, что игрок A в случае выигрыша получает 1 очко, в случае поражения — 0, а при ничьей — 0.5. Назовем эту переменную Sa.
Введем ожидаемое количество очков(Ea), которое игрок A получит за игру:
Ea = 1 / (1 + 10^((Rb-Ra)/400))
где Rb и Ra — это текущий рейтинг игроков B и A соответственно. Ea принадлежит интервалу (0, 1).
Коэффициенты подобраны таким образом, чтобы при разнице в рейтинге в 200 пунктов, ожидаемое количество очков равнялось приблизительно 0.75. Новый рейтинг игрока A считаем по формуле:
Ra’ = Ra + K * (Sa — Ea)
где K — коэффициент. Это максимальное количество пунктов рейтинга, который игрок может получить/потерять за одну игру. Обычно равняется 16. В ФИДЕ зависит от уровня игроков и варьируется от 10 до 30.
Аналогично считается рейтинг второго игрока Rb'.
Очевидно, что Ea + Eb = 1, Sa + Sb = 1 и следовательно Ra’ — Ra + Rb’ — Rb = 0, то есть у нас игра с нулевой суммой. Из формул видно, что сильный игрок за победу над слабым игроком получает меньше рейтинга, чем если слабый выиграет у сильного.
Мы рейтингом пользуемся уже около года. Отыграли более тысячи матчей. По моему субъективному мнению рейтинг отображает достаточно точно расстановку игроков в текущий момент времени. Как только кто-то в компании начинает играть лучше, например освоив удар, в течение недели занимает соответствующее место в рейтинге.
Также не проблема, если неделю или две не заносили результаты. При возобновлении рейтинг быстро восстанавливается.
После введения рейтинга сильно изменилось поведение во время игры. Матчи стали зрелищней. Если раньше, пропустив пару мячей в начале, проще было уже слить этот матч и начать новый, то теперь есть стимул биться до конца, чтобы не потерять (или не подарить сопернику) очки рейтинга! Автор статьи недавно проигрывал 1:6. А выиграл 7:6. Это был жаркий матч.
Естественно, когда мы решили попробовать рейтинг, первым делом поискали готовые реализации. И хотя многие онлайн игры используют Elo, не нашли ничего толкового, где бы мы могли просто заносить результаты наших игр. Поэтому в пятницу вечером был накидан google-скрипт для google-доков.
Пол года назад захотелось посмотреть на Asp.Net Core в действии(тогда RC1 был). И объективно google-скрипта уже давно не хватало. А там как раз выходные были. В итоге появилась система рейтинга, которой мы успешно пользуемся до сих пор. Нам нравится. Мне точно, а остальные может боятся сознаться, что нет.
Я думаю будет правильным поделиться со всеми. Исходники доступны здесь [1].
Получилось что-то явно большее чем просто MVP. В том числе сейчас реализовано:
Во время разработки для
Вспомнилась реклама на Хабре про
Теоретически, если у кого есть идеи доменных имен подходящих для сайта, можно прикрутить. У меня как раз есть бонусы у одного из хостеров.
Ах да, чуть не забыл. Кого надо уволить? Судя по всему меня:
Автор: JacobL
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-2/182429
Ссылки в тексте:
[1] здесь: https://github.com/jacob-l/playerratings/
[2] хостинга: https://www.reg.ru/?rlink=reflink-717
[3] лигу: http://playerratings.azurewebsites.net/
[4] Источник: https://habrahabr.ru/post/308920/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.