
Последние несколько месяцев мы работали над улучшением матчмейкинга. В этом посте мы бы хотели рассказать вам о том, как обстоят дела с матчмейкингом сейчас, и что произойдет с ним в будущем.
Встречайте рейтинговый матчмейкинг
В ближайшем крупном обновлении игры появится функция рейтингового матчмейкинга. Этот режим игры нацелен на опытных игроков, которые хотят играть в более соревновательную доту и хотят знать свой рейтинг матчмейкинга (MMR). Dota 2 всегда высчитывала MMR и использовала его для подбора игроков. В режиме рейтингового матчмейкинга MMR станет видимым. Вот что вам следует знать о рейтинговом матчмейкинге:
- Доступ к режиму рейтингового матчмейкинга открывается примерно после 150 игр.
- У всех игроков в группе должен быть разблокирован этот режим.
- На данный момент в этом режиме можно играть только All Pick, Captains Mode и Captains Draft.
- Пока вы находитесь в очереди с низки приоритетом (low priority), вы не можете играть в режиме рейтингового матчмейкинга.
- Тренеры в этом режиме так же запрещены.
- Сыгранные в обычном режиме матчмейкинга игры не влияют на ваш MMR рейтингового матчмейкинга и наоборот.
- Ваш рейтинговый MMR виден только вам и вашим друзьям. MMR обычного матчмейкинга, как и ранее, не виден.
- Когда вы впервые начинаете играть в режиме рейтингового матчмейкинга, вы должны пройти фазу "калибровки", состоящую из 10 игр. На протяжении этих 10 игр ваш рейтинговый MMR не виден.
Ваш матчмейкинг рейтиг (MMR)
Dota 2 использует стандартные средства для оценки и отслеживания скила игрока. Каждому игроку присваивается MMR, который служит суммарным показателем его скила в Dota 2. По завершении каждого матча мы обновляем ваш MMR исходя из того, что произошло в матче. Как правило, если вы победили — ваш MMR идет вверх, если проиграли — вниз. Победы/поражения являются главным критерием для изменения MMR, но и личная эффективность так же играет свою роль, особенно на стадии, когда ваш MMR довольно неопределенный. MMR отдельного игрока вполне может увеличиться после поражения или снизиться после победы, но в целом MMR победившей команды идет вверх, а проигравшей — вниз.
Мы так же следим за уровнем неопределенности MMR. У новых аккаунтов и у тех, кто впервые начал играть в режиме рейтингового матчмейкинга, уровень "неопределенности" очень высок. Чем выше уровень неопределенности, тем большие корректировки в MMR может сделать система. Соответственно, чем уровень неопределенности ниже, тем меньше изменений в MMR позволено делать системе. Все вместе — MMR и уровень неопределенности — может расцениваться как ожидаемая отдача от вас в следующем матче. Таким образом сама MMR выступает в роли среднего значения, а неопределенность — в качестве допустимого разброса. Если результаты матчей (и победы/поражения, и личный скил игрока) подтверждают наши предположения, уровень неопределенности начинает снижаться, пока полностью не исчезнет. Если же результаты матчей будут неожиданными, то уровень неопределенности повысится.
Сейчас мы отслеживаем четыре разных MMR для каждого игрока:
- Обычный режим игры, играет один
- Обычный режим игры, играет в группе
- Рейтинговый режим, играет один
- Рейтинговый режим, играет в группе
5% — 1100
10% — 1500
25% — 2000
50% — 2250
75% — 2731
90% — 3200
95% — 3900
99% — 4100
(Прим. Nattfodd: цифра слева показывает, на сколько вы лучше других игроков. Например, рейтинг 2250 значит, что вы играете лучше, чем 50% игроков Dota 2)
Обратите внимание, что эти цифры приведены исходя из обычного матчмейкинга. Пока что мы не знаем, какими они будут для рейтингового, но ожидаем, что цифры будут отличаться. В рейтинговом матчмейкинге игроки будут более опытными и более умелыми. Мы ожидаем, что в рейтингом матчмейкинге каждый отдельно взятый игрок будет играть и вести себя иначе, нежели в нормальном матчмейкинге.
Что делает матч хорошим?
Конечная цель автоматизированной системы матчмейкинга Dota 2 — чтобы игроки получали удовольствие от игры. Система подбора игр создает игру, руководствуясь следующими принципами (перечислены в разброс, не по важности):
1) Команды сбалансированы (каждая команда имеет 50% шанс на победу).
2) Разница в умении играть между наиболее умелым и наименее умелым игроком минимальна. Это тоже относится к балансу сторон, но не то же самое, что первый пункт.
3) Разница в опыте (измеряющаяся количеством сыгранных игр) между наиболее опытным и наименее опытным игроком минимальна. Подробнее ниже.
4) Скил наиболее скилового игрока Света должен быть примерно равен скилу наиболее скилового игрока Тьмы.
5) В каждой команде находится примерно одинаковое количество групп. Например, система старается избегать случаев, когда 5 игроков из одной группы играют против пяти одиночек.
6) В команду игроки подбираются по общему языку. Система всячески старается избегать создания команды без общего языка. Отсутствие общего языка между двумя командами так же нежелательно, но менее значимо.
7) Время ожидания не должно быть слишком большим.
Системе подбора игр редко удается идеально выполнить перечисленные критерии. Для каждого потенциального матча система выставляет своеобразные баллы качества по каждому из критериев, а затем берет среднее значение. Когда количество баллов качества переваливает за некий порог, потенциальный матч считается "достаточно хорошим", и игроки получают приглашение в игру. Мы постоянно экспериментируем с разными критериями и их приоритетами относительно друг друга.
Система не пытается добиться определенного винрейта, однако она старается сделать так, чтобы у обеих команд были равные шансы на победу в каждом матче (это критерий #1 в представленном выше списке). Мы не отслеживаем индивидуальную череду побед или поражений, пытаясь ее оборвать. Но если у вас пошла полоса побед, ваш MMR начинает расти, и вам начинают попадаться более опытные враги и союзники. Винрейт не является объективным показателем скила игрока.
Количество побед так же не помогает определить скил, поэтому система не использует данный показатель для создания матча. Мы стараемся объединить игроков по их опыту (критерий #3 в представленном выше списке), в первую очередь потому, что мы заметили, что игроки с одинаковым скилом, но разным опытом, имеют разное представление о том, как надо играть. Наше измерение "опыта" для матчмейкинга представляет из себя почти логарифмическую функцию по количеству сыгранных игр. Разница в опыте между 40 и 120 сыгранными играми рассматривается равной разнице в опыте между 120 и 280 сыгранными играми.
Можете сами оценить влияние критериев #2 и #3 на графике, где по горизонтальной оси расположено количество игр, а по вертикальной — MMR. Если два игрока находятся на этом графике достаточно близко друг к другу, они считаются хорошими кандидатами на то, чтобы поместить их вместе в один матч. А если игроков, находящихся на графике далеко друг от друга, поместить в один матч, то матч получится неудачным. Типичная траектория новичка Dota 2 представляет из себя кривую, которая плавно поднимается по мере повышения скила. Но когда скилованые игроки создают новые аккаунты, их путь проходит по другой траектории. Их MMR растет сравнительно быстро, из-за чего они быстро добираются до левого верхнего угла диаграммы, где им начинают попадаться игроки, скил которых сравнительно высок по отношению к их небольшому опыту.

А что насчет групп?
Когда дело доходит до групп, все становится чуть сложнее. В группах часто находятся игроки с большим разбросом в скиле и опыте. С целью измерения степени "подходящести" по критериям #2 и #3 в представленном выше списке, система присваивает каждой группе совокупные значения скила и опыта. И при создании матча учитываются уже эти совокупные значения, а не личные показатели каждого игрока. Если в группе очень большой разброс по скилу, и команда должна доукомплектоваться еще одним игроком-одиночкой, он выбирается исходя из средних показателей группы. Если вы заметили, что один игрок вашей команды играет значительно хуже, чем все остальные, значит, скорее всего, один из вас — очень скилованый игрок.
Кроме того, находящиеся в группе игроки, как правило, играют лучше, чем игроки с таким же скилом, но не знающие друг друга. Мы учитываем это двумя способами. Во-первых, мы отслеживаем ваш уровень игры, когда вы играете без группы. Во-вторых, мы корректируем эффективные MMR на основании значений MMR других игроков группы и распределения скила в группе. Вот вам пример реального матча, который демонстрирует оба принципа в действии:
Radiant | Dire | ||||
Группа | MMR | Скор. MMR | Группа | MMR | Скор. MMR |
D | 2994 | 3003 | C | 3046 | 3062 |
F | 2788 | 2788 | C | 2920 | 2936 |
A | 2687 | 2687 | E | 2716 | 2716 |
F | 2626 | 2627 | B | 2672 | 2672 |
D | 2401 | 2410 | C | 2100 | 2116 |
ВСЕГО | 13515 | ВСЕГО: | 13502 |
Обратите внимание, что средний скорректированный MMR для обеих групп примерно равен 2700. Когда игроки в команде сортируются по скорректированному MMR, как в таблице выше, игроки-одиночки, как правило, оказываются "затиснуты" между игроками из групп. Более того, группа с меньшим разбросом MMR (группа F) вписалась между игроками из группы с большим разбросом MMR (группа D). Это типичные примеры в подборе матчей. Так же обратите внимание, что группа D получила большую корректировку MMR из-за того, что ее игроки имеют больший разброс личных MMR. Группа F, состоящая из игроков примерно одинакового скила, получила меньший бонус. Эти корректировки проводятся при помощи статистических инструментов (более подробно об этом ниже), но простое объяснение заключается в том, что ваш уровень игры растет быстрее, когда вы играете с более умелыми игроками, нежели когда вы играете с другими игроками, у которых такой же скил, как и у вас.
Анализ игровых данных
Измерение степени успешности матчмейкинга — сложный процесс. Игроки оценивают качество матчмейкинга по уровню своего текущего винрейта. Более того, так делают даже сами разработчики Dota 2! Чтобы избежать эмоций и выборочной оценки качества, ведущей к выводам в духе "Матчмейкинг работает хорошо, ведь я выигрываю", мы стараемся оценивать качество матчмейкинга объективно на основании имеющихся данных. К счастью, этих данных у нас огромное количество. Вот, например, вам интересно было бы узнать, по какому принципу мы корректируем эффективный MMR, принимая во внимание тот факт, что игрок находится в группе и, как следствие, играет лучше, чем такой же игрок, играющий один? Мы применяем здесь статистический метод, который называется логистической регрессией. Он используется нами в частности для создания функции, которая пытается предсказать шансы на победу. В эту функцию входит несколько коэффициентов, от которых зависит количество бонусного MMR, которое получит игрок из группы. Мы так же используем множество приемов для подсчета этих коэффициентов, чтобы функция работала более точно и предсказывала результаты матча более корректно.
Данные так же помогают нам решать, достаточно ли хорошим будет подобранный матч, или лучше заставить игроков подождать подольше в поисках более сбалансированной игры. Чтобы настроить этот порог качества, мы начали изучать качество матча. Конечная цель матчмейкинга — доставлять удовольствие от игры, и в нашем распоряжении есть ряд показателей, которые позволяют оценить качество матча. Одним из таких показателей является количество заработанного золота. Если говорить точнее, то это временной интеграл от разницы в заработанном золоте, который высчитывается от времени, когда разница по золоту находилась на нуле. Это легко проследить по графику заработанного золота прямо из игры. Берем последнее время, когда кривая пересекла нулевую отметку, а затем начинаем измерять отклонение по вертикальной оси. Общая идея в том, что чем меньше в конце-концов была эта разница, тем более сбалансированной была игра.

Как видите, в определенный момент времени Dire имели преимущество в 10k золота, но Radiant удалось отыграть это преимущество, а потом еще раз его проиграть. Несмотря на то, что в определенный момент одна команда имела значительное преимущество, система сочла эту игру достаточно равной. Используя этот показатель (и ряд других) мы экспериментируем для выявления более точных способов определения границ "хорошего матча". Мы регулярно корректируем эту границу и наблюдаем за тем, как это сказывается на качестве матчмейкинга. Не критично, если система неправильно идентифицирует результаты каких-то отдельных мачтей, посчитав их равными, в то время как на самом деле одна команда вынесла другую вперед ногами, поскольку наша задача — собрать отзывы и сделать соответствующие корректировки.
Заключение
Надеемся, что этот пост в блоге дал вам некоторое представление о том, как сейчас работает система матчмейкинга, и о том, как мы оцениваем результаты ее работы. Как и почти все остальное, чем мы занимаемся, матчмейкинг является предметом постоянных изменений. Он никогда не будет идеальным, и данный пост должен был лишь прояснить для вас текущее положение дел, поскольку мы наверняка изменим систему, как только найдем более удачные методы. Мы читаем ваши отзывы и постоянно работаем, улучшая игру.