Как я учил нейросеть играть в Rocket League

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Оказалось, что существует множество возможностей для создания ботов в этой игре. Взаимодействие стороннего кода и игры происходит через отдельный плагин. Но использовать эти возможности и запускать ботов в сетевом режиме нельзя, по понятным причинам. Создать бота можно используя разные языки программирования, но так как речь зашла про нейросети, то понятно, что это будет python. В игре доступны разные режимы игры (1 vs 1, 2 vs 2, хоккей и т.д.). Чтобы упростить себе задачу, я сосредоточился на режиме 1 vs 1.

Перед тем как приступить непосредственно к теме я хочу выделить два бота, которые можно было найти в open-source:

  1. Nexto. Самый продвинутый бот на данный момент. Был момент, когда игру взломали и добавили возможность запускать бота в соревновательный режим. В итоге этот бот в онлайне показал себя лучше, чем 99% игроков. Для обучения использовался алгоритм PPO с дискретным пространством действий, т.е. бот как бы играет на клавиатуре, а также работает в 12 фпс. Ещё интересный момент, что на входе в сеть есть backbone, основанный на attention-like архитектуре, который собирает всю информацию о текущем состоянии игры в вектор фиксированного размера. Благодаря этому бот может играть с разным количеством игроков, что также позволяет ему играть в разных режимах игры. Только код этого backbon'а выглядит сыровато, и не очень понятно, как конкретно это работает. Размер policy-модели - 444032 параметров.
    Также в его репозитории есть предыдущая версия бота - Necto.

  2. Seer - похоже чья-то магистерская работа. Судя по оценкам автора, он почти добрался до уровня Necto (не Nexto!). Тоже использовал PPO. В его документе можно найти конкретную архитектуру, которую он использовал, систему наград и гиперпараметры. Он использовал общую LSTM для Actor и Critic модели. Actor и Critic модели вместе содержат 2 миллиона параметров. Автор пробовал выполнять претренировку модели на данных с повторов обычных игроков, но это не дало результатов. А ещё он пишет, что обучение заняло 1.5 месяца

Источник: https://habr.com/ru/articles/773454/


Интересные статьи

Интересные статьи

Выстроить и поддерживать хорошую схему проведения собеседований, которая на выходе дает талантливых сотрудников – крайне важная задача. Для проекта или стартапа она имеет решающее значение, потому что...
С февраля 2022 года клиника пересадки волос HFE, как и многие другие, столкнулась с падением количества заявок, обусловленным временным снижением спроса на фоне политических событий. Конверсия в прове...
Знакомые говорят, что история мотивирующая и надо её публиковать. Ну вот.Сколько себя помню, всегда хотел знать иностранные языки, особенно английский, но видел перед собой огромную глуху...
В конце ноября у нас стартует новый поток курса Разработчик игр на Unity и C#, и специально к нему мы делимся подборкой игр на тему Хеллоуина. Все они создавались на соревнованиях вроде L...
Это цикл статей. Предыдущую можно прочесть тутМне офигенно повезло. Когда я устроился на работу trainee, я не знал совершенно ничего. Вокруг сидели люди, разговоры которых меня пугали. Любой, сей...