Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

Подробный разбор устройства искусственного интеллекта.

Блогер Томми Томпсон в своём тексте рассказал, как устроен искусственный интеллект в F.E.A.R. Все враги в игре используют систему целе-ориентированного планирования действий, которая позволяет им выстраивать последовательности шагов для выполнения своей цели. Мы выбрали из текста главное.

Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

В игровой индустрии никогда не прекращается поиск новых и более оптимальных способов создания ИИ. Со временем появилась навигационная сетка, которая упрощает перемещение NPC в пространстве, а также конечные автоматы (Finite State Machine, FSM), на основе которых работает ИИ в Half-Life. Затем Halo 2 популяризировала «дерево поведения», которое теперь наиболее часто применяется в играх.

Примерно в то же время, благодаря F.E.A.R., стал популярным альтернативный способ управления ИИ — целе-ориентированное планирование действий (Goal-Oriented Action Planning, GOAP).

Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

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

Например, представим закрытую дверь. Чтобы NPC мог открыть её, нужна информация о том, закрыта она или нет. На данный момент состояние этого мира — одна закрытая дверь. Так как эта информация доступна, можно запустить действие, которое позволит открыть её.

Каждое действие обычно разбивается на три части: объекты, которые участвуют при совершении действия (в данном случае дверь), предусловия действия – перечень фактов о мире, и эффекты, которые показывают, как мир изменится в результате завершения действия.

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

Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

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

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

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

Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

Для создания ИИ в No One Lives Forever 2 и F.E.A.R. разработчики из Monolith Productions использовали подход, который базируется на автоматизированном планировании, — целе-ориентированное планирование действий (GOAP). Этот подход использует конечные автоматы (FSM) — систему, в которой ИИ существует в пределах одного состояния поведения, а затем переходит в другое, если совершается определённое событие. Например, конечные автоматы в Half-Life имеют более 80 уникальных состояний. А у FSM в системе GOAP есть всего лишь три:

  • перемещение в определённую точку в игровом мире;
  • воспроизведение анимации;
  • взаимодействие со смарт-объектами — интерактивными игровыми предметами.

Если упростить роль противника в игре, то всё, что он делает — это проигрывает последовательность нескольких анимаций в определённых условиях. Когда эта последовательность работает исправно, то возникает иллюзия осознанных действий искусственного интеллекта. Следовательно, каждое из этих трёх состояний сводится к проигрыванию анимации.

Goto — воспроизведение анимации движения (бег, ходьба, прыжок), Animate — воспроизведение других анимаций (стрельбы, реакции на героя и так далее), Use Smart Object — анимация взаимодействия с предметами (открыть дверь, включить свет и так далее)
Goto — воспроизведение анимации движения (бег, ходьба, прыжок), Animate — воспроизведение других анимаций (стрельбы, реакции на героя и так далее), Use Smart Object — анимация взаимодействия с предметами (открыть дверь, включить свет и так далее)

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

Система GOAP создаёт планы с помощью алгоритма A*, который позволяет найти наиболее оптимальную последовательность действий через сравнивание «стоимости» вариантов. Затем действия переводятся в конкретные состояния FSM — передаются данные для перемещения, анимации и взаимодействия со смарт-объектами.

Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

В F.E.A.R. у каждого ИИ-персонажа есть свои цели. Система использует эти цели для планирования действий в условиях боя. Без цели NPC ничего не будут делать.

Всего у противников есть около 70 целей — система позволяет менять их приоритет в зависимости от условий боя. Например, если солдат не знает о том, что игрок находится рядом, то приоритет цели «KillEnemy» будет равен нулю. Соответственно, если при патрулировании враг заметит пользователя, то приоритеты сразу же изменятся.

Чтобы планировщик мог подстроиться под ситуацию, у него должен быть набор действий, из которых он будет выбирать. В игре есть 120 действий, которые включают в себя абсолютно всё: от разных вариантов атаки до idle-анимации. При этом не у всех персонажей есть доступ ко всем действиям. Геймдизайнеры назначали конкретные действия каждому типу противников, благодаря чему разработчики смогли определять, насколько универсальным получится каждый персонаж при решении своих задач.

Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

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

