Подробности Создания Бота Для Dota 2

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

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

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



Подробности создания бота для Dota 2

Изменение рейтинга TrueSkill (похожий на рейтинг Эло для шахмат) нашего бота с течением времени, рассчитанное с помощью моделирования игр между ботами.

Проект развивался следующим образом.

15% игроков имеют рейтинг ниже 1,5К по шкале ММР ; У 58% игроков оно ниже 3К; 99,99% игроков имеют рейтинг ниже 7,5К.

• 1 мая: первый Результаты обучение с подкреплением в простой среде Dota, где Drow Ranger учится сражаться с жестко запрограммированным Earthshaker. • 8 мая: тестер с ММР at 1.5K говорит, что его результаты улучшаются быстрее, чем у бота.

• Начало июня: победил тестера с MMR 1,5 тыс.

• 30 июня: выиграл большинство игр у тестера с MMR 3000. • 8 июля: впервые с небольшим отрывом выиграл от полупрофессионального тестировщика с ММР 7,5К.

• 7 августа: победа Блиц (6,2К, бывший профессионал) со счетом 3-0, Пайкатт (8,5К, профессионал) 2-1, и CC&C (8,9К, профессионал) 3-0. Все согласились, что SumaiL придумает, как его победить.

• 9 августа: победил Arteezy (10К, профессионал, один из лучших игроков) со счетом 10-0. Он сказал, что SumaiL справится с этим ботом.

• 10 августа: Победа над SumaiL (8,3 тыс.

, профессионал, лучший игрок 1 на 1) со счетом 6–0. Игрок заявил, что бота невозможно победить.

Я играл с версией бота от 9 августа и выиграл 2-1. • 11 августа: победил Денди (7,3К, профессионал, бывший чемпион мира) со счетом 2-0. На 60% больше побед, чем в версии от 10 августа.

Игра против СумаиЛ



Задача

В полной версии игры игроки сражаются 5 на 5, но в некоторый турниры есть и игры 1 на 1. Наш бот играл по стандартным турнирным правилам — особых упрощений для ИИ мы не добавляли.

Бот работал со следующими интерфейсами: • Наблюдение: API-интерфейсы, разработанные с учетом тех же возможностей, что и живые игроки, в отношении героев, других персонажей в игре и поверхности вокруг героя.

Игра частично наблюдаема.

• Действия: доступны через API с частотой, сравнимой с человеческой, включая перемещение в определенное место, атаку и использование предметов.

• Обратная связь: бот получает вознаграждение за победу, а также простые параметры, такие как здоровье и последние хиты .

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

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

Бот играет против Arteezy

Турнир The International

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

Вечером в понедельник Пайкатт победил, используя необычную сборку предметов.

Мы добавили эту сборку в список доступных предметов.

Около 13:00 в среду мы протестировали последнюю версию бота.

Бот потерял много здоровья после первой волны.

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

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

И мы объединили это с ботом Monday только для первой волны и закончили всего за 20 минут до появления Arteezy. После матчей с Arteezy мы обновили модель блокировки крипов, что увеличило TrueSkill на единицу.

Последующая тренировка перед матчем с SumaiL в четверг увеличила TrueSkill на два очка.

SumaiL отметил, что бот научился произносить разрушительные заклинания [raze] вне поля зрения противника.

Это произошло благодаря механике, о которой мы не знали: применение за пределами прямой видимости противника не позволяет ему зарядить вонд. Arteezy сыграл матч с нашим тестером уровня 7,5К.

Arteezy выигрывал игру, но нашему тестировщику удалось удивить его стратегией, которую он узнал от бота.

Позже Артизи отметил, что эту стратегию однажды применили против него Папарази, и что она используется редко.

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



Уязвимости ботов

Хоть SumaiL и назвал бота «непобедимым», он все равно может запутаться в ситуациях, слишком отличающихся от увиденных.

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

Успешные уязвимости разделились на три категории: • Перетаскивание крипов.

Вы можете постоянно заставлять крипов с линии преследовать вас сразу после их появления.

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

• Сфера яда + кружево ветра: дает преимущество в скорости передвижения перед ботом на первом уровне и позволяет быстро наносить урон.

• Raze на первом уровне: требует умения, но несколько игроков класса 6-7К смогли убить бота на первом уровне, успешно выполнив 3-5 заклинаний за короткое время.

Исправление проблем в матчах один на один будет аналогично исправлению ошибки Пайкатта.

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



Инфраструктура

Мы пока не готовы обсуждать внутренние особенности бота — команда работает над решением проблемы с игрой 5 на 5. Первым шагом проекта было выяснить, как запустить Dota 2 в облаке на физическом графическом процессоре.

Игра в таких случаях выдавала непонятную ошибку.

Но при запуске на графическом процессоре на рабочем столе Грега (во время выступления этот рабочий стол был вынесен на сцену) мы заметили, что Дота загружалась с подключенным монитором, и выдавала то же самое сообщение без монитора.

Именно поэтому мы настроили наши виртуальные машины так, чтобы они делали вид, что к ним подключен физический монитор.

На тот момент Дота не поддерживала выделенные сервера, то есть запуск с масштабированием и без GPU был возможен только в версии с очень медленным программным рендерингом.

Затем мы создали заглушку для большинства вызовов OpenGL, за исключением тех, которые необходимы для загрузки.

Заодно мы написали бота в скриптах - как эталон для сравнения (особенно потому, что встроенные боты плохо работают в режиме 1 на 1) и для понимания семантики API бота .

Скрипт-бот достигает 70 ластхитов за 10 минут на пустой дорожке, но все равно проигрывает достаточно хорошим игрокам.

Наш лучший бот 1 на 1 набирает примерно 97 (он рано разрушает башню, поэтому мы можем только экстраполировать), а теоретический максимум — 101. Бот играет против SirActionSlacks. Стратегия отвлечь бота толпой курьеров не сработала

Пять на пять

1 на 1 — это сложно, но 5 на 5 — это океан трудностей.

Нам нужно будет расширить возможности ИИ, чтобы справиться с этим.

Как обычно, начнем с копирования поведения.

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

Записи матчей хранятся на серверах Valve в течение двух недель.

Мы загружали записи каждой игры на экспертном уровне с ноября прошлого года и накопили набор данных из 5,8 миллионов игр (каждая игра длится примерно 45 минут с участием 10 игроков).

Мы используем OpenDota на поиск записей и дал им 12 000 долларов (в десять раз больше, чем они хотели собрать за год) на поддержку проекта.

У нас еще много идей, и мы мы нанимаем программисты (интересующиеся машинным обучением, но не обязательно эксперты) и исследователи, чтобы помочь нам.

Мы благодарим Microsoft Azure и Valve за поддержку в нашей работе.

Теги: #Игры и игровые консоли #искусственный интеллект #dota 2

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.