Привет! На связи 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+ предиктов.

График распределения вероятностей (шансов) на тестовом наборе игр.
Снизу отображаются шансы, 0 - вероятная победа dire, 1 - победа radiant. Показатель в ~0.5 показывает, что по мнению модели шансы обеих команд равны.
График распределения вероятностей (шансов) на тестовом наборе игр. Снизу отображаются шансы, 0 - вероятная победа dire, 1 - победа radiant. Показатель в ~0.5 показывает, что по мнению модели шансы обеих команд равны.

Комментарии (13)


  1. Griboks
    15.07.2021 15:33

    Уже смогли обыграть самых популярных букмекеров? Если нет, то зачем было нужно это все делать?

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


    1. themaxlife Автор
      15.07.2021 15:41

      Делали тесты по лайву и по прематчам (тоже самое, только предикты публикуются до начала игры), каждый раз происходило увеличение банка за 100 ставок, от 20% до 300%. Последний тест проводили неделю назад, за 130 ставок вышло x2.4 к банку.

      Больше всего профита приносили предикты по прематчам, у них проходимость гораздо меньше (в среднем 65%), зато выше кефы. Про прематч модель расскажу в следующей статье.

      Вообще считаю, что это не совсем объективная информация. На это есть 2 причины:

      1. Маленькая дистанция в 500-600 ставок

      2. Индивидуальная составляющая, разные БК, разные коэффиценты, разный подход к ставкам и так далее


  1. GreySS
    15.07.2021 15:48

    Все матчи идут с задержкой от 5 минут. На квалах к инту задержка была 10 минут. У самой же БК есть доступ к матчам без задержки. Отсюда вывод, что с таким приличным окном и не равными условиями (между БК и игроком) играть в плюс невозможно.


    1. themaxlife Автор
      15.07.2021 15:50

      У нас тоже нет такой большой задержки, БК получают данные с такого же API как и мы, конечно, мы проигрываем БК, но буквально секунд 5-10
      Задержки ставятся специально для стримеров от 2 до 15 минут


      1. GreySS
        15.07.2021 15:54

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


        1. themaxlife Автор
          15.07.2021 15:55

          Задержки нет на некоторую часть информации, так сказать общую, её и использует БК
          Остальное скрыто за задержкой, вы правы.


          1. GreySS
            15.07.2021 15:59

            Опять же — нет! У них есть привилегированный доступ к матчу. Это неоднократно обсуждалось комментаторами и на различных игровых сайтах. И еще это заметно, когда во время игры неожиданные кэфы появляются и через некоторое время становится ясно почему, своего рода спойлеры.


            1. themaxlife Автор
              15.07.2021 16:04

              Вы всерьёз считаете, что игровая компания выделяет приватный доступ всяким букмекерским конторам?
              В статье я оставил ссылку на официальное апи Dota 2 - один из методов называется "GetTopLiveGame" - позволяет получить информацию о топовых матчи без задержки от 2 до 15 минут. В массиве каждой игры содержится базовая информация - килы, нетворс, минута игры и так далее. У БК информация о килах, нетворсе, минуте игры обновляется по этому методу

              По этому же методу работают несколько известных сайтов по лайв статистике матчей Dota 2 без задержки


  1. Xazzzi
    15.07.2021 23:59

    Интересно было бы посмотреть статистику по тому, насколько ваша модель лучше чем какой-то банальный критерий, вроде «у кого больше гпм/kda тот и выиграет».

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


    1. mad_god
      16.07.2021 10:55
      -1

      Все ошибаются, так, если игрок ошибся, эта ошибка может перевернуть всю игру.


      1. Xazzzi
        16.07.2021 14:34

        Само собой, может перевернуть. Мой комментарий скорее о следующем:

        У нас есть модель, которая выбирает 1 вариант из 2х возможных. Базовая точность в 50% - это просто отдавать случайный вариант из 2х. Авторы заявляют что модель получилась сложная, учитывающая много параметров, при этом точность достигнута на уровне 75%. Интересно узнать, какие входящие оказывают наибольшее влияние на эти +25% от math.random


  1. Sazokuto
    16.07.2021 12:50

    Какая была выборка, просто по паблик-матчам или рассматривались матчи тир-1 команд?


    1. themaxlife Автор
      16.07.2021 12:52

      Для некоторых показателей в разных моделях (который объединяются в общую) исп. в том числе паблик матчи с фильтром по ммр (> 5500)
      В проф матчах все тир 1-3 лиги