Справедливый рейтинг. Система ELO

Вот и закончился 8 сезон. Это около 8ми лет вместе с лигой. Скоро 9ый. Киберспорт шагает по планете. Но есть то, что хотелось бы иметь на протяжении всего этого времени. И большое движение в эту сторону заметно, но всё же... не могу больше ждать, поэтому ниже несколько идей по поводу рейтинговой системы {{champion:17}} Для начала зачем нам рейтинговая система? Кому-то, возможно, ответ очевиден, что она нужна для выяснения того кто "круче" и для повышения своего ЧСВ. Но нет. Это не основная её задача. Основная цель существования рейтинга это **обеспечение комфортной игры**. А для этого она должна быть как можно более не предвзятой и справедливой. В основе нашей рейтинговой системы лежит показатель **MMR**. Формул для его расчёта официально не представлено (очень странно для спортивной дисциплины). Поэтому опишу другой его вариант на основе системы ELO см. [[1]](https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0%B3_%D0%AD%D0%BB%D0%BE). Но сначала немного введения... но самые нетерпеливые и не готовые к формулам и цифрам могут перейти сразу к концу текста. Далее все числовые значения требуют дальнейшей корректировки на основе статистики при тестировании. **Гибкий коэффициент**. Начальное значение рейтинга **R** для всех игроков 1500 (**R** - другое обозначение и содержание для схожего с **MMR** элемента). Он будет изменяться каждый матч на некое максимальное значение **K**. При этом **первые матчи и матчи после длительного перерыва** должны использовать повышенное значение **K** (например, 40), убывающее с каждой следующей игрой, вплоть до стандартного значения в 20. **K** здесь это коэффициент чувствительности рейтинга к изменениям. Значение зависит от количества игр сыгранных за период времени. Т.е. если игрок длительное время не играл, то его коэффициент будет максимальным. Если он играет довольно редко, то его коэффициент может быть довольно высоким, чтобы отражать неопределённость в связи с изменением ситуации по балансу/тактикам. Так же коэффициент может зависеть от самого текущего значения рейтинга, чтобы точнее рассчитывать рейтинг для игроков более высокого уровня. Помимо этого коэффициент должен увеличиваться после серий игр (больше 2, т.е. 3, 4 и т.д.) с равным исходом для соответствия уровню роста игрока, и уменьшаться до нормального значения в играх без серий (больше 2). При этом возможны глобальные временные модификаторы (например, во время ввода больших изменений баланса). **Подбор**. Для создания матча нужны 10 человек с равноценным рейтингом в определённой роли (идеально для каждого персонажа, но из-за наличия "пик-контрпик" механики это не имеет смысла), для этого необходимо из всего количества людей найти тех, чей рейтинг не отличается. Но в реальности при поиске будет использоваться люфт, увеличивающийся со временем. Например, начиная с малого значения в 10 и заканчивая максимальным значением в 400. После чего они распределяются на команды и рассчитывается средний рейтинг этих команд *RTX* (рейтинг команды). Например, после подбора **RT1 = 1374 | RT2 = 1396** R11 = 1500 | R21 = 1450 R12 = 1300 | R22 = 1330 R13 = 1350 | R23 = 1380 R14 = 1320 | R24 = 1350 R15 = 1400 | R25 = 1470 Здесь рейтинг команды это среднее арифметическое значений рейтинга её участников. Уже заметно, что игрок **R11** имеет самый большой рейтинг из всех в подборе, но его команда в среднем имеет рейтинг ниже. Такая ситуация неизбежна в случае, когда в данном диапазоне рейтинга в данное время мало игроков. (**Проблема наличия игроков**) **Оценка**. Во время игры каждое действие игрока влияет на результат. При этом эти действия оцениваются по шкале от D- до S+ (или от 0 до 14) **Изменение рейтинга после игры**. Результатом матча является победа одной из команды. При этом вклад участников в победу различен. Поэтому не справедливо сильно повышать рейтинг тем, кто тянул команду вниз или наоборот, сильно снижать тем, на ком держался весь матч. Так же есть изначальное неравенство команд. **Фактический результат команды** **STX = {1 в случае победы команды X, 0 в случае поражения}** **PXY = {от 0 до 14} количество очков оценки действий игрока Y из команды X** **ST1 = 1 | ST2 = 0** P11 = 4....(C) | P21 = 7 (B) P12 = 14.(S+)| P22 = 7 (B) P13 = 7....(B) | P23 = 4 (C) P14 = 10..(A) | P24 = 4 (C) P15 = 10..(A) | P25 = 4 (C) **Ожидаемый результат для команды** **ETX = 1 / {1 + 10^[(RTY-RTX) / 400]}**, здесь **ETX** - ожидаемый результат команды X **RTY**, **RTX** - рейтинги команд X и Y **^** - знак степени **400** - значение разницы рейтинга, при котором ожидаемый результат равен 0.91 Тогда ожидаемый результат для команд из примера ET1 = 1 / {1 + 10^[(1396-1374) / 400]} = 0.47 ET2 = 1 / {1 + 10^[(1374-1396) / 400]} = 0.53 Для расчёта нового рейтинга для каждого игрока, в зависимости от действий других игроков в матче необходимо рассматривать последовательное попарное сравнение всех участников матча с соответствующим изменением рейтинга см. [[2]](https://ryanmadden.net/posts/Adapting-Elo). При этом **SXXVYY = {1 в случае победы игрока XX над YY, 0 в случае поражения, 0.5 в случае ничьей}** Тогда расчёт нового рейтинга для одного игрока **NR11V12 = R11 + D11V12** После чего этот рейтинг используется для следующего сравнения **NR11V13 = NR11V12 + D11V13** ... **NR11 = NR11V24 + D11V25 где **NRXY** - новый рейтинг игрока Y команды X **NRXXVYY** - новый рейтинг игрока XX при сравнении против игрока YY **DXXVYY** - изменение рейтинга в сравнении игрока XX с игроком YY Коэффициент **MoVM** учитывающий разницу силы команд и очки игроков, подробнее см. [[3]](https://fivethirtyeight.com/methodology/how-our-nfl-predictions-work/) Q = 2.2 / [(RTW - RTL) * 0.001 + 2.2] PDXXVYY = Abs(PXX - PYY), 0 -> 1 MoVM = ln(PDXXVYY) * Q здесь RTW - рейтинг победившей команды RTL - рейтинг проигравшей команды Q - коэфициент разницы силы команд PDXXVYY- разница между очками оценки действий двух игроков XX и YY. Если разница равна 0, то считаем для обоих игроков разницу в 1 очко Ожидаемый результат для сравнения игроков EXXVYY = 1 / {1 + 10^[(RYY-RXX) / 400]} Тогда NR11V12 = R11 + K * (S11V12 - E11V12) * MoVM NR11V13 = NR11V12 + K * (S11V13 - E11V13) * MoVM ... NR11 = NR11V24 + K * (S11V25 - E11V25) * MoVM Расчёт для примера выше (K = 20) Форум не создан для таблиц и портит разметку. Как смог. Если скопировать в Блокнот выглядит лучше. |_XX_|_RXX__|__RT__|_PXX_|__ET__|_ST_|NRXXV11|NRXXV12|NRXXV13|NRXXV14|NRXXV15|NRXXV21|NRXXV22|NRXXV23|NRXXV24|_NRXX__| | 11 | 1500 |......|..4..|......|....|. 1500 |. 1465 |. 1450 |. 1425 |. 1406 |. 1396 |. 1383 |. 1383 |. 1383 |. 1383 | | 12 | 1300 |......|.14..|......|....|. 1335 |. 1335 |. 1356 |. 1368 |. 1384 |. 1407 |. 1422 |. 1443 |. 1460 |. 1484 | | 13 | 1350 | 1374 |..7..| 0.47 |..1.|. 1366 |. 1342 |. 1342 |. 1330 |. 1322 |. 1322 |. 1322 |. 1335 |. 1346 |. 1361 | | 14 | 1320 |......|.10..|......|....|. 1347 |. 1331 |. 1343 |. 1343 |. 1343 |. 1357 |. 1367 |. 1386 |. 1402 |. 1424 | | 15 | 1400 |______|.10..|______|____|. 1423 |. 1404 |. 1414 |. 1414 |. 1414 |. 1426 |. 1434 |. 1449 |. 1462 |. 1481 | | 21 | 1450 |......|..7..|......|....|. 1463 |. 1434 |. 1434 |. 1420 |. 1408 |. 1408 |. 1408 |. 1418 |. 1427 |. 1440 | | 22 | 1330 |......|..7..|......|....|. 1346 |. 1324 |. 1324 |. 1313 |. 1304 |. 1304 |. 1304 |. 1318 |. 1330 |. 1345 | | 23 | 1380 | 1396 |..4..| 0.53 |..0.|. 1380 |. 1351 |. 1340 |. 1321 |. 1307 |. 1300 |. 1290 |. 1290 |. 1290 |. 1290 | | 24 | 1350 |......|..4..|......|....|. 1350 |. 1323 |. 1313 |. 1295 |. 1283 |. 1276 |. 1267 |. 1267 |. 1267 |. 1267 | | 25 | 1470 |......|..4..|......|....|. 1470 |. 1436 |. 1422 |. 1399 |. 1381 |. 1372 |. 1360 |. 1360 |. 1360 |. 1360 | Как видно из второго и последнего столбца рейтинг перераспределился в соответствии с результатами каждого отдельного участника. Другой пример, при более равных рейтингах в начале (рейтинг +/- 20, K = 20) |_XX_|_RXX__|__RT__|_PXX_|__ET__|_ST_|NRXXV11|NRXXV12|NRXXV13|NRXXV14|NRXXV15|NRXXV21|NRXXV22|NRXXV23|NRXXV24|_NRXX__| | 11 | 1500 |......|..4..|......|....|. 1500 |. 1476 |. 1465 |. 1448 |. 1432 |. 1423 |. 1414 |. 1414 |. 1414 |. 1414 | | 12 | 1480 |......|.14..|......|....|. 1504 |. 1504 |. 1523 |. 1536 |. 1547 |. 1564 |. 1579 |. 1596 |. 1612 |. 1627 | | 13 | 1495 | 1374 |..7..| 0.50 |..1.|. 1506 |. 1485 |. 1485 |. 1474 |. 1464 |. 1464 |. 1464 |. 1475 |. 1487 |. 1498 | | 14 | 1483 |......|.10..|......|....|. 1502 |. 1487 |. 1498 |. 1498 |. 1498 |. 1509 |. 1519 |. 1536 |. 1551 |. 1565 | | 15 | 1486 |______|.10..|______|____|. 1505 |. 1490 |. 1501 |. 1501 |. 1501 |. 1512 |. 1522 |. 1538 |. 1553 |. 1568 | | 21 | 1491 |......|..7..|......|....|. 1502 |. 1482 |. 1482 |. 1471 |. 1460 |. 1460 |. 1460 |. 1472 |. 1484 |. 1494 | | 22 | 1484 |......|..7..|......|....|. 1495 |. 1475 |. 1475 |. 1464 |. 1454 |. 1454 |. 1454 |. 1466 |. 1478 |. 1489 | | 23 | 1488 | 1396 |..4..| 0.50 |..0.|. 1488 |. 1464 |. 1454 |. 1438 |. 1423 |. 1414 |. 1405 |. 1405 |. 1405 |. 1405 | | 24 | 1490 |......|..4..|......|....|. 1490 |. 1466 |. 1456 |. 1440 |. 1424 |. 1415 |. 1406 |. 1406 |. 1406 |. 1406 | | 25 | 1482 |......|..4..|......|....|. 1482 |. 1459 |. 1449 |. 1433 |. 1418 |. 1409 |. 1400 |. 1400 |. 1400 |. 1400 | В случае если подбор практически идеальный, то всё зависит от результатов самих игроков. Тот же пример с K = 10 (высокий рейтинг) |_XX_|_RXX__|__RT__|_PXX_|__ET__|_ST_|NRXXV11|NRXXV12|NRXXV13|NRXXV14|NRXXV15|NRXXV21|NRXXV22|NRXXV23|NRXXV24|_NRXX__| | 11 | 1500 |......|..4..|......|....|. 1500 |. 1488 |. 1482 |. 1474 |. 1465 |. 1460 |. 1455 |. 1455 |. 1455 |. 1455 | | 12 | 1480 |......|.14..|......|....|. 1492 |. 1492 |. 1502 |. 1509 |. 1515 |. 1524 |. 1533 |. 1543 |. 1552 |. 1562 | | 13 | 1495 | 1374 |..7..| 0.50 |..1.|. 1501 |. 1490 |. 1490 |. 1485 |. 1479 |. 1479 |. 1479 |. 1485 |. 1490 |. 1496 | | 14 | 1483 |......|.10..|......|....|. 1492 |. 1485 |. 1491 |. 1491 |. 1491 |. 1496 |. 1502 |. 1510 |. 1519 |. 1527 | | 15 | 1486 |______|.10..|______|____|. 1495 |. 1488 |. 1494 |. 1494 |. 1494 |. 1499 |. 1504 |. 1513 |. 1521 |. 1529 | | 21 | 1491 |......|..7..|......|....|. 1497 |. 1486 |. 1486 |. 1481 |. 1475 |. 1475 |. 1475 |. 1481 |. 1487 |. 1492 | | 22 | 1484 |......|..7..|......|....|. 1490 |. 1480 |. 1480 |. 1474 |. 1469 |. 1469 |. 1469 |. 1475 |. 1481 |. 1486 | | 23 | 1488 | 1396 |..4..| 0.50 |..0.|. 1488 |. 1476 |. 1471 |. 1462 |. 1454 |. 1449 |. 1444 |. 1444 |. 1444 |. 1444 | | 24 | 1490 |......|..4..|......|....|. 1490 |. 1478 |. 1473 |. 1464 |. 1456 |. 1451 |. 1446 |. 1446 |. 1446 |. 1446 | | 25 | 1482 |......|..4..|......|....|. 1482 |. 1470 |. 1465 |. 1457 |. 1449 |. 1444 |. 1439 |. 1439 |. 1439 |. 1439 | И с K = 40 (уровень новичков) |_XX_|_RXX__|__RT__|_PXX_|__ET__|_ST_|NRXXV11|NRXXV12|NRXXV13|NRXXV14|NRXXV15|NRXXV21|NRXXV22|NRXXV23|NRXXV24|_NRXX__| | 11 | 1500 |......|..4..|......|....|. 1500 |. 1451 |. 1432 |. 1402 |. 1374 |. 1359 |. 1345 |. 1345 |. 1345 |. 1345 | | 12 | 1480 |......|.14..|......|....|. 1529 |. 1529 |. 1564 |. 1585 |. 1605 |. 1632 |. 1655 |. 1680 |. 1704 |. 1724 | | 13 | 1495 | 1374 |..7..| 0.50 |..1.|. 1517 |. 1474 |. 1474 |. 1453 |. 1433 |. 1433 |. 1433 |. 1458 |. 1482 |. 1504 | | 14 | 1483 |......|.10..|......|....|. 1521 |. 1490 |. 1512 |. 1512 |. 1512 |. 1533 |. 1551 |. 1581 |. 1607 |. 1631 | | 15 | 1486 |______|.10..|______|____|. 1523 |. 1492 |. 1514 |. 1514 |. 1514 |. 1535 |. 1554 |. 1583 |. 1609 |. 1632 | | 21 | 1491 |......|..7..|......|....|. 1514 |. 1471 |. 1471 |. 1450 |. 1430 |. 1430 |. 1430 |. 1456 |. 1480 |. 1502 | | 22 | 1484 |......|..7..|......|....|. 1507 |. 1465 |. 1465 |. 1444 |. 1425 |. 1425 |. 1425 |. 1451 |. 1475 |. 1498 | | 23 | 1488 | 1396 |..4..| 0.50 |..0.|. 1488 |. 1441 |. 1422 |. 1393 |. 1366 |. 1352 |. 1338 |. 1338 |. 1338 |. 1338 | | 24 | 1490 |......|..4..|......|....|. 1490 |. 1443 |. 1424 |. 1394 |. 1368 |. 1353 |. 1339 |. 1339 |. 1339 |. 1339 | | 25 | 1482 |......|..4..|......|....|. 1482 |. 1436 |. 1417 |. 1388 |. 1362 |. 1348 |. 1334 |. 1334 |. 1334 |. 1334 | Основная цель системы поощрение хорошей игры и наказывание плохой. При этом если игрок постоянно играет идеально, значит ему слишком легко и его рейтинг не соответствует уровню игры. Периодическая смена идеальных оценок, средних и плохих это нормально. Но при этом чем чаще высокие оценки тем быстрее растёт рейтинг и наоборот, быстрее падает в случае постоянно плохой игры. **Хорошая игра - это командное взаимодействие и умение проигрывать** ------------------------------------------------------------------------------------------------------------------------------ **Список проблем и как они решаются** **Проблема наличия игроков**. Зависит от онлайна на сервере. Появляется время от времени (на меленьких серверах довольно часто) Результат. Неинтересная игра из-за большой разницы в уровне игры **Текущий вариант**. Проблема присутствует. За проигрыш MMR снижается, что влияет на обстановку внутри игры сильно негативно и ещё больше создаёт разницу в уровне игры. **Предлагаемый вариант**. Проблема присутствует. За проигрыш более слабый игрок при должном уровне игры может **получить рейтинг**. Что должно подталкивать даже во время неминуемого проигрыша играть достойно. **Сброс рейтинга.** **Результат**. Необходимость вновь начинать всё сначала. **Текущий вариант.** Сброса MMR нет. Есть только сброс системы лиг, что не относиться к MMR **Предлагаемый вариант.** Без изменений **Новые персонажи/баланс/тактики/меты/т.п.** **Результат.** Неинтересная игра из-за разницы в уровне игры **Текущий вариант.** Проблема присутствует, т.к. на скорость изменения MMR не влияет время **Предлагаемый вариант.** Проблема учтена. Так как коэффициент K динамический и зависит от многих факторов (время без матчей, уровень рейтинга, модификаторы и т.п.). **Троллинг (умышленное проигрывание матчей).** Решается не за счёт системы рейтинга, но с её помощью определяется. **Результат.** Неинтересная игра **Текущий вариант.** Проблема присутствует. Скорость изменения MMR линейна **Предлагаемый вариант.** Проблема присутствует. Скорость изменения рейтинга нелинейна **Смурфы. Игра с другого аккаунта** **Результат.** Неинтересная игра из-за разницы в уровне игры **Текущий вариант.** Проблема присутствует. Скорость изменения MMR линейна и не зависит от разницы в уровне игры. **Предлагаемый вариант.** Проблемы нет. Рейтинг быстро подстраивается под нового игрока, не сильно оказывая влияния на других игроков. **Прокачка MMR** **Результат ** Неинтересная игра из-за разницы в уровне игры **Текущий вариант.** Проблема присутствует. MMR не зависит от уровня игры конкретного игрока. Что способствует возможности использования друга для повышения MMR. **Предлагаемый вариант.** Проблемы нет. Рейтинг зависит только от уровня игры конкретного игрока **Несправедливый рейтинг.** Повышение MMR слабых игроков по итогам матча и понижение для сильных. **Результат.** Неинтересная игра из-за разницы в уровне игры **Текущий вариант.** Основная проблема существующей системы. Способствует существованию ситуации когда явно сильный игрок попадает в игру со слабыми и это приводит его к ситуации, в которой он пытается выиграть игру в одиночку (и не всегда у него это получается). При этом доставляя ему массу негатива, что порождает с его стороны неспортивное поведение и как результат ещё большее понижение MMR. При этом это становиться нормой для большого числа игроков, в следствии чего уменьшается качество командного взаимодействия до 0 и увеличивается количество {{champion:63}} с горючим. С каждым годом проблема всё больше обостряется и сейчас заметна как никогда. Играть в командную игру соло теперь в порядке вещей (привет {{champion:157}}). Интерес к такого рода развлечению может отпасть у большей части игроков. Предлагаемый вариант. Проблемы нет. Система направлена на подбор интересных, спортивных, командных игр, без необходимости наблюдать процесс кормления 1v5 одиночкой в попытке победить вопреки системе. ------------------------------------------------------------------------------------------------------------------------------ **Как всё это связано с рейтингом в системе лиг?** Система лиг существует отдельно от MMR. Это показатель успешности, тот самый для ЧСВ. И он направлен на динамическое масштабирование границ MMR каждой отдельной лиги. Т.е. вместо 1200-1500 MMR это золото, он позволяет вычислить эти границы динамически. Эта система неплоха и не связана с подбором (я надеюсь) игроков. **Что нужно поменять в существующей системе:** **1. Динамический коэффициент для MMR** **2. Зависимость MMR от оценки действий игрока** **3. ?Подбор должен зависеть только от MMR по определённой роли** Т.е. изменения только в формулах без видимых деталей. **Источники** [1] [Wikipedia](https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B9%D1%82%D0%B8%D0%BD%D0%B3_%D0%AD%D0%BB%D0%BE) [2] [Ryan Madden. Adapting Elo](https://ryanmadden.net/posts/Adapting-Elo) [3] [FiveThirtyEight. How Our NFL Predictions Work](https://fivethirtyeight.com/methodology/how-our-nfl-predictions-work/) ЗЫ. Публикую здесь, т.к. проблема перевести на вменяемый английский для PBE. Цель топика донести информацию до разработчиков и получить от них обратную связь. Хотелось бы увидеть подобную систему хотя бы на PBE, хотя бы на время, чтобы игроки смогли сами оценить разницу. Хотя бы в нормалах. Так же было бы неплохо для киберспортивной дисциплины знать правила формирования своего рейтинга. Из-за проблемы наличия игроков на этом сервере всё меньше народу (я играю на EUW с самого начала), поэтому не уверен что эту стену текста кто-то заметит, особенно разработчики, но терпеть больше нет сил. Не готов
Поделиться
Пожаловаться на
Лексику Спам Оскорбление Неверную тему
Отменить