Блоги

Обратный инжиниринг игры Team Secret . Часть 1

50

Прошедшие турниры Omega и Dotapit показали невероятную доминацию команды Team Secret. Мне стало интересно, что же такого они делают в игре, что приводит к таким разрывам в уровне игры с остальными командами.

В данном цикле статей я хочу разобрать игры Team Secret с точки зрения аналитики данных. Я планирую применить некоторые методы из статистики и машинного обучения что бы попробовать обнаружить некоторые закономерности и паттерны поведения игроков в матче. Я больше буду опираться на статистические данные чем на свои представления об игре. Я планирую уделить больше внимания макро игре, нижу я объясню почему. Я планирую сделать несколько частей, так как когда я сделал первые попытки в этом направлении, то обнаружил, что это крайне не простая задача и требует много времени.

Дисклаймер

Я не утверждаю что все что я напишу ниже и в следующих статьях имеет хоть какой-то смысл. У меня в игре 3к ммр, соответственно и понимание игры на этом уровне. Если вы считаете что это недостаточно что бы делать анализ игры напишите об этом. Однако, если вам понравится, то тоже дайте знать, от этого так же зависит и продолжение данного цикла, так как не хочется тратить время на то что никому не интересно.

Немного о себе.

Я мало играю в доту, и то на саппортах и под пиво, потому что мне лень фармить. Я тот самый подпивасник из за которого вы проигрываете игры. Но мне нравится смотреть соревновательную доту. Я работаю в небольшом стартапе в области искусственного интеллекта в медицине где занимаю должность Data Scientist.

Введение

В 2019 году компания OpenAI выпустила новую версию бота под названием Dota Five которая имела винрейт 89% над старой версией бота. Старая версия выигрывала у OG, а так же имела винрейт выше 99% при 7 тысяч сыгранных игр против команд которые пробовали свои силы. Только используя баги(к примеру бот не мог хорошо играть против инвизиров), командам состоящим из про игроков удалось выиграть у старой версии бота. Далее как мне известно проект перестал развиваться.

13 декабря 2019 года OpenAI публикует полное описание своего ресерча в статье Dota 2 with Large Scale Deep Reinforcement Learning в которой полностью описывает технические детали работы бота. Начать я бы хотел вот с такого графика.

Шкала уровня игры
Шкала уровня игры

Видна зависимость уровня игры от количества времени проведенного в игре, приближаясь к про уровню про игроков единица TrueSkill зависит от количества сыгранных игр экспоненциально! К примеру что бы обыграть стак кастеров потребовалось 200 FLOPS/s-day а что бы обыграть про команды потребовалось примерно 600 FLOPS/s-day, хотя разница в уровне между ними +- пару TrueSkill поинт. Видно, что уровень всех про команд начиная с какого-то уровня +- уравнивается с точки зрения бота. Тут непонятно, какая версия бота имеется ввиду, с первой версией играли OG и могли сыграть все желающие, вторая в паблик не вышла.

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

Networth игроков в матче OpenAi vs OG
Networth игроков в матче OpenAi vs OG

Networth матча на 19 минуте, где OpenAI играют за Radiant, OG за Dire. Через 15 минут OpenAI снесут трон OG.

Вот еще один график из того же ресерча, который показывает, что для OpenAI игра заканчивается на 20ой минуте. Дальше уже просто вопрос времени.

Вероятность победы в матче по версии OpenAI
Вероятность победы в матче по версии OpenAI

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

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

В игре Dota 2 выучить дебют невозможно в ввиду бесконечного количества возможных ходов. Однако, к этому уровню можно приблизится, и лучше всех в мире это сделали OpenAI.

По результатам Team Secret видно, что в их игре, есть что-то, что не особо видно если смотреть игру обычным способом. Они очень уверенно обыгрывают своих соперников, потому что, видимо, они лучше всех понимают дебют игры на человеческом уровне понимая.

Однако ниже я покажу, что если бы тренерский штаб команд, или сами же команды хоть чуть чуть готовились к Secret, то могли бы не совершить некоторые роковые ошибки. Забавный факт. В Omega-League Team Secret сыграли почти все матчи за Radiant а в Dota Pit за Dire. Очевидно, подготовка к Team Secret на Dota Pit началась и закончилась исключительно выбором стороны. Единственная команда которая играла против Team Secret за Radiant это Alliance.

В этой части я бы хотел освятить перемещение героев команды Team Secret по лайнам до 15 минуты, так как дальнейшие перемещения сильно зависят от обстоятельств в игре. Я покажу на примере первого матча с a Navi, что если бы они подготовились к Secret, они могли бы не совершить роковой файт на 9 минуте который поставил точку в этом матче.

