Это перевод статьи от Paavo, в которой автор пытается расставить все точки над i в отношение того, как позиционировался Radiant AI, что в итоге получили игроки с подробным разбором пакетов ИИ в Обливионе и каким выглядел ИИ всех последующих игр Бесезды.

"Абсурдно глубокий заход в тему противоречивого ИИ в Обливионе и его наследия".

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

Недавний релиз The Elder Scrolls IV: Oblivion Remastered вновь зажег интерес к рпг-классике 19-летней давности, вновь сделав этот проект, хоть и временно, одним из самых играемых и обсуждаемых тайтлов Бесезды. Ремастер — основательный апгрейд оригинала, привносящий новую графику, отдельные геймплейные улучшения и редизайн игрового интерфейса. Но это всё еще тот самый Обливион, хоть я и не имею в виду, что ремастер "сохранил дух оригинала" или что-нибудь в таком роде. Ремастер буквально построен на той же самой игре. Это тот же Обливион 2006 года, включая игровой движок и контент, но обернутый в аудио-визуальные приблуды Unreal Engine 5.

Unreal Engine 5 может выдавать умопомрачительную картинку

И это любопытно, поскольку Обливион был крайне амбициозной игрой для своего времени. Мир был большим, графика поражала воображение, но, что более важно, игра обещала динамичный и живой мир с тысячью полностью озвученных неписей. Эта технология была названа Radiant AI, но она была настолько амбициозна для тех времен, что её по большей части вырезали из финальной игры. Ну или в какой-то мере она была представлена в Обливионе, а затем Бесезда не стала заморачиваться над её внедрением в Fallout 3 и Скайрим. А может быть и не было никогда такой технологии, и Тодд лгал нам всё это время. В любом случае, а что вообще такое этот Radiant AI?
Эту тему обсуждают буквально не одно десятилетие, и ремастер Обливиона вновь подсветил её. Люди помнят её как первую темную лошадку от Бесезды. Один из тех случаев, когда Бесезда пообещала нечто, что она вообще не могла дать. Однако очень малое число людей не из хадркорных фанатов и моддеров вообще пыталось понять для себя, что такое этот ИИ. И под этим я подразумеваю сразу всё: для чего он был нужен, каким его нам обещали, что это было в действительности и куда все это привело. Этот талмуд в виде статьи (нервно смотрит на время прочтения) лишь моя попытка ответить на все эти вопросы. 
Предполагалась эта статья как маленький сайдквест, как по возможности прямолинейное обьяснение того, чем является Radiant AI и как возможность исправить общераспространенные заблуждения на его счет. Но, увы, всё редко идет по плану. Я прошелся по всем старым РПГ форумам, фансайтам, туториалам по моддингу и просканировал игровые журналы ранних двухтысячных. Я потратил с десяток часов, исследуя как работает редактор бесездовских игр, от Морровинда до Старфилда (который пришлось купить, чтобы проверить пару предположений). Мне даже пришлось прочесть исходный код множества расширителей скриптов и DLL-плагинов, вот насколько мало информации по теме. И тем не менее я до сих пор чувствую, что я не самый квалифицированный человек, пишущий об этой теме, хотя бы потому что опытный моддер игр Бесезды по идее знает намного больше. Есть гарантированная вероятность, что я чего-то не допонял, так что скорректируйте меня на Bluesky или еще где. 
Используйте содержимое статьи, чтобы пропустить неинтересные части, или читайте подряд. Каждый заголовок привязан к содержанию, так что ориентироваться по статье очень просто. Приятного чтения.

Но прежде чем перейти к теме Radiant AI, мы вновь ступим на земли Ввандерфелла, где всё и началось. Ну, на деле не прямо здесь началось, но начнем мы всё равно с Морровинда.

Вставай, ну ты и соня

Игры от Бесезды известны многими вещами: открытым миром, большим моддерским сообществом, средней боевкой и, конечно же, багами. Морровинд не был первой игрой серии, отсюда и римская III в названии, но именно он установил многие положения, которые определят бесездовские рпг на два последующих (да уже почти на три) десятилетия вперед. Это была первая игра на бесездовском новом игровом движке, форке Gamebryo, позже переименнованном в Creation Engine, который до сих пор в ходу, и введшем игровую вселенную в эру аппаратно-ускоренных 3D игр. Морровинд ушел от даггерфолловского почти полностью процедурального сгенерированного мира в сторону сотворенного вручную, что по большей части было наиважнейшим качеством всех последующих игр Бесезды. К тому же Морровинд имел наикрасивейшую воду и прекрасное небо для 2002 года, и оба эти элемента обеспечивались новомодной пиксель-шейдерной технологией.

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

Неписи могли бесцельно бродить по округе или следовать за игроком или иной сущностью, но система эта настолько ограничена, что, по моим наблюдениям, неписи, если они помещены снаружи, никогда не зайдут внутрь зданий, и наборот. Персонажам есть, что сказать, и много чего, но они ничего не делают, если игрок (или сюжетный скрипт) не заставят. Хоть Морровинд и был прорывным во множестве вещей, расписания НПС уже были обыденной фишкой многих других РПГ, например Ультимы, Арканума от Troika Games и дорогой сердцу евромусорной классики в лице Gothic.

Но всё изменилось с выходом Обливиона.

Что обещали

Анонс и заявления

Я не следил за предрелизным хайпом по Обливиону (мне было меньше десяти лет на тот моментт), но из того, что я нашел, выходит, что хайп был огромен. Обливион анонсировали в сентябре 2004 года маленькой плашкой на официальном сайте Древних Свитков, затем колонкой на сайте GameInformer в октябре, который я смог найти в Интернет Архиве. 12-страничная статья описывала игровой сеттнги, новую боевую систему и множество графических улучшений, сопровождая всё это невероятно краисвыми скриншотами. Посмотрите на эти деревья, эту траву, этот обожаемый HDR блум! Только следующее поколение консолей, таких как Xbox 2 и Nintendo Revolution, смогут потянуть такой уровень фотореализма!

Источник: UESP.

Статья говорила и о новой системе ИИ, хотя тогда термин Radiant AI еще не использовался. Вот соответствующий отрывок из статьи:

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

 

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

 

 

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

Немного оффтопа, но этот отрывок вы точно найдете смехотворным, если уже играли в Обливион:

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

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

Oblivion представляет собой революционную систему искусственного интеллекта Radiant AI, которая позволяет неигровым персонажам (NPC) делать выбор, основываясь на текущей ситуации. Они сами решают, где есть, с кем разговаривать и что говорить. Они спят, ходят в церковь и даже крадут предметы — всё это в зависимости от их индивидуальных особенностей. Полная лицевая анимация и синхронизация губ в сочетании с полноценной озвучкой всех диалогов позволяют NPC быть как никогда живыми.

Я полагаю, что здесь впервые упоминается термин Radiant AI.

Демо Е3 2005

 

Другим важнейшим источником информации (и хайпа) по игре и особенно Radiant AI было демо с Е3 2005 года. Стыдно, что гамма в этом видеоролике совершенно отвратительна - все помещения и ночные сцены выглядят так, будто засняты в темной-темной пещере, но это лучшее по качеству видео, которое я смог найти.
Вставьте видео с помощью соответствующей кнопки

Наша новая система Radiant AI… позволяет NPC иметь полное круглосуточное расписание. Эти NPC не заскриптованы. Мы ставим им общие цели, и они сами находят способ, как их достичь.

Тодд Говард

В 6-ти минутной секции, посвященной Radiant AI, персонаж Тодда Говрада идет по городу Коррол, подслушивает беседу двух неписей (и эта беседа на голову выше и естественнее всех прочих динамических бесед из финальной игры) и получает новый квест. Затем он заходит в магазин Книги Ренуа, получает динамически невозможное приветствие от продавца и играет в очень раннюю итерацию мини-игры в убеждение. Затем происходит еще больше проявлений Radiant AI:

Тодд Говард: Она (торговка) решила попрактиковаться в стрельбе, поэтому взяла лук; решила, что ей нужны боеприпасы, поэтому вооружилась колчаном. И теперь она может развить свой навык; её навыки управляются так же [как навыки игрока]… и её навык [стрельбы] - просто отстой!
(В игре) Эстель Ренуа: Ужасно! Просто ужасно! Мне нужно немного взбодриться.
Тодд Говард: И неписи могут даже искать зелья в окружающей среде, если им это нужно. Вот она выпьет это зелье и повысит свой навык меткости. Зелье окажет на неё тот ​​же эффект, что и на игрока, если бы он его выпил. Оно автоматически повышает её навык, и теперь её навыка хватает [чтобы попасть в цель], и всё это работает через [единообразную для всех, и игрока, и неписей] систему.
Эстель Ренуа: Вот так лучше!

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

Тодд Говард: Они будут есть, если им нужно, а как они будут добывать еду — это их дело. Они могут её украсть, купить, вырастить. Спать, когда захотят.

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

