Матчмейкер 2.0: рассказ разработчиков

11.03.2016

Друзья!

Сегодня мы хотим представить вам статью о новом матчмейкере: как и почему он появился, какие правки вносились, из-за чего система функционирует именно так, а не иначе. Рассказ ведут непосредственно разработчики из Obsidian Entertainment — ведущий программист Хавьер Оливарес и руководитель проекта Ричард Тейлор. Отдельно просим вас внимательно прочесть статью и обдумать информацию перед тем, как высказываться в комментариях. Материал достаточно объемен и сложен, беглый просмотр может не дать понимания системы.

Хавьер Оливарес, ведущий программист:

Важной частью обновления 0.13 стал «Матчмейкер 2.0». Он еще требует отладки, однако мы посчитали важным рассказать вам о том, как работают его основные элементы.

Разделение на команды

Разделение на команды начинается после того, как матчмейкер сформировал список из 30 игроков. Составление этого списка — отдельная процедура, в которой участвует множество фильтров для лучшего баланса, например, поиск пар взводов с похожей техникой.

«Отложив» артиллерию и взводы, матчмейкер начинает выстраивать список по командам на основании уровня, категории и навыка игроков. То есть в верхней части списка будут машины высокого уровня, среди них выше всего будут ОБТ, которые, в свою очередь, выстраиваются по показателям игроков.

Затем игроки распределяются по командам по схеме «А-Б-Б-А». То есть матчмейкер начинает с верхней позиции списка и заносит машины в команды на основании следующих условий (если одно из них выполняется, следующие уже не рассматриваются):

  1. Если одна из команд имеет в категории на двух игроков больше, текущий игрок из списка присоединяется к ее соперникам. Мы специально установили ограничение на двух игроков в категории, а не одного, чтобы этот параметр не перевесил уровень техники.
  2. Если одна из команд имеет меньше «очков уровня» (сумма уровней всех танков), текущий игрок присоединяется к ней.
  3. Если в команде меньше игроков, текущий игрок присоединяется к ней.
  4. Если все параметры равны, текущий игрок присоединяется к одной из команд случайным образом.

В редких случаях получается, что в одной команде больше игроков, чем в другой. Тогда матчмейкер начинает переносить игроков из нижней части списка большей по численности команды в противоположную, пока их состав не сравняется. Наконец, ММ пытается сравнять процент побед у команд по следующему алгоритму:

  1. Подсчитывает средние арифметические по проценту побед у обеих команд и старается сравнять их, если разница составляет более 1%.
  2. Распределив игроков по проценту побед, начинает с самого сильного в лидирующей команде и самого слабого в противоположной.
  3. Меняет их местами. Если такая замена вредит балансу или игроки не совпадают по технике и уровню, матчмейкер возвращается к спискам команд и подыскивает подходящую замену.
  4. Матчмейкер возвращается к первому пункту или останавливается, если подходящую пару найти нельзя.

Артиллерия помещается в верхнюю часть списка (шаги 1–2), поэтому матчмейкер распределяет ее в первую очередь на основании уровня и показателей игроков. Взводы обрабатываются по более сложному алгоритму. Если коротко, то в его основе также лежит комбинация уровня и показателей игрока. Игроки принудительно распределяются по командам на шаге 2, но уже после сортировки. То есть участники взвода приписываются к командам не сразу, и это позволяет избежать перекосов баланса. Но мы уверены, что нам еще есть над чем работать, чтобы улучшить распределение взводов.

Уменьшение разброса процента побед

Мы пришли к выводу о необходимости балансировки по проценту побед, так как статистика показала, что даже небольшое различие (2–3%) сильно влияет на исход боя. Следующий график показывает статистику по 30000 боев до применения алгоритма балансировки.

Как мы можем видеть, только 40% боев имели разброс +/- 1 процент. У 30% он составлял +/- 2, а еще у 30% - +/- 3 и более. После внедрения алгоритма свыше 99% боев попали в промежуток +/- 1% (статистика более чем по 140000 боев).

Разгромные победы

