Игры, разработка и индустрия

Как шпионский шутер GoldenEye 007 изменил ИИ игр

за авторством Иван Назаренко

Эта история основана на исследовании Томми Томпсона о влиянии шутера GoldenEye 007 на ИИ видеоигр в целом.

Разработчики из Rare, издатель Nintendo и владельцы прав MGM ожидали, что шутер GoldenEye 007 для Nintendo 64 провалится, но игра смогла занять третье место в списке бестселлеров консоли. В 1998 году GoldenEye 007 наградили премией BAFTA — тогда это было в новинку для индустрии.

GoldenEye 007 изменила «шутеры от первого лица» как жанр — в том числе в плане искусственного интеллекта. В 1997 году не было единого метода создания ИИ в играх. Чтобы узнать, как разработчикам удалось создать свой искусственный интеллект и заставить его работать на Nintendo 64, Томми Томпсон связался с одним из создателей игры Дэвидом Доуком.


Идея нового ИИ

Вернёмся в начало: большую часть Goldeneye 007 придумали два человека — Мартин Холлис, продюсер и креативный директор игры, и Марк Эдмондс, программист игрового движка и геймплей-программист. Сначала Холлис вдохновлялся играми типа Virtua Cop, где враги выпрыгивали на игрока, стреляли и после прятались. Но позже он захотел создать ИИ, который выйдет за рамки стандарта, установленного Doom в 1993 году. В 2004 году, на Европейском форуме разработчиков, Мартин сказал:

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

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

Когда Дэвид Доук присоединился к разработке, Эдмондс уже создал основные части движка, которые отвечали за движение в пространстве, рендеринг и базовые поведения ИИ. Но большую часть игровых механик и ИИ добавили за последние два года разработки — появилась система патрулирования и взаимодействие с окружающим миром и предметами в нём: терминалами тревоги и писсуарами.

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

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

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

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

Получился простой конечный автомат: ИИ существует в определенном состоянии, происходит какое-то событие в игре и активирует переход к другому состоянию. Такой же принцип позже используют в Half-Life — Дэвид Доук отреагировал на это так:

Моим любимым моментом была встреча с разработчиками из Valve на Европейской компьютерной выставке в 1998 году — они шутили, что GoldenEye заставила их переделать кучу вещей в Half-Life. После этого они [Valve] начали делать все правильно.

Исполнение ИИ

Камера и система STANов — два важнейших элемента движка GoldenEye. Для удобства рендеринга уровни разбиты на «комнаты».

STAN (сокращение слова Stand) — это полигон на сетке в определенной комнате, по которому назначали позиции персонажей. Стоя поверх определенной STAN, NPC увидел бы игрока только в случае, когда их полигоны находятся в одной комнате или соседних — для этого движок проверяет, видят ли два STAN друг-друга. Так разработчики создали вариант «зрения», который требует меньше ресурсов, поэтому производительней трассировки трёхмерных лучей. Но это не всегда работает: охранники на дамбе заметят вас, только когда вы окажетесь на схеме их пути, потому что они видят только STAN под лестнице башни, в которой находятся — значит можно сколько угодно бродить вокруг незамеченным.

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

В современных играх для навигации по карте обычно используются навигационные сетки — многоугольные поверхности, которые определяют, где персонажи могут перемещаться. Их не было в 1997 году, поэтому в GoldenEye создали систему навигационных схем PAD, которая объединяла комнаты со STANами. Вдобавок, PADы были связаны между собой. NPC знают, в какой комнате они находятся, и могут запустить поиск PADа в нужной им комнате, если есть какой-то шум, или нужно переместиться по STANам в своей комнате к интересующим их предметам.

Звуковые триггеры работают просто: NPC запускают проверку, если находятся в пределах радиуса звука. Пистолет PP7 с глушителем не привлекает внимания вообще — стандартный PP7 громкий, но KF7 ещё громче.

Работа ИИ

Все инструменты и системы, которые использовали в работе с ИИ, впечатляют — но многие вещи в GoldenEye также требовали индивидуального подхода. Например, система укрытий работала так, что NPC не умели активно прятаться за какими-то объектами — поэтому для некоторых уровней пришлось создать уникальные скрипты, чтобы NPC могли стоять возле определённых PADов и по-разному реагировать на них — в зависимости от того, высокое укрытие или нет.

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

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

Если игрок слишком медленно проходил уровни, NPC реагировали на звуки, даже если не находились в видимости игрока. Враг создавал своих клонов, которые исследовали источник шума до тех пор, пока этот шум не прекращался или противник не появлялся. На уровне «Архивы» можно столкнуться с большим количеством клонов противников.

Весь созданный для игры инструментарий позже использовали и значительно улучшили в духовном наследнике GoldenEye 007 — шутере Perfect Dark от Rare. NPC научились сами прятаться за укрытиями, плохое освещение стало влиять на геймплей и создавало плохую видимость для игрока и врагов. Многое из этих систем появилось позже в Timesplitters — её разработали бывшие разработчики GoldenEye.


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

Поделиться Twitter/ FB/ VK/ скопировать ссылку