В этом демо происходит много всего любопытного. И я вернусь к нему попозже. Повествование Тодда прямо говорит нам, что в Обливионе у неписей есть желания и нужды (needs and desires), и что персонажи будут пытаться автономно их исполнять.

Фанатские Интервью и Цитаты с Форума

Бесезда провела в общей сложности три "фанатских интервью" (особенно в эпоху Ask Me Anything) на официальных форумах TES, по интервью раз в год с 2004 по 2006. Все три были организованы пиар-менеджером Питом Хайнсом с ответами от креативного директора Тодда Говарда. Первое интервью было 8 декабря 2004 года, которое я нашел в Интернет Архиве. Его еще продублировал сайт  Chorrol.com (названный так, поскольку именно такой подзаголовок ожидали для четвертой части свитков вместо Обливиона), и этот сайт удивительным образом всё еще живет в наши дни.

В: Что касается новой системы Radiant AI, было заявлено, что NPC смогут мыслить и реагировать независимо от скриптов. Означает ли это, что игрок сможет приказать NPC что-то сделать (например, будучи главой гильдии) или, возможно, найти случайное незаскриптованное задание благодаря независимым действиям NPC?

 

О: Да, мы можем это делать. Я не говорю, что это уже есть, и сейчас мы экспериментируем с наблюдением за действиями NPC и тем, как мы можем заставить игрока влиять на это, получать от этого больше удовольствия или даже наблюдать это. Поэтому я не буду сейчас приводить конкретные примеры, но мы попробуем реализовать похожие вещи то тут, то там. Могу сказать, что нашей целью при создании Radiant AI был квест «Фаргот» в начале Morrowind, потребовавший серьёзного скриптинга, чтобы заставить Фаргота вести себя как нужно, красться, красть кольцо, засовывать его в пень и так далее. Наша первоначальная цель для Radiant AI заключалась в том, чтобы подобные вещи просто «происходили», без какого-либо скриптинга. И это работает, что здорово. Но если бы мы не рассказали вам, что задумал Фаргот, вы бы никогда этого не заметили, или это выглядело бы очень странно. В любом случае, мы находимся на этом этапе: у нас есть модели поведения, и мы пытаемся максимально расширить восприятие игрока происходящего.

Еще два интервью были даны в 2005 и 2006, последнее прямо перед релизом. Я не стал искать оригинальные ссылки на форумы TES, так что предположу, что репосты Chorrol.com идентичны.

В: Мы читали, что «друзья» могут присоединиться к фракции вместе с вами и наблюдать за их развитием. Это регулируется RAI или это отдельная функция квеста? Возможно ли вообще заводить друзей таким образом?

 

О: Radiant AI — это глобальная система, управляющая каждым действием NPC. Мы используем её для решения масштабных, всеобъемлющих задач, таких как указание того, как и где NPC проводят свои дни и ночи, но также используем её и в гораздо более мелких последовательностях, например, для перемещения персонажа по комнате, чтобы подобрать предмет. Таким образом, в некотором смысле, все действия NPC в какой-то момент управляются Radiant AI. В некоторых фракциях вы встретите так называемых «длительных персонажей» (“continuing characters”). Это персонажи, с которыми вы столкнётесь в разных точках цепочки заданий. Вы можете поговорить с ними, наблюдать за их развитием, влиять на них и, возможно, даже выполнять с ними задания и менять их путь в игре.

Разработчики Бесезды были удивительным образом активны и на официальных форумах и в фанатских сообществах вплоть до релиза Обливиона, и Chorrol.com собрал все эти цитаты в одном месте. К сожалению, отдельные цитаты потеряли свои ссылки на оригинал, так что их я не смог верифицировать, но я не вижу причин считать эти цитаты подлогом.