С этой проблемой сталкивается подавляющее большинство систем планирования. Персонажи не могут подстроиться под других NPC. Ни один из вражеских ИИ в F.E.A.R. не знает о существовании своих товарищей, а их слаженные совместные действия — это лишь иллюзия, которая возникает, когда каждый из них выполняет собственную цель. Если какой-то персонаж нарушает план другого NPC, то должен появиться новый план, учитывающий обновлённые условия, или изменить цель. Это достигается тремя разными способами.

  • Когда появляется чёткий план, система сравнивает его с состоянием мира, чтобы удостовериться, что цель будет выполнена.
  • У каждой цели есть функция ReplanRequired, которая постоянно проверяет, стоит ли отказаться от текущего плана и сформировать новый.
  • Каждое действие повторно проверяется во время выполнения. Вместе с этим проходит проверка предусловий и последствий. Если появляется несоответствие, то система заново формирует план.
Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

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

Если план выполнен, то у NPC появляется новый. Постоянный переход от одного плана к другому поддерживает темп игры, а ИИ всегда знает, что нужно делать в следующее мгновение. При этом планы в F.E.A.R. достаточно короткие и состоят из одного-двух действий. Лишь изредка они увеличиваются до трёх-четырёх действий.

Как работает ИИ в F.E.A.R. — постоянное планирование в качестве альтернативы дереву поведения

Со временем разработчики выяснили, что процесс постоянного перепланирования иногда негативно влияет на производительность. Всё дело в том, что на некоторых уровнях есть крысы, которые используют такую же систему целе-ориентированного планирования действий. Как правило, их планы довольно просты — они передвигаются по миру и пытаются убежать от игрока, если он оказывается поблизости. Когда они убегают, они постоянно строят новые планы. Крысы продолжают это делать даже тогда, когда пользователь находится на другом краю карты, потому что они не учитывают, насколько далеко убежали.

Таким образом, игрок может встретить пару крыс в первые секунды уровня, и даже спустя 20 минут они всё ещё будут бегать, постоянно создавая новые планы.

Система целе-ориентированного планирования действий из F.E.A.R. неоднократно применялась в других играх: в Condemned, S.T.A.L.K.E.R.: Shadow of Chernobyl, Just Cause 2, Deus Ex: Human Revolution, перезапуске Tomb Raider, а также в Middle-Earth: Shadow of Mordor и Shadow of War.

Системы планирования всё ещё популярны в видеоиграх, хоть и не так распространены, как дерево поведения. При этом постепенно на замену GOAP приходит иерархическая сеть задач (Hierarchical Task Network, HTN), которая использовалась в Killzone 2, Max Payne 3 и Dying Light.

229229
63 комментария

Я в FEAR не играл уже лет 10, а крысы всё ещё бегают и строят планы! 

101

Комментарий недоступен

31

А как же, не смотрлел пинки и брейн чтоли?

Постоянное вспоминие F.E.A.R. намекает, что сегодня не столь часто встречаешь интересное поведение ботов.

57

Нет. Это говорит лишь о том, что озвучить доклад разработчика c GDC 2006 — это лёгкий способ сделать видео/статью/пост.

Оригинал, который все раз за разом просто пересказывают:

25

На самом деле чувак в видео говорит что система интересная, но не совсем такая как все думали (думали что ахуеть вот это боты, выглядело оно так частично, но механика там неудачная). 

То есть — если текущее поколение использует дерево поведений (хз как это по русски, behavior tree), проще — реакцию на действия и заложенные механизмы, то в концепции ботов фир был ГОАП, которая полагается на планирование. Планирование поведения бота, а не его реакцию. 

Таким образом если ты не учел какой-то план, спидраннера например, то бот просто несработает (я могу напиздеть, но именно эта система была в ХЛ2 и с ней был баг). 

PS: Еще один короткий пример — если ты юзаешь ГОАП и в твоем плане есть Дверь, через которую игрок должен зайти (после происходит действие NPC), а игрок условно заходит через окно, которое не было прописано не в одном из планов — NPC может просто несработать. 

В то время как в behavior tree ты просто напишешь реакцию (да нихуя не просто, но все же) на поведение, что в поле видимости/слышимости NPC что-то произшло и он начинает действие. То есть — реакция на поведение. 

14

Комментарий недоступен

1