Если говорить о разгромных победах, мы считаем их скорее следствием самого игрового процесса, чем результатом работы матчмейкера. Следующий график показывает количество выживших по итогу 28000 боев.

Он наглядно показывает, что в боях обычно остается 7–9 выживших, и даже 10 и более игроков в строю — нормальная ситуация (около 28%). Это подтверждает теорию «снежного кома»: как только одна из команд получает преимущество в численности и суммарной прочности машин, ей становится проще выиграть бой. Мы наблюдали за боями, где участвовали более-менее равные по опыту команды, и сами видели, что эта теория работает. Мы специально не планировали создавать условия для разгромных побед, однако на исход боя влияет множество факторов, и предсказать его довольно сложно.

Мы продолжаем подстраивать игровые механики и баланс карт, чтобы дать командам равные возможности. Если бы разгромные победы были следствием работы матчмейкера, получилось бы, что он специально организует несбалансированные бои и игнорирует как нормальное распределение по большой выборке боев, так и все наши попытки создать равные по силе команды.


Ричард Тейлор, руководитель проекта:

Всем привет!

В последнее время возникает множество вопросов по поводу работы матчмейкера в «Проекте Армата». Я постараюсь рассказать о том, каким он задумывался, как работает и как продолжит (или не продолжит) работать.

Прежде всего хочу назвать главную цель всей системы — создавать бои, в которых средний процент побед одинаков у обеих команд.

Почему? Дело в том, что если матчмейкер распределяет игроков с близким процентом побед, исход боя больше зависит от их действий, а не от того, в какую из команд их определил случай.

Помимо вышесказанного, матчмейкер должен следовать нескольким правилам:

  • соблюдать баланс по уровню (в этом плане у нас еще не все работает, как задумано);
  • соблюдать баланс по классовым группам (не классам).

Мы пришли к нашей цели после оценки боев, в которых у одной из команд было явное превосходство по проценту побед. Вот несколько примеров, чтобы вы увидели, каких случаев мы пытаемся избежать.

Команда А против команды Б:

  • 3 игрока с процентом побед 65% против 1 игрока с процентом побед 55%;
  • 4 игрока с процентом побед 55% против 6 игроков с процентом побед 52%;
  • 5 игроков с процентом побед 50% против 4 игроков с процентом побед 50%;
  • 3 игрока с процентом побед 45% против 4 игроков с процентом побед 45%.

В каждом случае исход боя практически предрешен. Такие игры бессмысленны, в них просто более сильный соперник громит более слабого.

Насколько сильно влияет средний процент побед на результаты боя?

Был определенный период, когда наш матчмейкер не брал процент побед в расчет. Изучив статистику 140000 боев, прошедших в это время, мы увидели зависимость между средним процентом побед и результатами боя. Вот более конкретные данные.

Когда матчмейкер не учитывал навыки игроков (только уровень и класс), распределение получилось таким:

  • В 38% боев разница средних процентов побед у команд составляла 1% (50/49, 48/47 и т. д.).
  • В 30% боев она была равна 2% (51/49, 48/46 и т. д.).
  • В 32% боев она составляла 3% и более (53/50, 54/48 и т. д.).

Хотя кажется, что 3% — это не такая большая разница, на самом деле разрыв очень существенен. При таком различии команда с лучшим процентом побед побеждала в 70% боев.

Главной целью внедрения баланса по проценту побед было уравнивание шансов команд на победу. Мы хотели избавиться от предопределенных боев. После введения баланса по проценту побед в 99,7% боев разница между командами не превышала одного процента.

Используется общий процент побед, а не на конкретной машине. У всех нас есть техника, на которой мы показываем достойные результаты, и техника, на которой мы не очень хороши. Но для матчмейкера имеет значение только наш общий процент побед. Мы легко могли бы перенастроить систему, чтобы она учитывала процент побед только на конкретной технике, однако для точного распределения данных по одной машине будет недостаточно. Поэтому пока мы отказались от подобной системы.

Процент побед — не лучший маркер навыка