Я удивлен тем, что беседкинцы даже на те вопросы, которые выглядят как чистый троллинг, недостойный ответа. Но есть и любопытные вещи, например, почти полное описание того, как работает Radiant AI (quotes #1), из которого я процитирую следующий отрывок:

Прочтите книгу об ИИ, и вы обнаружите, что вещи очень похожи на то, что делаем мы. Причина, по которой это ИИ, а не скриптинг, заключается в том, что он использует цели и правила для определения того, как что-то будет выполнено. Разработчик устанавливает цели, задаёт параметры (такие как ответственность, агрессия, уверенность) для акторов и оставляет на усмотрение правил, заложенных в коде, специфику поведения. Это, безусловно, искусственный интеллект в академическом смысле этого слова.

В дополнение к этому один из разработчикв (Стив Майстер, он же MrSmileyFaceDude) прямо отослал к демо с Е3 (quotes #2):

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

 

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

 

В этом и разница. Ей дана базовая цель, и она решает, как её достичь, исходя из имеющихся у неё возможностей и её характеристик.

 

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

 

 

Видео — это то же самое, что мы показывали на E3. Оно содержит фрагменты и разделы существующего игрового контента, а также множество материалов, созданных специально для демонстрации на E3 (например, вся последовательность в книжном магазине, включая все диалоги, была создана для E3, чтобы продемонстрировать некоторые возможности RAI).

И вот тут уже попадается первая история о том, что Radiant AI "слишком умен" и этим создает проблемы разработчикам (quotes #3, ответы Эмиля Пальяруло):

Итак, вот в чём суть Radiant AI… Если вы спросите: «Могут ли NPC делать то? Или то?», они ответят: да, с RAI они могут делать кучу всего. Но игрок вряд ли увидит что-то из этого по разным причинам. Например, если игрок поразит NPC заклинанием и тот отравится, попытается ли NPC купить зелье исцеления? Ну, нет, вряд ли, потому что он будет слишком занят, пытаясь убить игрока, и, кроме того, яд, вероятно, не будет действовать так долго.

 

И в некоторых случаях нам, разработчикам, приходилось сознательно смягчать типы поведения, которые они проявляют. Опять же, почему? Потому что иногда ИИ настолько чертовски умён и решителен, что портит наши квесты! Серьёзно, иногда всё становится настолько странным, что похоже на голо-палубу (holodeck), которая обрела сознание. Представьте, что вы играете в Sims, и ваши симы склонны к убийствам и воровству. Так что зачастую всё это забавно, удивительно, неожиданно, и это просто захватывает дух, когда случается. В других случаях это настолько неожиданно, что всё ломается. Дизайнерам нужен определённый контроль над создаваемыми сценариями, и всё может пойти наперекосяк, когда NPC начинают действовать самостоятельно.

 

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

 

 

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

Дисфункциональное поведение Radiant AI и загадочная цитата

 

И вот здесь вспомним об одном отрывке, где описывалилсь выкрутасы Radiant AI, и отрывок этот стал притчей во языцех на многие годы, но никто никогда не давал ссылку на источник этого текста, так что я даже не знаю, откуда всё это пошло. Старейшую копию цитаты я смог найти в посте на форуме TTLG, сделанную в апреле 2006 года, через пару недель после релиза Обливион. Прощу прощения за стену текста, обещаю, что в этой статье такое случается в последний раз:

Oblivion может похвастаться новой системой искусственного интеллекта, полностью разработанной Bethesda, под кодовым названием «Radiant AI». Она призвана устранить один из главных недостатков предыдущей игры (The Elder Scrolls III: Morrowind): отсутствие «жизни» у NPC в игре. Radiant AI даёт каждому NPC набор «потребностей» (например, голод), которые необходимо удовлетворить, создавая тем самым более реалистичный мир.

 

Работа Radiant AI заключается в предоставлении NPC списка целей. Больше ничего не прописано в скрипте. NPC должны самостоятельно решать, как достичь этих целей, основываясь на своих индивидуальных характеристиках. Голодный NPC может сравнить своё текущее золото со своими моральными принципами, чтобы решить, пойти ли ему в магазин за едой или просто украсть её; опытный лучник может выбрать охоту на собственного оленя.

 

Это потребовало масштабного тестирования, но обеспечивает ещё большую долгосрочную гибкость для будущих NPC ИИ, а также для тестирования с PAC AI для дальнейшего развития.

 

Ниже приведены примеры неожиданного поведения, обнаруженного в ходе раннего тестирования:

 

  • Одному персонажу были даны грабли и цель «сгребать листья»; другому — метла и цель «подметать дорожки», и всё работало без сбоев. Затем они поменялись предметами: сгребающему дали метлу, а подметающему — грабли. В итоге один из них убил другого, чтобы получить нужный предмет.
  • В другом тесте дежурный NPC-охранник проголодался. Охранник отправился в лес на поиски еды. Другие охранники тоже ушли арестовывать прогульщика, оставив город без защиты. Затем NPC-жители деревни разграбили все магазины из-за отсутствия правоохранительных органов.
  • В другом тесте минотавру было поручено охранять единорога. Однако минотавр неоднократно пытался убить единорога, поскольку тот был изначально агрессивным существом.
  • В одном из заданий Тёмного Братства игрок может встретиться с подозрительным торговцем, продающим скуму, внутриигровой наркотик. Во время тестирования NPC был мёртв, когда игрок добирался до него. Причина заключалась в том, что NPC из местного притона скумы пытались получить свою дозу, у них не было денег, и поэтому они убивали торговца, чтобы получить её.
  • Во время тестирования, чтобы подтвердить корректность физических моделей магического предмета, известного как «Череп Порчи», создающего злую копию персонажа/монстра, на котором он используется, один из тестировщиков уронил предмет на землю. NPC тут же поднял его и применил к персонажу игрока, создав его копию, которая затем убила всех NPC в поле зрения.


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

Это не звучит как официальный ответ от Бесезды, но скорее как собирание воедино всех историй, которые автор поста где-то услышал. Кроме упомянутого продавца скумы, нигде я не смог найти цитат от Бесезды по поводу остальных ошибок в коде RAI. Однако я начал раскапывать в Интернет Архиве все коллекции старых игровых журналов и выудил пару примеров.

В одном интервью Play Magazine в апреле 2005 года Тодд Говард поделился его удивлением, когда Radiant AI заставил NPC выйти из здания посреди битвы, чтобы найти ближайший магазин оружия для покупки кинжала. Независимо в марте 2006 года журналу PC Zone в номере #165 интервью дал Пит Хайнс, сказав, что хоть ИИ и был очень важен, разработчикам пришлось его упростить (например, убрать возможность своровать вещи игрока), чтобы игра была понятной. иначе игрок посчитает исчезновение предметов в инвентаре очередным багом. Следующая статья в этом журнале была превью Обливиона - игра уже вышла, но бумажные издания долго согласуют выпуск статей, и статья рассказывала историю о Radiant AI от неназванного разработчика. Эта история близка к байке о Черепе Порчи из загадочного отрывка, но без имени у предмета и завершалась такими словами:

Хотя вполне вероятно, что подобное безумие будет удалено из финальной версии игры ради баланса (к сожалению), очевидно, что новая система Radiant AI от Bethesda все равно будет весьма впечатляющей.

В игре всё еще есть эксплойт с клонированием игрока, и он работает даже в ремастере 19 лет спустя.

Хоть я и не нашел источники всех примеров поведения Radiant AI, я думаю, что эти примеры взяты из различных историй и цитат от Бесезды и прессы, опубликованных где-то на форумах, которых больше нет. Некоторые примеры еще возможны и их можно реализовать и в финальной игре, но другие звучат как ранние идеи, которые рано и вырезали из игры или даже никогда полноценно не реализовывали. Загадка разгадана, по крайней мере частично.

Релиз и Реакция

Обливион вышел в марте 2006 года и приобрел всеобщее признание и коммерческий успех. Игра стала определяющей для своего поколения и источником вдохновения для всей индустрии игр с открытым миром даже до сего дня.

Но была и критика, как это всегда и бывает, и жалобы на Radiant AI не заставили себя ждать. Даже в превью от Game Informer в феврале 2006 года автор замечает: "сложный ИИ, управляющий действиями неписей особо себя не проявил" и краж еды или упражнений по повышению своих навыков у неписей он не замечал. Форум TTLG, который я упоминал, был полон людей, судивших да рядивших о возможностях и ограничениях Radiant AI и как это сочетается с тем, что было в демо Е3 и других пред-релизных материалах.

Так чем же был Radiant AI?

Важный и очевидный дисклеймер из-за 2025 года: Radiant AI не имеет ничего общего с нынешней волной хайпа по ИИ. Он не имеет отношения к большим языковым моделям, генеративному ИИ, нейросетям и тому подобному. Radiant AI использует некоторые идеи классического искусственного интеллекта, видеоигровой ИИ полностью посвящен созданию иллюзии интеллекта. Цель в том, чтобы создать адекватных противников и интересных персонажей, а не в том, чтобы ИИ прошел Тест Тьюринга. Под ИИ мы подразумеваем то, что видим в Пакмане или Метал Гир Солид, а не ЧатGPT. Возвращаемся к теме.

Циничный и\или педантичный подход к Radiant AI в том, что это был туманный маркетинговый термин, который ничего конкретного не означает. Это нечто, что ты пишешь в заголовке: "три основных столпа игрового опыта от Обливион" и т.п., а после бедному пареньку приходится выяснять что же это такое есть.

И это правда. Radiant AI не является конкретной игровой системой или механикой. Скорее это зонтичный термин для всех новых ИИ возможностей, который разрабатывались под Обливион. И мини-игра убеждения, и сюрреалистичные диалоги неписей ("Недавно я видел грязекраба"), и даже боевая система описываются как "Radiant AI" и фанатами и Бесездой, не говоря уже о Скайримовской системе Radiant квестов. Я полагаю, что Radiant AI состоит в финальной игре из трех частей: системы персонажа, расширенной системы пакетов ИИ, диалоговой системы. Система пакетов ИИ наиболее важная из них судя по всему, так что когда я говорю о Radiant AI, я обычно имею в виду "то, что заставляет работать пакеты ИИ", если не сказано иное.

Атрибуты Персонажа

НПС и существа Обливиона, вместе называемые акторами (actors), не слишком отличаются от персонажа игрока с точки зрения игровых систем. Они имеют тот же набор атрибутов (сила, интеллект, ловкость) как и игрок, инвентари и списки заклинаний и могут принадлежать к фракциям. НПС имеют больше характеристик чем типичный пещерный медведь или блуждающий огонёк. У них тот же набор навыков, что и у игрока (атлетика, клинки, скрытность, и т.п.) и они могут использовать оружие и броню, которую несут в инвентаре. Некоторые существа (такие как гоблины) также могут пользоваться оружием и щитами.

Каждый актор отслеживает своё отношение (disposition) к игроку и другим акторам в игровом мире. Число от 0 до 100 определеяет насколько дружественным или враждебным будет актор к остальным. Отношение можно увеличивать или уменьшать разными путями, но самый надеждый и наиболее смешной - посредством мини-игры в убеждение ("Не говори подобной ерунды!"). Базовое отношение между акторами расчитывается из принадлежности к фракциям, насколько я понимаю (так, стражники всегда ненавидят членов гильдии воров), и затем уже модифицируется различными действиями.

Акторы имеют еще четыре атрибута (все целочисленные между 0 и 100), которые существуют только для того, чтобы контролировать поведение ИИ. Вот они:

Агрессия (Aggression)

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

Уверенность (Confidence)

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

Уровень Энергии (Energy)

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

Ответственность (Responsibility)

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

Нужды (Needs) или их отсутствие

Если вы особо не знакомы с Обливионом, вы спросите, а где же нужды акторов, такие как сон или пища? В конце концов не каждый ли текст по Обливиону перед выходом игры упоминал или намекал на то, что у персонажей есть нужды и мечты и что каждый из них будет стараться выполнять их? Ну, и да, и нет. Акторы Обливиона не имеют нужд в том же духе, что персонажи из The Sims или Dwarf Fortress. У неписей есть расписания, которые включают в себя сон и еду, но они совсем не нужны для выживания и сами по себе эти расписания никак не воздействуют на нпс. В этом плане персонажи Обливиона скорее типичные видеоигрывые неписи, пусть и The Sims много раз упоминалась как источник вдохновения для Radiant AI.

Пакеты ИИ

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

Кое-какая документация по этой системе есть в бекапе Oblivion Construction Set Wiki, но она далека от совершенства, так что пришлось проверять всё самому, исследуя игровой контент Обливиона в Construction Set, занимаясь старорежимным гуглингом и построением тестового уровня, чтобы проводить глубоко безнраственные эксперименты.

Он видел и прошел через вещи, которые вы не в состоянии понять.

Пакеты ИИ технически не новы, Морровинд имел их ограниченную версию. Однако в Обливионе они настолько могущественны, что это по сути совершенно новая система.

Заметка о вики по моддингу на скорую руку

Кстати, вики по моддингу неофициальна, поскольку Бесезда, по всей видимости, закрыла все свои официальные ресурсы по моддингу пару лет назад, и на момент написания статьи все вики всё ещё закрыты на «техническое обслуживание», что довольно странно для самых модифицируемых игр всех времён. Со Starfield дела обстоят ещё хуже: насколько я понял, по ней практически нет общедоступной документации. Однако Construction Set / GECK / Creation Kit развиваются довольно медленно, и в наборе инструментов Starfield есть интерфейсы, которые практически не менялись уже лет двадцать.

Что именно делает пакет ИИ определяется его типом. Есть несколько различных типов пакета, включая следующие:

Travel

Заставляет акторов идти (travel ) в определенную локацию, например к (невидимому) маркеру в мире или к ближайшей сущности определенного типа (кровати или стулу). Неважно, находится ли цель в той же комнату или где-то в мире, актор всегда попытается туда добраться.

Wander

Такой же, как и предыдущий, но без конкретной точки назначения. Цель его в основном в том, чтобы актор бесцельно бродил по городу или данжу. Продолжается пока не кончится время или актора не прервет кто-нибудь или что-нибудь.

Find (и немного о преступлениях неписей)

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

Творческое применение этого пакета видно в том, как работают охотники (например Лесники Имперского Легиона). Они не просто шатаются по лесу (хоти и делают это), они ищут оленину. А поскольку Олени в своих "инвентарях" имеют оленину, то охотники выслеживают оленей, убивают их и лутают с них мясо. Теоретически, если бросить оленину в лесу, то в какой-то момент охотник найдет её и подберет.

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

Моя догадка в том, что примерно от 50% до 80? всего интересного и смешного с Radiant AI происходит из-за этого пакета ну или подобного ему. Как пример, система гоблинской войны во многом построена вокруг того, что гоблины используют пакет Find, чтобы найти локацию их священного тотема.

Eat

Этот пакет - совмещение Find и Travel с немножко изменненной логикой. Если персонаж не имеет еды в инвентаре, то он будет искать её в определенной области, возьмет, найдет место (стул) и сядет его есть. Персонажи потребляют еду так же, как и игрок, вот почему и как работает Отравленное Яблоко даже за рамками квестов Гильдии Убийц. Ответственность и на этот пакет влияет. Низкая ответственность заставляет персонажей воровать еду у остальных.

UseItemAt

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

По тестам этот пакет не работает так, как я ожидал. Если предмет доступен, то непись его использует или экипирует, но делает это за счет телепортирования обьекта в свой инвентарь. Если цель - предмет с idle animation, такие как зелье или грабли, непись не нуждается в том, чтобы они были непосредственно доступны, и сыграет анимацию с фантомным, не находящимся в его инвентаре обьектом. Можно связать этот пакет с пакетом Find в цепочку действий, сначала Find, а затем этот пакет, чтобы всё выглядело реалистичней. И именно этот пакет легко приводит игру к вылету, если параметры неправильно установлены.

Sleep

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

Расписания и Условия Пакетов ИИ

Каждый пакет имеет расписание, определяющее, когда пакет может быть активирован. Это и отвечает за поведение НПС в ОБливионе и следующих играх. Например, персонаж может иметь пакет Eat на 8 утра на два часа, затем пакет Wander на следующие 8 часов, затем снова Eat с 6 вечера на два часа и затем пакет Sleep на оставшуюся ночь. 
Персонажи могут и часто пользуются различными пакетами в разные дни недели (так, например, ходят в храм каждое воскресенье - Обливион в этом плане очень набожен) и не так мало неписей имеют пакеты даже для конкретных дат. Например, для путешествия в другой город каждое 16 число месяца.

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

Расписание совмещено с набором опциональных условий, которые добавляют дополнительные ограничения для активации пакета. Условия довольно мощная штука, поскольку они отвечают за множество вещей для актора, его цели, игрока и игрового мира. Каждое условие состоит из фукнции, набора аргументов и сравнения некоторых констант. Множество условий может сочетаться между собой с помощью операндов И (AND) и ИЛИ (OR).

UI  довольно неуклюж (как и всё в Construction Set), но зато возможности весьма впечатляют.

Условий уж слишком много, чтобы их тут перечислять, но остановимся на самых общих:

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

Флаги, Локация и Цель

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

Как работает мир и о низкоуровневом ИИ

Большинство видеоигр состоят больше, чем из одного экрана или одной комнаты, обычно "существует" еще и игровой мир вокруг игрока (если виртуальное пространство можно назвать существующим). Когда вы включаете Half-Life 2, доктор Брин не сидит в своем офисе, дожидаясь игрока, поскольку этого места еще не существует пока игра не загрузит соответствующий уровень. Когда вы сходите с Платипы в начале GTA IV и прибываете в Ист Хук (East Hook), вы хоть и можете наблюдать Алгоквин на расстоянии, но эта часть города не загружена в памяти: там нет прохожих, трафика, предметов на улице и прочего. Обычно это не проблема, ведь игровой опыт не меняется от того, наводнены ли неписями эти улицы или нет, поэтому такой финт выкручивают все разработчики для оптимизации. Это включенная во все распространенные движки функция и она зовется уровнем детализации (LOD), к ней добавляются куллинг (culling) и уровни потока (level streaming).  За подробностями читайте другие мои статьи в этом блоге.

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

Что отличает Radiant AI от других ИИ систем так это то, что акторы вне загруженных ячеек продолжают симуляцию. Теоретически, это значит, чтоигра симулирует всех акторов мира всё время. Каждый проигрывает свои пакеты, даже когда игрок этого не видит. Это важно для геймплея, поскольку может оказаться так, что вы не увидите непися там, где ожидаете, когда возвращаясь в лпосещенную ранее локацию. Они бы застряли на одном месте и в одном и том же состоянии, если ячейка полностью бы выгружалась из памяти.

На деле акторы выгруженных из памяти ячеек все еще имеют активные пакеты ИИ, которые обрабатываются в упрощенной форме. Судя по исходному коду  EngineBugFixes и OBSE, пакеты ИИ имеют четыре уровня обработки: низкий, низко-средний , высоко-средний и высокий. Персонажи в нынешних загруженных ячейках имеют высокий уровень обработки, что является "нормальным" уровнем для пакетов. То есть пакеты делают то, что должны, а персонажи участвуют в боях и в диалогах. Низкие уровни - только для выгруженных ячеек. Как именно происходит понижение уровня неясно, поскольку нет опубликованной документации, но можно вполне себе предположить, что нижние уровни симулируют пакеты очень грубо и приблизительно, поскольку большая часть вещей, с которыми из-за пакетов должны взаимодействовать неписи, будь то кровати, еда или вещи, не загружены в память.

Движение акторов в игре основано на сетке путей. Вместо того, чтобы увязнуть в кривом уровне детализации ландшафта (details of a complex landscape), сетка использует упрощенную графовую репрезентацию мира, подходящую для алгоритма поиска путей А*. Ноды размером около метра или двух. Эта система заменена навмешами в Fallout 3 и последующих играх.

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

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

Это довольно таки умный способ оптимизировать игру, но он вносит и ограничения. Я слышал занятные анекдоты от игроков Обливиона и Скйарима, утвреждавших, что находили мертвых бандитов или другие странности при непосредственном путешествии, но, насколько я понимаю, это невозможно. ИИ на низком уровне обработки не симулирует битвы или здоровье, а низко-обрабатываемые акторы не могут взаимодействовать друг с другом никоим образом. Если я прав, такая архитектура ИИ предполагает, что акторы не потребляют пищу, хоть это и без того не имело смысла.

Еще немного болтовни

Наконец, пробежимся по диалоговой системе, которую можно назвать частью Radiant AI, ведь она была включена в Е3 демо в конце-то концов. Как и пакеты ИИ диалоговая система также была представлена в Морровинде, а в Обливионе - значительно расширена. Хоть и с точки зрения игрового опыта диалоги Обливиона в сто крат проще, чем морровиндские стены гипертекста, обливионская итерация этой системы намного комплекснее и мощнее и может использоваться для большего, чем ветвления диалогов (dialogue trees). Эта же система отвечает за убогие "Radiant" беседы между неписями, фразы из мини-игры по убеждению, приветствия неписей и другие реакции на игровые события.

Диалоговая система поддерживает те же условия, что и сисема пакетов ИИ. Они-то и отвечают за то, чтобы сделать диалоги в играх Бесезды (в каком-то смысле) динамичными и реагирующими на события. Я сразу вспоминаю стражника, напоминающего держаться подальше от "огней" в Скайриме, когда я активирую фаербол или имею огненное оружие. А в Обливионе самый первый диалог после создания персонажа тоже создан на базе этих возможностей. 

Система заставляет Валена Дрета быть расистом по отношению к вашему только что созданному герою. Иммерсивность!

Беседы неписей - буквально ветвистые диалоги с рандомизированными выборами, состоящими из топиков (topic). Каждый топик имеет несколько разных ответов, рандомно выбирающися и имеющих, в свою очередь, еще несколько таких же ответов в ответ. Условия используются для добавления новых ответов в этот список, когда выполняются те или иные квесты, ну или чтобы остановить казусы, когда неписи рассказывают слухи сами себе. Знаете, что теплота приветствия зависит от отношения между неписямми? Замечали, что неписи говорят "Добрый день" или отмечают, что кто-то болен? 

Это могло бы сделать беседы более "свободными" и "незаскриптованными", как это и подавалось в статье 2004 года, но, увы, не вышло.

То, как диалоги работают в теории

То, как они работают на практике

Проблема не в самой системе, а в том, как она используется в Обливионе. Для игры, в которую будут играть сотни часов, тут очень мало контента, чтобы сделать беседы по-настоящему интересыми и осмысленными. Большая часть топиков не специфицирована условиями, не привязана к конкретным персонажам, а скопом отдана всем дружественным неписям в городах и в Сиродиле в целом. Наиболее интересное в этих беседах это намеки на сайд-квесты или интересных персонажей, но, раз их услышав, вы уже воспринимаете их повторение как навязчивый шум.

Взгляните вновь на демо с Е3 и постарайтесь игнорировать туповатые голоса. Персонажи приветствуют друг друга по имени, они говорят о ныншених событиях не одной строчкой, они прощаются персонализированными строчками при завершении беседы. Этого нигде нет в финальной игре за исключением заскриптованных квестовых диалогов. Бесезде явно пришлось ограничить число и разнообразие голосов и бесед по крайне унылой причине: ограничении места на диске DVD для Xbox360.

Несмотря на свои 1000 неписей Обливион был печально известен тем, что группа актеров озвучки вполне комфортно влезет в мини-автобус, и каждые раса и пол имеют комбинацию одного актера, а иногда нет и этого, ведь орков и нордов озвучивают те же актеры, и эти две расы имеют те же строчки диалогов! Это немного исправили в ремастере, удвоившем количество актеров озвучки, но собственно строки диалогов остались теми же, так что одни и те же слова теперь произносятся чуть большей группой актеров.

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

Разрушаем Мифы о Radiant AI

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

Утверждения из анонсирующей статьи и интервью

Каждый персонаж имеет свое расписание и свою виртуальную жизнь

Вердикт: ну почти правда

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

Они будут торговать, исследовать, есть, работать и многое-многое другое

Вердикт: ну почти правда

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

Неписи могут получать еду множеством путей

Вердикт: технически правда

Пакет Eat дейстительно может заставить непися получить еду без специфицирования того, как именно это сделать, но на практике они ищут её либо вокруг себя, либо, что прискорбно, имеют бесконечный запас еды в своем инвентаре. Большая часть неписей постоянно ест в одной и той же локации, что предполагает, что и еду они ищут там же одним и тем же образом.

Теперь разделим этот вопрос на составляющие:

Неписи могут покупать еду

Вердикт: ложь

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

Нищий персонаж будет охотиться или заниматься браконьерством

Вердикт: ложь 

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

Персонажи могут воровать еду в окружающем пространстве и у других неписей

Вердикт:  правда

Персонажи с низкой ответственностью будут искать еду везде, где найдут, включая окружение и чужие карманы. В релизной игре только некоторые так делают, включая известную воришку из аргониан City-Swimmer (несмотря на имя, никогда не плавает), которая обычно умирает от рук стражей прежде, чем с ней пересечется игрок.

Персонажи могут воровать еду у игрока

Вердикт: ложь, но должно быть нетрудно её реализовать

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

Байка Тодда о покупке кинжала посреди схватки

Вердикт: невозможно в релизной версии без специальных заскриптованных сцен

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

Вычленим то, что возможно в релизной версии игры:

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

Ну и всё. А чего в релизной игре точно нет:

  • Опять же, персонажи с экономикой никак не контактируют. Они не могут покупать вещи.
  • Даже если бы могли, как именно непись бы знал, что магазин оружия, который являет собой другую, незагруженную в память ячейку, содержит оружие? Я протестировал двумя способами, пакетом Find (без спецификации локации) и обычным "ударь в лицо и посмотри что будет" способом, и в обоих случаях персонаж не мог искать оружие, положенное в соседней ячейке. Если в игре работал такой финт из байки, то, получается, он заставлял игру прогружать другие ячейки? Если же нет, то не использовалось ли это для дубликации вещей?

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

Переосмысление увиденного в демо с Е3

Большая часть этого демо, особенно сцена в книжном, была создана специально к Е3, чтобы наглядно показать возможности Radiant AI, но никак не для того, чтобы выступать реальным срезом финальной игры, и неясно, насколько аудитория 2005 года могла это понять. Для ядерных фанатов игры разительного контраста с релизной версией не было, поскольку для тех, кто следил за разработкой пристально и внимательно, разработчики из Бесезды удивительно прямо говорили об игре на различных форумах.

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

Кратко пройдемся по показанным в демо возможностям и утверждениям разработчиков с Е3:

"Эти персонажи не заскриптованы"

Вердикт: зависит от того, что называть "заскриптованным"
 
Процитирую Стива Майера:

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

 

В этом и разница. Ей дана базовая цель, и она решает, как её достичь, исходя из имеющихся у неё возможностей и её характеристик.

 

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

Ну, если принять позицию Бесезды, что нечто "заскриптовано", если основано на скриптовом языке движка, то да, тогда демо с Е3 незаскриптовано. Однако я бы добавил, что и пакеты ИИ и система диалогов тоже форма скриптов, только еще более высокоуровневых и специализированных в отличие от обычных скриптовых языков. У них есть условия, циклы (расписания) и побочные эффекты, а система диалогов может исполнять скрипты после каждой произнесенной строчки. События демо могут произойти только в определенной последовательности, так что это еще один аргумент в пользу того, что они как раз заскриптованы.

Персонажи приветствуют игрока по-разному в разное время суток
Вердикт: верно для динамичных диалогов, но не для диалогов с игроком 

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

Персонажи могут тренировать свои навыки
Вердикт: зависит от интерпретации, но вообще-то ложь 

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

Точность стрельбы из лука у персонажей зависит от их навыка
Вердикт: ложь

У персонажей действительна та же система навыков и атрибутов, что и у игрока, и отчасти на их возможностях это сказывается, но точность стрельбы из лука в них не входит. Я провел эксперимент с моим дорогим ассистентом Лексом, и его точность была примерно одинаково хороша, что с навыком 1, что с навыком в 100 пунктов, с минимумом промахов. Возможно неписям подкручивают точность, чтобы они не попали по игроку? Не знаю, как было сделано демо на Е3. Либо действительно навык влиял на точность стрельбы, и это вырезали, либо они сфабриковали эту фишку специально сделанным боевым стилем.

Фан-факт: Обливион сломан в режиме окна. Можно увидеть одновременно два курсора в меню, и не один не будет соответствовать реальному его положению. Ни PrintScreen, ни ShareX не будут делать скриншоты, но старый добрый Xbox Game Bar пришелся как всегда кстати.

Непись может решить выпить зелье, чтобы временно повысить свой навык

Вердикт: ложь

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

* Они могут (прим. пер.).

Случай со скумой

Вердикт: возможно в до-релизной версии могло быть

Процитируем сказанное ранее:

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

 

Этот торговец скорее всего Нординор, продавец скумы, которого игрок встретит, проходя цепочку квестов Гильдии Убийц. В Бравиле есть Скумовой Притон, где низко-ответственные наркоманы потребляют скуму, а после идут на рынок искать еще, если она кончится. В этой байке есть разумное зерно: теоретически один из наркоманом может найти Нординора на рынке, попытаться его обократь, что неминуемо приведет к драке и окончится чьей-то смертью.

Но есть парочка причин, по которым в релизной версии это невозможно:

Причина 1. Наркоманы не потребляют скуму

Эти ребята имеют два пакета ИИ: BravilSkoomaAddictSeek8x12 и aaaSkoomaAddictUse8x12. Оба имеют суффикс 8х12, что значит, что они проигрывают пакет на протяжении 12 часов, начиная с 8 утра. Первый пакет типа Find, ответственный за приколы движка. Второй пакет типа Eat...игра считает скуму едой? Я проверил, не считает. Но когда я захожу в притон, то все наркоманы немедленно начинают пить из сияющих бутылок свою скуму.

Не имею понятия, что случилось с её подбородком.

Поскольку еды в инвентарях у них нет, единственное, что делает пакет Eat, это заставляет их сесть на стул. Когда непись садиться, он выбирает idle animation, чтобы её проигрывать, а в игре как раз предусмотрена анимация под бутылку скумы в инвентаре. Так что наркотик, который у них в карманах, никогда не потребляется, а значит и лишиться запасов этой "еды" они не могут.

Я проверил гипотезу, добавив дополнительный эффект к скуме, чтобы было ясно, что её потребили. Я начал игру, вошел в притон, и всё было как всегда. Я снова поменял скуму, добавив флаг "еда", и вновь отправился в притон.

Этим эффектом был урон огнем в 1000 единиц в секунду.

Эксперимент удался.

Причина 2. У Нординора нет скумы с собой

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

Сундук Нординора летает в пустоте на 15 метров ниже Серебряного Дома на Воде.

Это значит, что и украть скуму наркоманы бы не смогли, поскольку он её не носит с собой. Пакет Find не определит его как "контейнер скумы", поскольку этот пакет ничего не знает о магазинах. Хотя кто знает, может в 2005 он её и носил.

Причина 3. Потребляют ли они скуму, когда игрока нет рядом?

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

Загадочные байки

Кучно пошло! Напомню, что эти истории нельзя атрибутировать никому из Бесезды, и есть высокие шансы, что эти истории выдуманы или преувеличены сообществом игры.

Грабли и Метла

Вердикт: возможно, но описание некорректно

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

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

Голодный Страж

Вердикт: скорее всего это обман

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

В этом тексте много неправдоподобного:

  • Стражники не могут проголодаться. Никто не может. Это отсылает к пакет Eat, а он, в свою очередь, не может произойти нежданно-негаданно, он часть рутины персонажа.
  • Охотники есть, но они не за едой охотяться. В целом реализуемо, но требует тонкой настройки, и уж точно не является "неожиданным поведением".
  • Персонажей нельзя арестовать. Даже если бы это было возможно, я не могу понять, как сделать неподчинение стражника приказам таким образом, чтобы не сломать вообще всю игру.
  • Часть с лутингом всей деревни вообще нереальна. В игре нет настройки, чтобы првоерить "защищены" ли города или нет, и злых персонажей не волнует наличие стражи, они просто воруют когда и где могут.

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

Минотавр и единорог

Вердикт: практически точно возможно

В другом тесте минотавру было поручено охранять единорога. Однако минотавр неоднократно пытался убить единорога, поскольку тот был изначально агрессивным существом.

Я кстати закончил этот квест в Ремастере неделю назад. В релизной версии игры минотавры агрессивны, а вот единороги - нет. Они не дерутся, поскольку принадлежат к одной фракции DAUnicornFaction. К Radiant AI это отношения не имеет и может произойти в любой видеоигре, где есть множество фракций.

Снова байка про скуму

Вердикт: смотри выше

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

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

Череп Порчи

Вердикт: может быть повторено даже в ремастере

Во время тестирования, чтобы подтвердить корректность физических моделей магического предмета, известного как «Череп Порчи», создающего злую копию персонажа/монстра, на котором он используется, один из тестировщиков уронил предмет на землю. NPC тут же поднял его и применил к персонажу игрока, создав его копию, которая затем убила всех NPC в поле зрения.

Я упоминул этот пример в предыдущей секции, но в целом это точно возможно. Эта версия может ссылаться на Бесезду, на интервью с PC Zone, хотя в данной байке упоминается конкретное название предмета, а вот в журнале этого нет. Также в этой версии акцент сделан на физике, а в газетной на звуке. Возможно кто-то из Бесезды рассказывал эту историю снова и снова, немного меняя детали время от времени.

Radiant AI и GOAP

Теперь давайте поговорим (надеюсь) вкратце о системе Goal Oriented Action Planning (GOAP). Это еще один подход к игровому ИИ из той же эры, к какой принадлежит Radiant AI. Я даже видел академические статьи и даже хуже, пользователей реддита, утверждавшие, что Radiant AI относится к ближайшему родственнику GOAP, что по моему скромному мнению совсем не так.

Не буду тратить время, обьясняя GOAP подробно, для этого стоит почитать Томми Томпсона и его статью на GameDeveloper.com, посмотреть видео-версию или прочесть статью Джеффа Оркина. А если вы не страдаете аллергией к С++ середины двухтысячных, можно посмотреть исходный код ИИ из F.E.A.R. на GitHub. Те времена, когда игры имели нормальные SDK.

Короче, GOAP это ИИ архитектура основанная на планировании, изначально разработана для хоррора F.E.A.R. (2005) от Monolith. GOAP заставляет персонажей генерировать и выполнять много-уровневые планы на основе их нынешнехго состояния и знания о мире. Эти планы не пред-определены игровым дизайнером, а генерируются (ну или планируются) на лету, используя систему целей и действий. Каждая цель имеет приоритет (статический или динамический), набор пред-условий, которые нужно выполнить перед тем, как выбрать эту цель, и описание желаемого состояния мира, которое будет достигнуто для того, чтобы считать цель выполненной. Система выбирает наиболее релевантную цель для каждого из персонажей и затем генерирует план по достижению цели. Действия имеют предусловия и эффекты (изменения в состоянии мира) и они обычно имеют соответствующую цену, которая заставляет выбриать наиболее эффективный (и веселый) путь для достижения цели.

Примеры GOAP

У голодного персонажа может быть цель «стать менее голодным». У них нет ни еды, ни денег, но в их распоряжении следующие действия:

  • Купить замороженную пиццу
    Предпосылка: Есть деньги, находится в магазине, где продаётся замороженная пицца
    Следствие: Есть пицца, денег меньше
  • Разогреть пиццу в микроволновке
    Предпосылка: Есть замороженная пицца, находится рядом с микроволновкой
    Следствие: Больше нет замороженной пиццы, есть горячая пицца
  • Съесть пиццу
    Предпосылка: Есть горячая пицца
    Следствие: Больше нет горячей пиццы, больше не голоден
  • Выполнить работу (на ноутбуке, который волшебным образом генерирует деньги)
    Предпосылка: Нет (в этом примере)
    Следствие: Есть деньги
  • Путешествовать между локациями
    Предпосылка: Нет
    Следствие: Находится в другой локации

С помощью GOAP система планирования могла бы сгенерировать такой план для удовлетворения голода:

  1. Выполнить работу
  2. Сходить в магазин
  3. Купить замороженную пиццу
  4. Идти домой (где есть микроволновка)
  5. Разогреть пиццу
  6. Съесть пиццу, утолив голод

Я не выдумал этот пример из головы: я действительно сделал именно то, что написано выше, в своей версии GOAP в 2017 году для университетского курса по игрвоой разработке, и мои персонажи именно вышеописанным и занимались. В конце концов за два месяца разработки я сделал странноватый мешап The Sims и Roller Coaster Tycoon, включая яйцеголовых маленьких компьютерных людей с глупыми шляпками и бородами. Шарообразные существа жили в одной единственной комнате и использовали GOAP, чтобы выполнять свои первичные потребности: программировать, жиреть, есть сахар и потреблять кофе.

Хоть над ИИ было интересно корпеть, но, сказать по правде, мне больше понравилось создавать 3D ассеты и наполнять игру непонятными для внешних шутками-прибаутками. Я провел мало времени за, собственно, геймплеем. Тут есть даже кофе-машина с анимированной водой и индикаторами уровня кофе! Это ранний скриншот из до-микроволновой версии игры.

Создание этой системы было весьма мучительным. Она очень медленно выполняется на главном потоке, и я помню, как писал и дебажжил мой кастомный поток\систему задач (thread pool / task system) для Unity 5 (поскольку в то время инструментов работы с потоками там не было) часами, поскольку система страдала от постоянных дедлоков (deadlocks) и других проблем с конкуренцией между программами за ресурсы. Пришлось жестко ограничить сложность планов, поскольку иначе система потребляла гигабайты памяти просто для парочки персонажей в комнате.

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

Radiant AI vs GOAP

Кажется, что пакеты ИИ практически идентичны целям из GOAP: есть, спать или искать 15 кусков сыра - цели, которые выполняет персонаж. Способ, каким Radiant AI выбирает активный пакет ИИ, тоже схож с тем, как GOAP выбирает следующую цель. Пакеты организованы по приоритету, а система отдает предпочтение пакету с наибольшим приоритетом, который удовлетворяет условиям.

 Можно поспорить, что пакеты ИИ этоведь не реальные цели в том же смысле, как их понимает GOAP. Большая часть пакетов ИИ  не отображают желаемое изменение в состоянии мира. Как много раз было сказано, есть и спать - пустые понятия для персонажей. Так что планировщик в "чистой" имплементации GOAP в эту игру никогда бы не выбрал эти действия, они не несут смысла. Однако после просмотра доклада Goal-Oriented Action Planning: Ten Years of AI Programming с GDC 2015, мне кажется, что это не имеет значения. Планировщик GOAP не обязан сверяться с текущим игровым миром. Состояние может включать переменные, которые существуют только для того, чтобы советовать планировщику выбрать то или иное действие. Например, вполне возможно иметь цель Танец, и переменную состояния Станцевал, которая становится истинной при совершении действия СделатьТанец. Большая часть игр с GOAP  используют эту фишку не просто для того, чтобы персонажи действовали "как надо", а чтобы мир казался реалистичнее и интереснее, делая такие штуки, которые с точки зрения игрового процесса и не нужны вовсе.

Но в действительности естть одно фундаментальное различие между двумя системами: Radiant AI не основан на планировании. Это может удивить кого-то. В конце концов неписи Обливиона могут демонстративно выполнить пакет ИИ, к примеру, Eat множеством (небольшим) разных путей. Конкретный план зависит от персонажа и окружения. В действительности пакеты ИИ сущностно представляют собой заготовки планов, имеющих некоторые динамические части, но в целом жестко фиксированные.

По неведомым причинам Бесезда ненавидит интерфейсы, позволяющие менять размеры окна, так что всё завалено скроллбарами.

Начиная со Скайрима, Бесезда заменила фиксированные наборы типов пакетов ИИ с намного более гибикими задизайнеными пакетами шаблонов (package templates). Строго говоря, пакеты шаблонов уже существовали в Обливионе, но вместо того, чтобы отображаться в инструментарии движка, они были захардкожены в движок. Каждый пакет шаблона имеет внутренее дерево процессов (internal procedure tree), определяющее какой процесс (действие) в каком порядке будет реализовывваться и в зависимости от каких условий. Процессы (procedures) - простые действия, которые персонаж может сделать: путешествовать в определенную локацию, найти все обьекты определенного типа в каком-то радиусе, поднять что-то, атаковать кого-то, сесть, использовать предмет и так далее. Практически всё, что делают персонажи вне боя (и потенциально в бою), просто последовательности этих процессов.

Radiant AI, коль скоро он основан на шаблонах, не включает в себя планирования. Это не значит, что эта система не может создать интересное поведение неписей или веселый геймплей, но вся суть GOAP в том, что дизайнеру нет нужды брать все условия в расчет, они дают ИИ инструменты, а планировщик сам решает что для него лучше.

GOAP в Fallout 3 (?)

После подробного разбора Radiant AI я все еще недуомевал, почему столько людей уверены, что игры от Бесезды (например. Fallout 3) используют GOAP. Некоторые источники явно ошибались, относя мифы о Radiant AI к последствиям работы GOAP. Но есть несколько достоверных утверждений, которые от кого-то должны были исходить. Я покопался и нашел один такой источник: статья 2009 года из PC журнала\блога big-tech.net,  How AI in Games Works от Бена Хардвиджа. Третья часть как раз об ИИ, основанном на планировании, где автор интервьюирует программиста Бесезды Жана-Силвера Симонета о его работе над боевым ИИ для Fallout 3. Команда разработчиков изменила боевой ИИ так, чтобы он был основан на системе целей, а чтобы быть более точным, как я люблю, он прямо не сказал, что это был GOAP, но явно что-то очень схожее с ним.

Так что, хоть Radiant AI это не GOAP, Fallout 3 (и возможно поздние игры) использует отдельную GOAP-подобную систему для боевого ИИ. Загадка решена.

Как Radiant AI изменился до релиза Обливион

Остается неясным, насколько Radiant AI действительно поменялся за время долгой разработки игры, и какие возможности были "вырезаны" до выхода игры, если вообще были. Из-за раннего маркетинга особенно сложно понять, какие утверждения были вдохновляющими ("мы хотим, чтобы это ощущалось так"), а какие действительно были частью возможностей игры, но не работали на практике. Часть, если не всё из того, что было вырезано, возможно было скучным, мешало игровому процессу или было проблемным технически, что прямого отношения не имеет к Radiant AI. Например, мешал маленький размер дискового пространства, не хватало времени в условиях дедлайнов, были проблемы с производительностью, наличествовали ограничения в системе анимации и т.д. Тезис о внятности и наглядности поведения персонажей, который озвучивал Пит Хайнс, также валиден: если ИИ система может делать сложные вещи, но другие аспекты игры (графика, звук, интерфейс) не в состоянии явно передать игроку, что в игре происходит, то продвинутый ИИ может вести к более хаотичному и неприятному игровому опыту.

Даже демо с Е3, которое показали за полгода до изначальной даты релиза, пока игру не отложили на пару месяцев, претендовало на то, что в игре не будет на момент релиза. Например, когда Тодд говорит, что неписи смогут "выращивать свою еду", он реально имеет в виду, что они смогут культивировать злаковые культуры и есть их, чтобы выжить? Или он имеет в виду, что неписи будут выглядеть как фермеры, проводить весь день, проигрывая анимацию рыхления грядок, а на ужин есть кусок хлеба из бесконечных запасов в карманах? Разница между этими двумя пустыми имитациями жизни действительно значима в игре, полностью посвященной маханию мечом со скелетами, коллекционированию цветов и убийству демонов для создания магических зелий? Я, честно, не готов ответить.

Зато мы точно знаем, что контент в релизной версии игры не использует эту систему на полную, и для этого существует множество причин. Даже если отложить в сторону аспект производительности и стабильности игры, мой небольшой опыт с Construction Set показывает, что редактор сопротивляется всеми силами созданию сложного и эмерджентного поведения ИИ. Мой ПК довольно производителен (имея Ryzen 7 9800X3D, одного из самых быстрых CPU на планете), но  Construction Set  продолжает серьезно баговать и крашиться, не говоря уже о множестве интересных интерфейсных решений. Хотя с данным инструментарием вполне возможно создать фермероподобную машину Тьюринга, я не думаю, что стал бы её создавать. Creation Kit для Скайрима не шибко лучше, а редактор для Нью Вегаса наихудший из всех. И всё же, хотя эти игры модифицировали так, как ни одну другую на протяжении долгого времени, я смею предположить, что подобного рода дизайнерские решения при создании редактора повлияли и на сам процесс разработки.

Честно говоря, не так уж плохо то, что разработчики урезали возможности Radiant AI. Хоть мы и получили хорошую игру, она остаётся очень забагованной, глуповатой и непредсказуемой. Я предположу, что, получи игра больше симуляций и эмерджентного геймплея, конечный результат был бы еще менее понятен и играбелен, чем то, что мы имеем. Наша версия игры попала в самую точку: она смешна и странноватым образом чарующа без того, чтобы быть полностью скособоченной. Она и в нынешнем виде едва фурычит, особенно это касается скалирования уровней, но это по большей части не вина Radiant AI.

 

 

Смотрите и другие смехотворные сертифицированные Бесезда-моменты на канале у Bacon_!

Radiant AI после Обливиона

Общее заблуждение в том, что Бесезда якобы забыла о Radiant AI после Обливиона и не использовала его в последующих играх. Это не так. Radiant AI  состоит из множества разных систем, имеющих глубокие корни в игровом движке, и большая их часть все еще работает даже в свежайших играх Бесезды. Больше всего после Обливиона у Бесезды поменялась дизайнерские философия и подход к эмерджетным поведению и геймплею.

Fallout 3 и New Vegas 

Fallout 3 вышел через пару лет после Обливиона и несильно отличался от своего предшественника. как в технологическом аспекте, так и в аспекте игрового дизайна. Большая часть неписей имела расписания, у некоторых они зависели от дня недели, что было удивительно для пост-апокалиптического сеттинга. Персонажи имели множество динамически сгенерированных случайных диалогов, но они теперь были более осмысленны. Неписи все еще потребляли и искали еду, даже если игроки были с этим несогласны.

Наверное наибольшим изменением в Radiant AI было добавление пакета ИИ Sandbox - эволюционировавшей версии пакета Wander из Обливиона. Он заставлял непися бродить по ограниченной территории, в рамках которой они могли сами взаимодействовать с окружением: садиться на стулья, есть еду или (начиная со Скайрима) работать на крафтовых станциях, таких как кузница или стол зачарования. Это кратно упростило создание базового поведения персонажам, ведь теперь не нужно придумывать множество пакетов для них. У меня по этому поводу впечатления двойственные: с одной стороны, теперь даже третьестепенные персонажи будут хоть что-то делать, а не стоять столбом, а с другой стороны, все персонажи будут вести себя слишком однообразно.

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

Скайрим и подьем Radiant Story

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

Большая часть неписей может есть пару раз в день, но из того, что я нашел, большая их часть ест "фейковую еду". Как и скумо-зависимые из Обливиона, они просто проигрывают анимацию поедания, без реального сьедения чего-либо. Система все еще может заставить их искать и потреблять еду по-настоящему, и в этом она даже более адекватна, чем раньше, но эта возможность строго ограничена в самой игре. Я не могу перепроверить это, поскольку не понимаю как искать или отфильтровывать пакеты ИИ по тегу CreateFakeFood в редакторе или xEdit'е, но судя по всему мне еще предстоит встретить пакет, где эта опция не установлена на true.

Преступление и (Отсутствие) Наказания

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

Система доносительства (Crime reporting) все еще существует, но работает по-другому, через систему фракций. И у этого есть занятная закавыка: почти все не-агрессивные акторы, включая животных, куриц и лошадей, например, могут доложить о преступлении. Это легко исправить в редакторе (покорпев над фракциями животных, чтобы те игнорировали преступления), но Бесезда по какой-то причине этого не сделала и ни в одном патче не поменяла эту настройку. Для этого есть популярный мод, удачно названный NARC*.

*стукач - примечание переводчика.

Занятно, что процесс Acquire (соответствующий пакету Find из Обливиона) имеет опцию "Позволить грабеж", "Позволить кражу из кармана" и "Позволить убивать". Они вроде бы не используются в оригинальной игре, и времени потестить их у меня не было.

В целом, неписи могут совершить преступление, как показано в этом отрывке из Bacon_:

Radiant Story

Но как простое выбрасывание предмета из инвентаря спровоцировала такую перепалку между несколькими персонажами и затем целый бой? Ответ в системе Radiant Story, которая представляет собой новый зонтичный термин для набора систем: сцен, алиасов и менеджера истории.

Много чего в играх Бесезды основано на квестах, и те, что вы видите в своем журнале квестов, это просто вершина айсберга (по нему вы тоже можете забраться). Например, большая часть динамических бесед в Обливионе привязано к квесту, и к игроку отношения не имеют. В таком случае квестовая система (злостно) используется для группирования нужных диалогов. Это необходимый костыль для организации вещей в этом убогом пользовательском интерфейсе, где ничего не найдешь. Скйарим идет еще дальше. Он может иметь или не иметь "бесконечные квесты", но у него их точно полно - около 1800 в базовой игре, по крайней мере если мы считаем "технические" квесты, которые не видит игрок. Я не буду говорить подробно о Radiant-квестах в этой статье, поскольку к Radiant AI они на деле отношения не имеют, но во многом они зависят от систем, которые я опишу. Сценка с дракой это действительно повторяющийся квест, и в Скайриме такие сценки осмысленней, чем в Обливионе.

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

Графический редактор с таймлайном делает облегчает создание сцен. Хотя лежащая в основе технологии несильно отличается от Обливиона.

Алиасы - наиболее важная концепция из тех, что принадлежат Radiant Story. В предыдущих итерациях движка квесты были жестко заскриптованы по необходимости: скрипты, диалоги и пакеты ИИ отсылали к конкретным сущностям и локациям, что сделало рефакторинг и внесение изменений в них крайне неудобным. Простейший способ использовать алиас - использовать его как имя. Это замена для локации или игровой сущности, которую можно применить в скрипте, пакете или сцене, и при этом ничего не сломать, даже если персонаж или предмет передвинули в другую ячейку или заменили.

Интерфейс условий всё еще с нами. И в нем угадываются черты потомка редактора Морровинда.

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

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

Что это значит

У Скайрима есть множество заскриптованных сценок, подобных этой (и динамических и сделанных вручную), и во многом они могущественнее и менее кривы, когда дело доходит до симуляции мира, как это было в предыдущих играх. По крайней мере иногда Скайрим можно воспринимать всерьез, в отличие от Обливиона, который всегда кажется какой-то комедией, даже когда работает корректно.

Однако наблюдается сдвиг в дизайнерской философии. Сдвиг от систем к контенту, притом что есть системы, пошедшие в ином направлении (такие как Radiant квесты). Если Обливион это функционирующая симуляция странноватого фентезийного мира, буквально находящаяся в шаге от полного коллапса, Скайрим это более гладкий псевдо-викинговский тематический парк. В каком-то смысле самые запоминающиеся и прикольные моменты Скайрима заранее задизайнены, в то время как лучшее, что есть в Обивионе, покуда вы воспринимаете происходящее как комедию, это производное от его систем. Какой из подходов лучше - дело вкуса.

Fallout 4

Скажу честно: в последний раз я в него играл лет десять назад, и мне лень снова его устанавливать, чтобы проанализировать кое-какие вещи. Судя по множеству статей из Вики и моддерской документации эта игра во многом следует по пути Скайрима. Большая часть уникальных НПС имеет базовые расписания, которые включают в себя сон ночью и работу в течение дня. Построенные игроком поселения - нововведение, и, мне кажется, практически все жители этих поселений работают на основе ИИ пакета Sandbox. Они делают что-то всё время, не делая по сути ничего. Если в этой игре есть какой-то мозговзрывающий ИИ-функционал, дайте знать.

Старфилд

Старфилд вышел почти через 8 лет после Fallout 4 (что??) и получил смешанные отзывы. Лично мне эта игра зашла на пару десятков часов, что намного меньше времени, проведенного мной в предыдущих играх Бесезды. Много виртуальных чернил пролилось в дебатах об игре, но в целом, я думаю, что общий консенсус, несмотря на относительно уникальный сеттинг ("насапанк", жесткий сай-фай), игра предьявляет нам очень обыденную по сеттингу и самую неинтересную РПГ из всех игр бесезды до сего дня.

Возможно, есть причина почему футболки со Старфилд имеют скидку в 50%. Футболки с Hi-Fi Rush тоже продаются с дисконтом, но скорее потому, что Бесезда больше не владеет этим IP.

Широка как галактика, глубока как лужа

Её дизайн как бы намекает, что игра полна конфликтов и упущенных возможностей. Сеттинг предполагает наличие элементов выживания, но механики их не содержат. Космический корабль ограничен в расстоянии для прыжка из-за "топлива", но после прыжка ваши баки магическим образом снова полны без всякого обьяснения. Собственно геймплей - эволюция того, что мы видели в Fallout 4. Это не плохо, но само по себе недостаточно. Аванпосты - эволюция поселений из Fallout 4, и служат они бесконечным генератором ресурсов, если выдержать всю нудятину по их микроменеджементу. 

Тысяча процедурно сгенерированных планет - действительно присутствует, но в них нет ничего интересного. Радикальный поворот от вручную собранного мира к процедурной генерации, это по своему понятный, но одновременно внезапный выбор, полностью пересматривающий решение Бесезды, принятое между Даггерфоллом и Морровиндом. Некоторые планеты имеют вручную созданные города и другие точки интереса, и они намного интереснее всего, что сделано процедурно. Я бы предпочел больше сделанных вручную локаций и отсутствие процедурных, даже если количество планет снизилось бы до одной или двух.

Регресс

Распиасаний неписей больше нет. Система пакетов ИИ еще существует и почти не изменилась со времен Скайрима, но расписания практически не используются. В главном городе Новая Атлантида магазины открыты 24\7, их продавцы всегда на месте - ностальгический отскок ко временам Морровинда. Единственные неписи с заметными расписаниями, о которых я в курсе, это члены фракции основного квеста, Созвездия, но даже они заточены в штаб-квартире, перемещаясь лишь между комнатами.

Вот несколько цифр: Обливион имел 7200 пакетов ИИ, Скайрим - около 6000, а Старфилд около 3500. Половина пакетов в Обливионе содержат расписания, в Скайриме - около 25%. В Старфилде это число находится около 6%. Числа едва ли сравнимы напрямую без дальнейшего контекста: например, когда как в Скайриме пакетов в целом меньше, чем в Обливионе, его пакеты намного более модульные и многоразовые, иак что один и тот же пакет может использоваться десятками разных неписей. Более того, большая часть пакетов расписания в Старфилде привязаны к квестами, а относитеьльно малое количество используется для расписаний в стиле Обливиона.

Система расписаний, изначально созданная для Обливиона, едва ли подходит Старфилду. Длительность дня различается от планеты к планете, луне или космической станции, но расписание было привязано к единообразной "Земной" системе времени. Интересный концепт для "реалистичного" сай-фая: как люди адаптируются к планете, где каждыйдень длится пару земных часов или нескольким земным месяцам? Но Старфилд вообще не заинтересован в таких вопросах и показывает только два разных типа часов: один для локального времени, а другой для земного "универсального" времени.

Другое нововведение в Старфилде - массовка НПС (crowd NPCs), которые используются для заполнения главных городов игры. Мое предположение было в том, что они даже не "реальные" НПС, но скорее отдельные легковесные системы, позволяющие движку размножить пару-тройку десятков неписей по экрану. В итоге это оказалось не совсем так, поскольку массовка действительно представляет собой полноценных акторов, имеющих инвентари, фракции и пакеты ИИ. Оптимизция достигается за счет упрощенных моделей, анимаций и шейдеров, и всё. Наибольшее отличие было в том, что массовка генерируется динамически, когда игрок заходит в область. Массовка не имеет домов, расписаний, имен или любой иной постоянной информации (persistent data). Всё это и ясно и грустно одновременно: с одной стороны, нереалистично ожидать от игры тысячи полностью проработанных нпс со своими домами на множестве планет. С другой стороны, множество неписей в городах были постоянными, имели имена и дома (или место, где спать) еще с Морровинда.

Я слышал, что вид этих неписей Бесезда исправила в патчах. Этот скриншот сделан с изначальной версии игры.

Выводы

Вот и всё. Мы прошли долгий путь от Морровинда до Старфилда и наблюдали, как технологии, совокупно названные Radiant AI, изменялись во времени. Оригинальное виденье Radiant AI было прямолинейно - симулировать интеллект персонажей, чтобы сделать мир более живым, воспринимая НПС и игрока в каком-то смысле равным образом. Такое виденье никогда не было полноценно реализованным, но даже разбавленная версия Radiant AI в Обливионе (и прочих играх Бесезды) до сих пор удивляет и являет собой уникальную систему в видеоиграх. Системы, созданные для Radiant AI 20 лет назад, до сих пор являются важными частями Creation Engine, даже если философия игрового дизайна Бесезды радикально поменялась со времен Обливиона. Мы точно не знаем, что Бесезды сделает с The Elder Scrolls VI, но, мне кажется, они приняли к сведенью отношение фанатов к Старфилду. И я надеюсь, что новые свитки будут хорошей игрой.

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

Можете подписаться на меня на Bluesky, чтобы читать мои статьи и следить за моими проектами. Спасибо!

Материал подготовлен ArtemSH специально для TGM — Tesall Game Magazine.
Переводчик: ArtSH
Автор: Paavo
Источник: Перейти
0

Комментарии

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