Рейтинг игрока: почему мы взяли TrueSkill, а не ELO

Любое приложение с рейтингом должно ответить на один вопрос: насколько ты хорош, числом. Звучит просто, пока не вспомнишь, что падел это 2 на 2, партнёры меняются каждую игру, а вчерашний новичок сегодня разнесёт половину клуба. Мы перебрали варианты и остановились на TrueSkill, системе, которую Microsoft сделала для матчмейкинга в Xbox Live. Вот как она работает, чем отличается от шахматного ELO и почему для падела это единственно логично.
Сначала ELO, потому что с него всё началось
ELO придумал физик Арпад Эло для шахмат. Логика гениально проста: у каждого одно число, после партии победитель забирает очки у проигравшего, а сколько именно, зависит от разницы рейтингов. Обыграл более сильного — заберёшь много; того, кого и должен был обыграть, — копейки. Работает безупречно... для дуэли двух человек.
Проблемы начинаются, как только игроков на корте становится четверо.
Почему ELO ломается в паделе
Три дыры, которых в дуэли не видно, а в паделе они критичны:
- Падел это команда, а не дуэль. Чтобы запихнуть 2 на 2 в ELO, приходится усреднять рейтинг пары. И тут исчезает главное: пара «мастер + новичок» на бумаге выглядит так же, как двое крепких середняков. «Слабое звено» система не видит, а именно оно часто решает матч.
- Партнёры меняются. В americano или mexicano ты каждый раунд играешь с новым напарником. ELO не умеет ответить на вопрос «кто из пары вытащил матч», а для честного рейтинга это и есть суть.
- Один K-фактор на всех. Силу обновления в ELO задаёт фиксированный коэффициент K. Поставишь большой — и рейтинг ветеранов прыгает от каждого случайного поражения. Малый — и новичок месяцами ползёт к своему реальному уровню. Золотой середины нет.
Усреднённый ELO для падела работает примерно как молоток, которым забивают шуруп: заходит, но криво.
Что такое TrueSkill: два числа вместо одного
Главная идея: твой уровень это не точка, а диапазон. TrueSkill держит о каждом игроке два числа:
- μ (мю) это наша оценка твоей силы. То, что ты интуитивно называешь «рейтингом».
- σ (сигма) это насколько мы в этой оценке ещё не уверены. Большая σ означает «мы тебя почти не видели», малая — «мы уже хорошо знаем, на что ты способен».
Формально это нормальное распределение N(μ, σ²): колокол на графике, где μ его центр, а σ ширина. Новичок заходит с широким колоколом (у нас μ = 25, σ ≈ 8,3) и с каждым матчем его сужает.
Откуда берётся твоё число
Показывать игроку сырые μ и σ плохая идея. Поэтому мы сводим их в одно число:
R = (μ − 3σ) × 40 + 500
Вся магия в «− 3σ». Мы показываем не среднюю силу, а нижнюю границу: с вероятностью около 99% ты не слабее этого числа. Что это даёт на практике:
- Новичок с μ = 25 и большой σ = 8,3 стартует ровно с 500, на дне таблицы, потому что мы ещё ничего о нём не знаем.
- Откалиброванный ветеран с μ = 35 и малой σ = 2 получает 1660: его колокол узкий, вычитать «на неуверенность» почти нечего.
Двое игроков с одинаковым μ получат разный R, если у одного больше сыгранных матчей. Это честно: рейтинг нужно заслужить, а не получить за один удачный вечер. В приложении это число ложится в один из семи тиров, от Бронзы до Элиты.
Почему новички калибруются быстро, а ветераны стабильны
Вот где TrueSkill кладёт ELO на лопатки. Вспомни σ, неуверенность. Сила обновления рейтинга прямо зависит от неё:
- Первые игры σ большая → каждый матч сильно двигает μ. Систему буквально несёт к твоему реальному уровню за 5–10 игр.
- Чем больше играешь, тем меньше σ и тем меньше весит один матч. Чтобы сдвинуть откалиброванный рейтинг, нужно стабильно обыгрывать более сильных.
Это и есть тот самый «K-фактор», но динамический и свой для каждого: большой, пока ты новый, маленький, когда уже известен. ELO так не умеет в принципе. А пока сыграно меньше 10 матчей, мы честно показываем рядом с числом полосу погрешности ±, мол, ещё присматриваемся.
Мелочи, которые делают рейтинг честнее
- Счёт матча имеет вес. Разгром 6:0 6:0 двигает рейтинг почти вдвое сильнее выигрыша 7:6 7:6 на тай-брейках. Множитель от 0,5 (еле дожал) до 1,0 (разнесли в щепки). Для ELO победа есть победа, без нюансов.
- Командный результат → личный вклад. Выиграл со слабее партнёром против сильной пары — поднимешься больше, чем если бы тебя «вывез» мастер. Система считает силу соперников и партнёра, а не только факт победы.
- Химия пар. Попутно мы ведём статистику, с кем ты выигрываешь чаще всего, полезно, когда собираешь четвёрку на турнир.
Так почему именно TrueSkill для падела
Потому что падел это ровно тот случай, под который ELO никогда не проектировали. Командная игра со сменными партнёрами, где нужно быстро оценить новичка, не обрушив рейтинг ветеранов, учесть силу соперников и не потерять «слабое звено». TrueSkill делает всё это из коробки, потому что моделирует не результат, а игрока, с его силой и нашей неуверенностью в ней.
Честный минус: система сложнее ELO, и сырые μ/σ игроку не покажешь. Поэтому мы и прячем математику за одним числом и тиром: внутри счёт байесовский, а на экране просто «Золото, 1180».
Коротко
ELO для шахматной дуэли 1 на 1: одно число, фиксированный K, ноль представления о неуверенности. Падел всегда 2 на 2 со сменными партнёрами, поэтому мы взяли TrueSkill: μ (сила) плюс σ (неуверенность), рейтинг R = (μ − 3σ) × 40 + 500, быстрая калибровка новичков через большую σ, вес счёта матча и личный вклад из командного результата. Хочешь увидеть своё число в деле — собери четвёрку и сыграй americano. Новичкам сначала что такое падел.
Частые вопросы
Это консервативная оценка твоего уровня по формуле R = (μ − 3σ) × 40 + 500. μ это наша оценка твоей силы, σ это насколько мы ещё не уверены. Мы показываем не «среднюю» силу, а нижнюю границу: почти уверены, что ты не слабее этого числа. Новичок стартует с 500, откалиброванный опытный игрок далеко за 1000.
Из-за σ, нашей неуверенности. Первые игры σ большая, поэтому каждый матч сильно двигает число (быстрая калибровка). С опытом σ падает, и рейтинг стабилизируется: чтобы его сдвинуть, нужно обыгрывать более сильных. Это автоматический «динамический K-фактор», которого в ELO нет.
ELO считает дуэли 1 на 1 одним числом. Падел всегда 2 на 2, а партнёры меняются. TrueSkill моделирует каждого игрока отдельно (μ и σ) и вытягивает личный вклад из командного результата, не теряет «слабое звено» пары, как усреднённый ELO. Плюс считает неуверенность и честно калибрует новичков.
Да. Разгром 6:0 6:0 двигает рейтинг почти вдвое сильнее, чем 7:6 7:6 на тай-брейках. Множитель счёта от 0,5 (еле дожал) до 1,0 (разнесли в щепки). Классический ELO этого не умеет: для него победа есть победа.
