Лучшее  🚀
12.12.2018 в 14:19 Evernews

Побег из Нью-Йорка: как устроен ИИ в The Division

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

Кстати, на сайте читать удобнее

Доктор Томми Томпсон с канала AI and Games регулярно рассказывает о принципах работы искусственного интеллекта в современных играх. Последние ролики и статьи Томпсона посвящены The Division: ученый рассказал, как устроен ИИ в мультиплеерном экшене Ubisoft, а мы выбрали из его рассказа самое интересное.

Дизайн искусственного интеллекта

В пост-апокалиптическом Нью-Йорке есть три основных сценария взаимодействия неигровых персонажей с игроком: сюжетные задания, специально подготовленные события и случайные встречи. Во всех трех случаях у ИИ две основных задачи: он должен способствовать поддержанию атмосферы и погружению в игровой мир, а также давать игроку возможность проявить свои способности в бою.

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

ИИ в The Division построен на основе поведенческого дерева, ветви которого соответствуют заранее прописанным моделям поведения: например, поиску противника, атаке или прикрытия персонажами друг друга во время проникновения в здание.

На схеме выше (ее надо читать справа налево) показан фрагмент поведенческого дерева. Три оранжевых блока на верхнем слое дерева это базовые способы, которыми NPC будет реагировать на приказы игровых систем — например, присоединение к бою или какие-то действия во время сражения.

Фиолетовые и синие блоки обозначают действия, которые NPC может предпринять в зависимости от актуальных условий игрового мира или параметров персонажа. На нижнем уровне дерева (желтые блоки) описаны практически все варианты боевых событий, присутствующие в The Division.

Интересно, что второй уровень поведенческого дерева может напрямую взаимодействовать с третьим уровнем — таким образом игра избегает дублирования поведения. Поведенческое дерево в The Division достаточно универсальное: NPC и устройства вроде мин (с точки зрения игрового движка они тоже управляются ИИ) могут использовать очень похожие фрагменты поведенческого дерева.

У универсальности есть цена — архитектура поведенческого дерева в The Division чрезвычайно сложная, ее можно увидеть на изображении ниже. Создание такого дерева потребовало разработки специальных инструментов, позволяющих дизайнерам отлавливать проблемы в работе искусственного интеллекта и отлаживать его на лету.

В релизной версии The Division существует 36 типов вражеских NPC, распределенных по пяти фракциям. Механики поведения NPC зависят от его архетипа (их всего 9), а принадлежность к той или иной фракции добавляет персонажу специальные артибуты. Вот полный список архетипов:

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

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

Принадлежность к определенной фракции может усиливать или ослаблять архетипы: фракции настроены таким образом, чтобы прохождение игры постепенно становилось сложнее. Наборы атрибутов группируются в профили — их можно назначать либо фракции, либо конкретным архетипам NPC.

В зависимости от профиля могут меняться следующие атрибуты NPC:

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

В то же время у всех персонажей с архетипами Heavy, Support или Turret есть собственные профили с индивидуальными настройками, одинаковыми для всех фракций.

Наконец, на поведение NPC также влияют роль и ранг персонажа. Ранги варьируются от новичков, ветеранов и элитных бойцов до уникальных NPC с собственными именами — это самые важные цели. В зависимости от роли и ранга NPC получает бонусы к урону, защите и меткости, а также специальное оружие и снаряжение: например, лазерные целеуказатели.

Устройство искусственного интеллекта в мультиплеерной игре

Все расчеты, связанные с работой искусственного интеллекта, в The Division проводятся на стороне сервера — даже когда игрок путешествует не в Темной Зоне, а прогуливается по обычным районам Нью-Йорка и не состоит ни с кем в группе.

Серверная часть The Division отлично разбирается в поведении персонажей, но очень смутно представляет себе их перемещение: чтобы снизить нагрузку на канал между клиентом и сервером, часть расчетов, связанных с анимацией, перенесли на клиент.

Когда сервер решает, что NPC должен переместиться из одной точки в другую, он рассчитывает траекторию движения персонажа, а затем передает ее на клиент: и игра уже самостоятельно определяет, какие анимации нужно задействовать для передвижения по маршруту.

Некоторые события происходят одновременно и на клиенте, и на сервере, синхронизируясь прямо на лету: NPC выставляют турели, летят гранаты, кого-то исцеляют. Такой подход тоже позволяет снизить нагрузку на канал, но ведет к проблемам — возможно, именно из-за него на старте The Division наблюдались проблемы с читерами.

С технической точки зрения на одном физическом сервере могут работать несколько инстансов игрового сервера The Division, поддерживая до тысячи игроков и несколько тысяч NPC. Чтобы работать с таким количеством данных, тикрейт сервера установлен на 10 герцах — он обрабатывает и обновляет информацию десять раз в секунду.

Сервера The Division работают на машинах с 40 процессорными ядрами и 256 гигабайтами памяти. Обычно они обсчитывают один тик игрового мира за 20 миллисекунд, в худшем случае время обработки может вырастать до 100 миллисекунд — те самые 10 обновлений в секунду.

Объем трафика, передаваемый между клиентом и сервером, составляет около 50 килобит в секунду. Теоретически в The Division можно играть на стареньком модеме.

Интересно, что количество NPC, присутствующих в кадре, ограничивают не серверные, а клиентские мощности. Во время разработки The Division выяснилось, что консольные версии игры не могут одновременно работать со слишком большим количеством NPC. Чтобы в одном месте не скапливалось слишком много NPC, неигровым персонажам выделены зоны, в пределах которых они могут перемещаться.

Для перемещения в игровом мире, навигации и поиска объектов ИИ непрерывно анализирует окружающий мир. Область зрения персонажей представляет собой широкий конус, NPC способны не только видеть, но и слышать; в зависимости от громкости звука меняется расстояние, на котором NPC его услышит.

Частота обработки данных зависит от близости NPC к игроку, а также от погоды на сервере. В бою ИИ может анализировать ситуацию каждый тик; в мирных условиях, если игрок на расстоянии от 50 до 150 метров, NPC будет обрабатывать данные каждые две секунды. Если игрока рядом нет, то обработка данных от сенсоров отключается.

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

Другой интересный инструмент позволял превратить персонажей, управляемых ИИ, в игроков — так тестировалось прохождение заданий и нагрузка на сервер. На карту одновременно забрасывали тысячу NPC со специальными модификаторами: они игнорировали физическую модель и могли, если нужно, ходить или стрелять сквозь стены.

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

Читать далее