Gamedev Андрей Верещагин
4 378

Приказы сверху: как ИИ управляет масштабными сражениями в Halo 3

Система постановки задач и отряды NPC.

В закладки
Аудио

Автор YouTube-канала AI and Games Томми Томпсон выпустил видео о том, как устроена система управления искусственным интеллектом в масштабных битвах в Halo 3. За основу была взята технология, применявшаяся во второй части шутера, однако разработчикам пришлось изрядно переработать её, чтобы не нагружать Xbox 360 и сделать сражения убедительными. Мы выбрали из материала главное.

Предпосылки

Halo 2, вышедшая в 2004 году, была первым шагом на пути к распространению техники ИИ под названием «древо поведения». Благодаря ей система выбирает, как каждый конкретный NPC должен вести себя в определённых условиях. Такой метод идеально подходил второй Halo, учитывая многообразие боевых ситуаций и арен для сражения. Разработчики из Bungie могли включать и отключать отдельные секции древа в зависимости от контекста боя.

Древо поведения

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

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

Система хорошо работала в Halo 2, но управлять ею в условиях масштабных сражений, которые Bungie хотела ввести в третьей части шутера, было бы слишком сложно. Поэтому разработчикам пришлось изобрести иной метод постановки задач для NPC.

Задачи

Halo 3 вышла на Xbox 360 в 2007 году. В игре были масштабные битвы, в которых могли принимать участие десятки NPC разных фракций. Кроме того, на поле боя присутствовала и военная техника.

Вместо того, чтобы указывать искусственному интеллекту что и как ему следует делать, система просто ставила перед ИИ задачи, которые тому необходимо выполнить. Отряды и отдельные юниты самостоятельно выбирали, как подходить к решению той или иной проблемы. Разработчики Halo 3 заставляли UNSC, Ковенант и Потоп выполнять разные миссии на разных этапах сражения: охранять территорию, захватывать технику или атаковать определённые цели.

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

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

HaloScript

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

Отряды

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

По словам программиста Дэмиана Исла, эта система работает по принципу «Plinko-автомата». Она «прогоняет» отряд по всему древу целей, выбирая для него задачу с наивысшим приоритетом, за которую ещё никто не взялся. Проверка производится каждый раз, когда цели меняются, либо когда какая-то из миссий выполняется.

Древо целей

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

Как отмечает Томми Томпсон, система отрядов существует не только для того, чтобы выполнять определённые задачи, но и затем, чтобы минимизировать время, за которое каждый отдельный персонаж получает информацию о ситуации на поле боя. Ввиду того, что в Halo 3 на экране может находиться много NPC, иной подход способен сильно навредить производительности.

Информация, которую получают отряды

Все члены отряда получают одни и те же данные о происходящем вокруг, а затем используют их для принятия решений. Учитывается лишь релевантная для конкретной группы информация, поэтому системные вычисления сведены к минимуму, а обновление происходит лишь по мере необходимости. Так разработчикам из Bungie удалось «убить двух зайцев»: заставить противников действовать сообща, а также не нагружать Xbox 360.

В заключение автор видео отмечает, что технические достижения Halo 2 и Halo 3 нельзя переоценить. По его словам, эти игры изменили подход к созданию искусственного интеллекта примерно так же, как F.E.A.R.

Сейчас за франшизу Halo отвечает 343 Industries, а Bungie переключилась на серию Destiny. Однако вы можете быть уверены, что инструменты [авторов Halo] применяются не только этими студиями и используются во многих ААА-шутерах.

Томми Томпсон

#геймдизайн #ии

{ "author_name": "Андрей Верещагин", "author_type": "editor", "tags": ["\u0438\u0438","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 18, "likes": 55, "favorites": 65, "is_advertisement": false, "subsite_label": "gamedev", "id": 31500, "is_wide": true, "is_ugc": false, "date": "Thu, 15 Nov 2018 16:56:03 +0300" }
{ "id": 31500, "author_id": 22254, "diff_limit": 1000, "urls": {"diff":"\/comments\/31500\/get","add":"\/comments\/31500\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/31500"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "possessions": [] }

18 комментариев 18 комм.

Популярные

По порядку

Написать комментарий...
9

Чем больше статей о Halo я читаю, тем сильнее поддаюсь соблазну купить Xbox. Первые две части одни из моих любимых шутеров.

Ответить
2

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

Ответить
3

Играю на хуане в ремастер первого хэйло, и чтото подгорает а хардах местами )

Ответить
0

в ремастере тоже нпс такие умные?

Ответить
0

Halo на Легенде - это другая игра, к которой ещё надо готовиться часов десять-пятнадцать. Особенно это касается второй части, её считают самой сложной в серии.
Лучше всего начинать на героическом.

Ответить
0

каким образом готовиться?

Ответить
0

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

Ответить
0

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

Ответить
0

Я пока на героике. Добрался до ядра управления. В итоге, вспоминаю детство. Заагрил пару врагов, расстрелял, и так до победы. Особенно повеселило когда завалил ждвух жирных, открываю двери, а там толпа )
так получилось, что мне за сущие копейки отдали первый хуан. а тут товаришь еще акком поделился с голдом и пассом. ну там и скачал все хэйло и все гири, даром что рич и одст докупить пришлось, но это копейки вышли.

Ответить
0

Давно Master Chief Collection запускали? Там теперь ODST тоже есть.

Ответить
0

Вчера запустил, сегодня ночью вырубил. Хуан стоит меньше недели дома, только начал. ODST сразу взял, и Reach сверху

Ответить
0

от вроторой на легенде на еще первом боксе я пригорел в свое время от атоприцеливания, очень мешает

Ответить
1

Кто знает, тот поймет. Хе-хе.

Ответить
1

AI как AI, и шутерок такой себе, F.E.A.R. впечатлил больше в свое время, а behavior tree ... ну такое, не удивляет опять таки (структура простая, раз заморочились могли бы и побогаче реакции сделать).

p.s Halo люблю)

Ответить
0

Кажется, рассказы о том какой в Halo был офигенный ИИ еще на моих похоронах простудятся.

Но все заслуженно, обажаю Halo.

Ответить
0

Как понимаю именно ИИ не позволит в Хало 3 топовый графон.

Ответить
0

у них вроде как гпу аи не занимается

Ответить
0

ОПЯТЬ СКРИНШОТЫ В PNG.
Автор, ты не разбираешься в форматах?

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Уве Болл вернулся в кино
и начал экранизировать flash-игры
Подписаться на push-уведомления