Нейросеть обучили проходить лабиринт и собирать монеты в Unity.
Создание ИИ для персонажей, будь то враги или дружественные NPC, всегда было одной из самых интересных задач в геймдеве. Был проведен эксперимент, чтобы выяснить, можно ли привнести в игровой ИИ возможности настоящей нейросети.
В качестве первой задачи в Unity был создан лабиринт размером 20x20, который генерируется случайным образом в начале игры. По нему разбросаны монетки (Энергосферы), которые нужно собирать в стиле игры «Пакман». Бот обладает ограниченной зоной видимости только по вертикали и горизонтали. Его цель — исследовать лабиринт и собрать все монеты.
Для обучения сначала было сыграно 10 партий, где ботом управляли вручную с помощью стрелок клавиатуры, сохраняя каждое движение в датасет. Затем были написаны скрипты для обучения на Pytorch и проведены эксперименты с гиперпараметрами. Обучение модели занимает всего восемь минут.
Получившаяся нейросеть принимает на вход 12 чисел — информацию о том, что бот видит в каждом из четырех направлений. У модели есть память о последних ходах. На выходе она выдает направление для движения.
Эксперимент оказался успешным. Бот самостоятельно проходит лабиринт и собирает монеты. Он действует не механистично, а демонстрирует поведение, похожее на человеческое: иногда крутится на месте, иногда «задумывается». Бот исследует дальние уголки и почти всегда собирает все монеты на поле.
Модель работает очень быстро и занимает всего 200 килобайт. Следующим шагом планируется запустить её на Unity Sentis, поскольку сейчас она работает на самописном сервере.
Перспективы такого подхода весьма интересны. Например, ботов в шутере можно обучать на партиях игроков разного уровня и стиля игры: агрессивных, осторожных, предпочитающих оборону или быстрое наступление. Это позволит настраивать уникальный стиль игры противников.

