Drivatar — как устроен искусственный интеллект противников в играх серии Forza

На Youtube канале AI and Games, посвящённому применению искусственного интеллекта (ИИ) в играх, вышел ролик о том, как устроен Drivatar — адаптивный ИИ, который отвечает за контроль оппонентов в серии гоночных игр Forza.

Особенность Drivatar в том, что он анализирует поведение реальных игроков Forza и имитирует их вождение в чужих заездах — таким образом, игроки всего мира играют против друг друга, даже если оппоненты в это время не находится в сети. Drivatar не просто копирует поведение игроков, но и может предположить как бы они вели себя за рулём машин, которые не водили, и на трассах, по которым не ездили.

Обычно геймдизайнеры и программисты сами прописывают правила для поведения противников в возможных ситуациях. Например: «если игрок подошёл слишком близко, то противник должен атаковать или спрятаться за новое укрытие». Если во время игры сложится ситуация, для которой у ИИ противника нет инструкций, он не предпримет никаких действий.

В случае с гонками прописать все входные данные и возможные исходы невозможно. Простая задача «вписаться в поворот» требует учесть скорость машины, направление движения, погодные условия, износ шин, крутящий момент двигателя, тип подвески, и другие подобные факторы. Дополнительную сложность создаёт и то, что в Forza очень много уникальных машин и трасс: к примеру, в Forza Horizon 4 около 700 транспортных средств.

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

Физика, реализованная в движке серии Forza, проработана достаточно глубоко — похожие принципы используют в профессиональных автосимуляторах, на которых готовят водителей MacLaren и Ferrari. При этом разработчикам удаётся поддерживать производительность симуляции физики на достаточно высоком уровне — около 360 кадров в секунду.

Чтобы добиться большей точности симуляции поведения машин, разработчики Forza нередко обращаются за консультациями к производителям комплектующих автомобилей. Более подробно о физике гоночных болидов можно прочитать в книге «Динамика гоночных автомобилей» (Race Car Vehicle Dynamics).

Интересно, что один и тот же движок находится как «под капотом» реалистичной Forza Motorsport, так и более аркадной Forza Horizon. Движок также поддерживает разные типы контроллеров и вспомогательные инструменты (например, систему торможения ABS), а специальный алгоритм AI Controller анализирует выбранную вами машину и рисует на трассе наиболее эффективную траекторию заезда. Последним «слоем» в движке является Drivatar, который надстраивает на остальные компоненты имитацию поведения реальных игроков.

Drivatar появился в Forza ещё в 2005 году и с тех пор постоянно дополняется, что делает его одним из самых крупных проектов в области машинного обучения в геймдеве.

Первые версии Drivatar обучались на данных, которые ИИ получал с локальной консоли игрока и тех данных, которые разработчики Forza заранее записали в память игры. Таким образом, на консоли каждого игрока хранился свой уникальный Drivatar.

Для имитации поведения игрока в Drivatar используются искусственные нейронные сети (Artificial Neural Networks). Каждый нейрон — это потенциально возможное принятое игроком решение. Зная все входные данные (модель машины, погодные условия, участок трассы и прочие факторы) алгоритму нужно хранить в памяти только небольшой файл с весами связей (чем чаще игрок принимает то или иное решение, тем вес нейронной связи больше).

Однако у использования обычных нейросетей был недостаток — отсутствие вариативности. Алгоритм мог воспроизвести поведение игрока, но в одной и той же ситуации ИИ раз за разом принимал одно и тот же решение. Поэтому на следующем этапе разработки вместо обычных сетей начали использовать Байесовские (Bayesian Artificial Neural Networks) — теперь алгоритм стал генерировать несколько возможных решений и воспроизводил одно из них с определённой долей вероятности.

Следующее поколение Drivatar увидело свет в Forza Motorsport 5. Главное отличие новой версии движка было в том, что теперь данные о поведении игроков стали храниться не на локальной консоли пользователя, а в облачном хранилище Xbox Network. Как следствие, теперь для игры требуется постоянное интернет-соединение. Но самое главное чего удалось добиться разработчикам — это то, что игроки всего мира получили возможность соревноваться с чужими «дриватарами».

Drivatar 2.0 разбивает трассу на сегменты, различая 12 уникальных типов поворотов. К примеру, популярная трасса Road Atlanta состоит из 27 сегментов (см. ниже). Затем ИИ анализирует, как игроки проходят каждый сегмент и обновляет данные на облаке. Drivatar учитывает, что мастерство игрока со временем растёт, а значит данные, полученные с недавних заездов, приоритетнее старых.

Для того чтобы в систему не попадали избыточные данные, Drivatar не хранит в памяти все принятые игроком решения, если игрок перепроходит какой-то сегмент трассы с помощью функции Rewind (отмотки времени назад), запоминая только последнюю из попыток.

Стараясь как можно точнее имитировать действия других игроков, Drivatar всё же вносит в алгоритм определённые изменения. Так, если игрок идёт на таран, срезает повороты, едет задом наперёд или по траве, Drivatar сгладит такой «непрофессионализм» и воспроизведёт более спокойную манеру вождения.

Комментарии: 0