на главную
об игре
F.E.A.R. 17.10.2005

Как создавался "живой" ИИ для F.E.A.R.?

Первая часть трилогии F.E.A.R вышла в 2005 году. Игра была прорывной в плане баллистической системы, графики и, конечно же, искусственного интеллекта. С тех пор прошло 14 лет, но если вы запустите F.E.A.R сегодня, то убедитесь, что ИИ врагов по-прежнему даст фору ИИ в современных блокбастерах. Как же так получилось?

Ответить на этот вопрос нам поможет Джефф Оркин, ведущий программист искусственного интеллекта первой части F.E.A.R. Его доклад состоялся в рамках конференции GDC в 2006 году. В оригинале, с которым вы можете ознакомиться здесь, присутствует множество технических терминов и нюансов, которые рядовому пользователю либо ни о чём не скажут, либо ещё больше запутают. Я взял на себя смелость адаптировать текст, чтобы каждый «не программист» сумел понять принципы работы ИИ в этой прорывной игре. В моём вольном пересказе мы не будем углубляться в технические аспекты, но постараемся понять основные принципы. Устраивайтесь поудобнее.

Начало пути

Разработчики хотели создать игру, которая переплюнет лучшие блокбастеры, а бои против ИИ по напряженности будут тягаться с мультиплеерными матчами против опытных игроков. В F.E.A.R. боты прячутся за укрытиями, ведут огонь вслепую, влетают в оконные проемы, закидывают игрока гранатами, переговариваются друг с другом, и вообще ведут себя как живые противники. Секрет их поведения кроется в формуле:

Джефф Оркин называет формулу «Three States». Суть формулы заключается в следующем: вместо того, чтобы отдельно указывать, какая анимация должна проигрываться, нужная анимация производится через SmartObject (смарт-объект) в базе данных игры.

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

Система планирования

Главная задача при моделировании поведения персонажа – определить, когда нужно переключаться между состояниями Goto и Animate, и какие параметры необходимо установить. Разработчики внедрили в F.E.A.R. систему планирования, которая позволяет ИИ самостоятельно решать, когда нужно переходить из одного состояния в другое.

Во времена раннего поколения игр, игрокам для счастья было достаточно того, что ИИ в принципе их замечал и атаковал. В 2000-х годах ИИ научился занимать укрытия и даже создавать их, опрокидывая предметы интерьера. В F.E.A.R. ИИ грамотно использует укрытия и координируется с сослуживцами для организации подавляющего огня, позволяющего другим членам отряда обойти игрока. Противники покидают укрытие только если их прижмут, а стреляют вслепую только в крайнем случае.

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

«Планирование – это формализованный процесс поиска последовательности действий, который приводит к выполнению поставленной задачи.» — Джефф Оркин

Наглядный пример

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

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

В GDBEdit (редактор баз данных) Monolith создавали из таких задач наборы. Для лучшего понимания, представьте себе, что мы создали набор, который состоит всего из двух задач – патрулировать и убить врага. Когда мы зададим этот набор солдату в редакторе и запустим игру, тот уже не будет игнорировать игрока. Бот будет патрулировать порт до тех пор, пока не увидит игрока, после чего откроет по нему огонь.

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

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

Поведение отряда

В F.E.A.R. существует координирующий механизм, который периодически формирует из нескольких ботов отряд, который основан на дальности расположения солдат. Поведение отряда делится на две категории: простое и сложное. Простое поведение включает в себя поддержку подавляющим огнём, отправку ботов по различным позициям, или же следование друг за другом. Сложное поведение подразумевает под собой ситуации, которые требуют детальный анализ ситуации, как: обход с фланга, координированные атаки, отступления и запросы подкреплений.

Коммуникация внутри отряда

В F.E.A.R. последний оставшийся в живых член отряда может выкрикнуть фразу: «Мне нужно подкрепление!». В Monolith, на самом деле, не вводили механизм прибытия подкреплений к противнику, но по мере продвижения по уровню, игрок всё равно встречает больше врагов. Таким образом, логично предположить, что следующая группа противников стала следствием озвученного вызова подкрепления. На деле это не так.

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

Диалоги между противниками скрывают недостаток действий. Если у ИИ не получается передислоцироваться, игрок начинает думать, что тот глуп. Но добавьте диалог и ситуация в корне меняется. ИИ в курсе, что ему нужно переместиться, но он не может сделать этого из-за отсутствия более выгодной тактической позиции. В таком случае он скажет: «Мне некуда идти!».

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

Заключение

После выхода F.E.A.R., многие игроки отметили высокий уровень ИИ в игре, что окупило все затраченные на его создание усилия. Многие люди говорили, что ИИ солдат напомнил им морпехов из Half-Life 1.

«Half-Life ушел в релиз в 1998-м, а F.E.A.R. – в 2005-м. Значит, похоже, не так уж и много прогресса мы совершили за эти семь лет. А хуже всего, что многим это нравится! А ведь так много ещё можно сделать с игровым ИИ.» — Джефф Оркин

Сегодня на дворе 2019 год, а F.E.A.R. по-прежнему является показательным примером грамотной работы над искусственным интеллектом. Безусловно, правила игры изменились. В 2005 году не было и речи о играх с открытым миром и сложной системой поведения персонажей. Тем не менее, Monolith сумели в трёх стенах создать лучший симулятор боя, который стал мерилом для будущих линейных шутеров.

Мой текст познакомил вас с принципами работы ИИ в F.E.A.R., вы узнали больше об истории разработки механики, о её тонкостях. Но, чтобы система действительно вас впечатлила, игру стоит оценить самостоятельно.

Комментарии: 16
Ваш комментарий

Пожалуй лучший хоррор-шутер от первого лица.

21
Разработчики хотели создать игру, которая переплюнет лучшие блокбастеры

Жаль сейчас с таким настроением почти никто игры не делает

15

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

1

TsDarg вАщетА первая часть тоже на консолях была. Так что не в консолях дело.

3

TurboLife Не было, консоль бы взлетела в стратосферу, порт потом сделали когда вышло поколение новое.

2

NatanieLzZ ведь говноедам в нынешних реалиях заходят "на ура" всякие "королевские говнобитвы "

10

RButler То есть на консолях упрощённый ИИ?

1

Сделали бы такой же качественный ремастер как modern warfare было бы круто,с удовольствием бы купил.

6

Умели же раньше игры делать

3

Хех, спустя 15 лет разработчики даже такой искусственный интеллект, в ограниченном пространстве не могут сделать, прогресс нафиг. Серьёзно, в этой игре враги ощущались почти как живые люди, они даже реагировали на действия игрока, например отходили от гранаты, или пытались зажать, окружить его. Единственная игра с открытым миром на моей памяти, где был неплохой искусственный интеллект это первый и второй stalker. Всё дальше как отрезало, враги тупые как пробки, которые только и способны бежать на убой.

1

и тут такой безголовый из serious sam - АааааААААааааАааа

0