Привет! На связи zmax505, я бы хотел рассказать о своём опыте по созданию проекта по MOBA игре Dota 2. Мы с iory разработали модель машинного обучения, которая анализирует игры в live и на основе различных данных предсказывает предполагаемого победителя встречи.
Кратко о проекте
HackProDota - некоммерческий проект для анализа профессиональных игр Dota 2 в рамках Tier 1 и Tier 2 турниров. Сервис запущен 8 мая 2021 г. и уже проанализировал 1799 игр с точностью (проходимостью) в 74.06% на момент написания статьи.
О предиктах
В среднем предикт выдаётся на ~10 минуте игры. Сервис работает в автоматическом режиме 24/7 и публикуют в телеграм канале почти все матчи в лайве с предполагамым исходом.
На примере выше мы можем увидеть матч между OG и Tundra Esports на 2 карте. Сервис опубликовал пост в тг на 11 минуте игры в лайве, предполагаемый победитель по мнению модели на момент публикации - OG c вероятным шансом 82%. Встреча закончилась победой dire.
О модели
Модель создана на основе нейросетей при помощи фреймворка TensorFlow на языке Python 3, используется библиотека Keras. После многочисленных тестов были выбраны именно нейросети, так как по сравнению с другими вариантами, они показали наибольшую эффективность.
Главная модель объединяет в себя несколько других моделей, например, модель для анализа купленных предметов каждого игрока radiant и dire, модель для анализа показателей по GPM/XPM каждого игрока radiant и dire и так далее. Это сделано для облегчения в тестировании, проверки и дальнейшей доработки/переобучения в случае необходимости.
О параметрах
Для анализа в реальном времени собираются десятки различных параметров, которые мы можем получить из официальных API от Steam.Помимо общих параметров (пики, команды, нетворсы, килы и т.д.) собираются и анализируется чуть больше 10 переменных для каждого героя в игре.
Где получаем данные
Используются официальные API от самих Valve.Подробнее можно узнать на их официальном ресурсе https://wiki.teamfortress.com/wiki/WebAPI#Dota_2
Заключение
Считаю, что проект вышел довольно успешным и показывает хорошие результаты, получилась 74%+ точность при большой выборки из 1800+ предиктов.
Комментарии (13)
GreySS
15.07.2021 15:48Все матчи идут с задержкой от 5 минут. На квалах к инту задержка была 10 минут. У самой же БК есть доступ к матчам без задержки. Отсюда вывод, что с таким приличным окном и не равными условиями (между БК и игроком) играть в плюс невозможно.
themaxlife Автор
15.07.2021 15:50У нас тоже нет такой большой задержки, БК получают данные с такого же API как и мы, конечно, мы проигрываем БК, но буквально секунд 5-10
Задержки ставятся специально для стримеров от 2 до 15 минутGreySS
15.07.2021 15:54Это невозможно. Задержка существует, чтобы избежать читерства в игре. Если бы так можно было получать данные, то соперник мог бы узнать важную информацию, типа где стоят варды, где сейчас находятся герои, сколько денег заработано и тп.
themaxlife Автор
15.07.2021 15:55Задержки нет на некоторую часть информации, так сказать общую, её и использует БК
Остальное скрыто за задержкой, вы правы.GreySS
15.07.2021 15:59Опять же — нет! У них есть привилегированный доступ к матчу. Это неоднократно обсуждалось комментаторами и на различных игровых сайтах. И еще это заметно, когда во время игры неожиданные кэфы появляются и через некоторое время становится ясно почему, своего рода спойлеры.
themaxlife Автор
15.07.2021 16:04Вы всерьёз считаете, что игровая компания выделяет приватный доступ всяким букмекерским конторам?
В статье я оставил ссылку на официальное апи Dota 2 - один из методов называется "GetTopLiveGame" - позволяет получить информацию о топовых матчи без задержки от 2 до 15 минут. В массиве каждой игры содержится базовая информация - килы, нетворс, минута игры и так далее. У БК информация о килах, нетворсе, минуте игры обновляется по этому методу
По этому же методу работают несколько известных сайтов по лайв статистике матчей Dota 2 без задержки
Xazzzi
15.07.2021 23:59Интересно было бы посмотреть статистику по тому, насколько ваша модель лучше чем какой-то банальный критерий, вроде «у кого больше гпм/kda тот и выиграет».
В большой доле игр на 10й минуте часто уже понятен исход.mad_god
16.07.2021 10:55-1Все ошибаются, так, если игрок ошибся, эта ошибка может перевернуть всю игру.
Xazzzi
16.07.2021 14:34Само собой, может перевернуть. Мой комментарий скорее о следующем:
У нас есть модель, которая выбирает 1 вариант из 2х возможных. Базовая точность в 50% - это просто отдавать случайный вариант из 2х. Авторы заявляют что модель получилась сложная, учитывающая много параметров, при этом точность достигнута на уровне 75%. Интересно узнать, какие входящие оказывают наибольшее влияние на эти +25% от math.random
Sazokuto
16.07.2021 12:50Какая была выборка, просто по паблик-матчам или рассматривались матчи тир-1 команд?
themaxlife Автор
16.07.2021 12:52Для некоторых показателей в разных моделях (который объединяются в общую) исп. в том числе паблик матчи с фильтром по ммр (> 5500)
В проф матчах все тир 1-3 лиги
Griboks
Уже смогли обыграть самых популярных букмекеров? Если нет, то зачем было нужно это все делать?
Можно также сделать для своей игры для предсказания лучшего билда и стратегии? Если да, то как посмотреть исходники?
themaxlife Автор
Делали тесты по лайву и по прематчам (тоже самое, только предикты публикуются до начала игры), каждый раз происходило увеличение банка за 100 ставок, от 20% до 300%. Последний тест проводили неделю назад, за 130 ставок вышло x2.4 к банку.
Больше всего профита приносили предикты по прематчам, у них проходимость гораздо меньше (в среднем 65%), зато выше кефы. Про прематч модель расскажу в следующей статье.
Вообще считаю, что это не совсем объективная информация. На это есть 2 причины:
Маленькая дистанция в 500-600 ставок
Индивидуальная составляющая, разные БК, разные коэффиценты, разный подход к ставкам и так далее