Передвижение игроков Secret с 3 по 15 минуту.
Передвижение игроков Secret с 3 по 15 минуту.

На изображении выше показаны места где игроки находятся начиная с третей минуты игры на основе 54 матчей при условии что игрок играл на своей позиции. В эту статистику не включен матч с id 5628473114 это первый матч против Navi, этот матч я буду использовать для валидации своих выводов. Хотел отметить несколько фактов которые сразу видны.

По их движению виден примерно следующий паттерн игры на периоде 8-11 минуте.

1. Лайнинг стадия для Secret заканчивается на 8 минуте. Дальше они начинают двигаться по карте, либо свапаться лайнами.

2. MATUMBAMAN почти всегда смещается на сложную на 10 минуте и играет там преимущественно один. Так же, перед этим он с высокой вероятностью будет фармить свой треугольник и защищать руну.

2. Puppey скорее всего к моменту появления руны будет на своем треугольнике, далее сместится на мид получать уровень.

3. Zai обычно смещается на топ, либо идет роумить на 9-10 минуте.

4. Nisha фармит мид и нетралов на протяжении 10 минут. Часто отходит в свой лес фармить ближних нетралов, не заходит глубоко в лес.

5. YapzOr двигается без четкого паттерна, и двигается очень много. С некоторой вероятностью может сделать ТП на топ на 8-9 минуте, с некоторой вероятностью может прийти на мид, и постоять там вместо Nisha. Вообще по паттерну движения видно, что YapzOr играет крайне важную роль в Secret, его нетворс обычно на уровне Puppey, но при этом он двигается в разы больше. Его игру я планирую более подробнее изучить в других частях.

График распределения золота за крипов так же подтверждает некоторые мои выводы

Золото от добивания крипов по саппортам
Золото от добивания крипов по саппортам

Видно что на 9 минуте у Puppey серьезный буст по золоту за убийство крипов. Это означает что в этот отрезок времени он находится на лайне и судя по карте передвижений он фармит в центре. Zai имеет сильную просадку по крипам в 8 и 9 минуту, потому что часто идет роумить, фармить нетралов или брать руны. Далее у Zai буст, потому что он идет на топ и там фармит до 13 минуты, это так же видно по карте передвижений. Так как с лайна уходит zai, YapzOr может остаться на линии и получает буст по золоту компенсируя недостаток золота от ранних передвижений, либо примерно на 8-9 минуте идет на топ.

Исходя из всего вышесказанного примерно понятен план игры Secret на начало игры. Давайте представим, что команды готовятся друг к другу смотрят игры и отмечают для себя какие-либо факты. Давайте рассмотрим первую игру с Navi и именно 9 минуту.

Игроки Navi видят что на топе YapzOr(и то у него есть ТП), они даже мигали на него. На этой минуте скорее всего Puppey будет забирать руну на своем треугольнике, MATUMBAMAN смещается с топа на низ, и часто через свой треугольник, а так как снизу пока только zai значит MATUMNAMAN в своем треугольнике. Nisha скорее всего в лесу, так как его место после руны займет Puppey, а сейчас на линии его нет, так же по карте передвижений видно что Nisha фармит ближние леса, и в случае чего сможет быстро подключится к файту на руне.

На 9:47 Navi решаются идти на вражеский треугольник, при этом попадая под скан.

Позиция игроков на 9:47
Позиция игроков на 9:47

Navi принимают решение идти драться втроем(V-tune находится далеко, и видимо планирует забрать руну на реке) за руну, проигрывая по золоту, уровню и находясь в лоуграунде относительно Secret. Против троих игроков среди которых с высокой вероятностью есть MATUMBAMAN. И встречают там троих персонажей, они убивают Puppey'я и далее там появляется Nisha, а после с ТП приходит YapzOr. В результате Navi теряют троих персонажей.

Позиция игроков на 10:08
Позиция игроков на 10:08

Это был очень странный мув. Возможно, они считали что MATUMBAMAN и Nisha фармят свой лес на Топе, однако, если бы они готовились, то видели бы что их там с высокой вероятностью нет. Представим, что Navi все же проделали ту работу что проделал я, и к 10 минуте они решили пойти забрать руну на треугольнике Secret. Исходя из своих знаний они должны знать что на треугольнике Secret на этой минуте скорее всего 3 игрока, и среди них точно Puppey и MATUMBAMAN, а так же с некоторой вероятностью рядом Nisha, так же они видят что zai рядом. И они идут драться меньшинстве, в таком случае тут либо недооценка соперника либо просто безумие. После этого файта Navi уже не камбекнулись.

Комментарии