По правде сказать, процент побед не задумывался как единственная настраиваемая характеристика для матчмейкера. Он должен был лечь в основу системы, которая позволила бы настраивать «рейтинг», как только мы отладим основной функционал. И вряд ли для этого подойдет какая-либо иная характеристика, разве что «средняя репутация за бой». Возможно, нам потребуется разработать более сложную формулу, но пока это спорный вопрос.
В конечном счете, хорошие игроки способны чаще приводить свою команду в победе в большом количестве боев, и их процент побед будет выше среднего. Слабые игроки, наоборот, будут реже побеждать в рамках большой выборки, и их процент побед будет низким. Другие статистические показатели также будут отражать эту тенденцию.

Как только мы достигаем экстремумов (максимально высоких или низких значений процента побед), становится сложнее определять лучших игроков, поскольку начинают действовать такие факторы, как частота игры во взводе, ТТХ конкретных машин и т. д. (с одной стороны) и «преднамеренный троллинг» (с другой). Однако у большинства игроков процент побед напрямую связан с их игровыми навыками.

Матчмейкер помещает хороших игроков к слабым, в то время как средние играют в команде с себе равными.

Это внутренний побочный эффект от любой балансировки по навыку. Мы не дожидаемся, когда в очередь встанут игроки с одинаково хорошими навыками, чтобы можно было определить их в противоположные команды. Мы создаем группу из 30 игроков на технике необходимого уровня и класса, которая удовлетворяет всем требованиям на данном этапе. Затем распределяем этих игроков по командам — опять же, в первую очередь на основе машин и уровня. Уже затем выравниваем команды по проценту побед. В хотфиксе мы приравняли процент побед выше 55% к 55-процентному. Таким образом, игроки с точки зрения матчмейкера выглядят «хуже», чем они есть на самом деле, однако такой шаг позволит несколько снизить побочный эффект и удовлетворить их потребности.

Еще один важный вопрос в этой теме — какой эффект оказывает процент побед «лучшего» игрока на результат боя. Иными словами, что случится, если у лучшего игрока в команде А на X% выше процент побед, чем у лучшего игрока в команде Б? К сожалению, пока я не располагаю точными данными, однако после детального анализа статистики может потребоваться дополнительная балансировка. Тогда исход каждого боя будет еще больше зависеть от действий игроков, а не первоначальной расстановки.

Подводя итог, хочу сказать, что использование навыков игроков для балансировки команд — это необязательный компонент игры. Мы ввели этот параметр из-за полученных в ходе наблюдения цифр, а также ради тех целей, что я назвал ранее.

Даже без «матчмейкинга по скиллу» в 68% боев разница среднего процента побед команд не превышала 2%, что в целом ставит их в равные условия (команда с более высоким процентом побед выигрывала в 60% боев).

Может даже оказаться, что случайное распределение игроков по командам (с учетом лишь уровня и класса) будет более справедливым. В таком случае при большом числе боев неудачные расстановки будут уравновешены удачными. Ваши индивидуальные навыки будут приводить к большему среднему соотношению побед/поражений при достаточно большой выборке. Примерно в 32% случаев это будут бои со стартовым перевесом одной из команд (однако даже тогда статистически у более слабой есть 27-процентный шанс на победу), но около 2/3 боев будут начинаться примерно в равных условиях для обеих сторон.

Думаю, вы бы даже не заметили, если бы мы отключили «матчмейкер по скиллу» — и это можно считать доводом против данной механики. Но мы хотели исключить элемент случайности, при котором игрокам может повезти или не повезти с командой — и мне кажется, мы достигли этой цели. Но если из-за этого испортится впечатление от игры, оставлять механику в проекте нельзя.

Многие из вас приводили весомые доводы как против этой системы, так и в ее защиту, и мы очень благодарны вам. Мы также продолжим обсуждать матчмейкер у нас в Obsidian.
 

Мы благодарим наших разработчиков за достаточно подробные комментарии. Не сомневаемся, данный материал окажется весьма интересен и полезен нашим игрокам. Ждем ваших отзывов на форуме!

Обсудить


Мы Вконтакте

Перейти в группу