Архив
Новости
Текущие
Архив
Общение
Форум
Библиотека
Статьи
Стихотворения
Fan-Works
Рисунки
Зарубежные рисунки
Аудио
Видео
Флэш
Игры
Fan-Миссии
Установка FM
Thief 1 FMs
Thief 2 FMs
Thief 3 FMs
TDM FMs
Переводы
Прохождения
Обзоры
Demo
В Разработке
Отмененные
Редакторы
DromEd
T3Ed
DarkRadiant
Сайт
Ссылки
Авторы
О сайте
Просмотр каталога:
Простой | Подробный

На главную » Файловый Архив » Библиотека » Статьи разработчиков » tdp_ai.pl

GDC 2003: Построение системы чувств ИИ:
Изучение на примере Thief: The Dark Project


Автор: Том Леонард

Опубликовано: Интернет-журнал Gamasutra 07.03.2003 г.


Термин "чувства" (senses) в разработке игр — это метафора, применяемая для понимания, разработки и обсуждения той части ИИ, которая отвечает за сбор информации об интересующих предметах окружающей среды в игре. Персонажи, не управляемые игроком (Non-player characters, NPC) визуально представляются как люди, животные или другие существа с глазами и ушами, что в реалистичном трехмерном мире хорошо подходит под эту метафору.

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

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

Эта статья описывает подход к разработке и реализации высококачественной системы чувств для ИИ в игре от первого лица, ориентированной на скрытность. Описанные методы основаны на опыте создания ИИ для игры Thief: The Dark Project, а также знакомства с кодом Half-Life. Изначально, базовые принципы ощущений ИИ изложены на примере Half-Life. Затем описывается сенсорная чувств, созданная для Thief.


Вводный пример: Half-Life


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

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

Например, основной цикл логики ощущений выглядит так:

ЕСЛИ я нахожусь близко к игроку ТО...

Начало осмотра
--Собрать список объектов, находящихся на определенном расстоянии
--Для каждого из найденных объектов...
----ЕСЛИ он меня интересует И
----ЕСЛИ он в моем конусе зрения И
----ЕСЛИ я могу провести линию от моих глаз до него...
------ЕСЛИ это игрок И
------ЕСЛИ мне задано не видеть игрока пока он меня не увидит И
------ЕСЛИ он меня не видит
--------Игнорировать
------ИНАЧЕ
--------Запустить реакцию в зависимости от моего отношения к увиденному объекту
Конец осмотра


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

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

Логика также демонстрирует базовое построение зрения: дистанция зрения, конус зрения (viewcone), линия взгляда (line-of-sight) и положение глаз (рис. 1). Каждый ИИ обладает ограниченным по длине двумерным полем зрения, в котором он проводит линии до интересующих его объектов. Отсутствие препятствий на пути линии означает видимость.



рис. 1


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

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

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

Ощущения как основной элемент геймплея: Thief


Thief: The Dark Project и его преемники представляет игру малой степени заскриптованности, где основная механика игры, скрытность, не вписывается в традиционную форму 3D-игр от первого лица. Игрок в Thief движется медленно, избегает конфликтов, для него существуют наказания за убийство людей, а его самого убить весьма легко. Геймплей строится на приливах и отливах знания ИИ о присутствии игрока, когда он движется по игровому пространству. Предполагается, что игрок будет проходить через зоны, населенные стационарными, движущимися и патрулирующими ИИ, избегая обнаружения, прячась в тенях и не выдавая себя звуками. Хотя чувства ИИ основаны на тех же идеях, что и в Half-Life, но механика подкрадывания, убегания и удивления потребовали более сложной системы чувств.

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

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

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

Расширение чувств


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



Рис. 2. Базовые компоненты и отношения между ними


Построение системы и потока данных следует из ее определения как системы сбора информации, которая может изменяться и настраиваться, но при этом остается стабильной и предсказуемой.

В этой системе чувства ИИ заключены в рамки понятия "осведомленности" (awareness). Осведомленность выражается в диапазоне дискретных состояний, которые определяют знания ИИ о существовании, местоположении и идентичности интересующего объекта. Эти дискретные состояния — единственные параметры системы, которыми может оперировать дизайнер, а также они используются ИИ более высокого уровня для формирования уровня тревоги (alertness). В ИИ Thief диапазон уровней тревоги аналогичен диапазону состояний осведомленности. Текущий уровень тревоги ИИ, в свою очередь влияет на систему чувств для изменения ее поведения.

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



Рис. 3. Связи ощущений


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

Видимость определяется как совокупность освещенности, подвижности и заметности (размер, контраст между другими объектами) объекта. Их значения плотно связаны с требованиями игры. Например, освещенность игрока изменяется в зависимости от освещенности пола под игроком, что позволяет игроку объективно оценить собственную безопасность. Эти значения и соответствующая суммарная видимость сохраняются в виде аналоговых значений в пределах 0…1


Конусы зрения


Вместо двумерного поля зрения, в Thief используются трехмерные конусы, характеризуемые углом в плоскости XY, углом в плоскости Z, длиной и набором параметров, который характеризует общую остроту зрения, чувствительность к разным типам раздражителей (движение, свет) и зависимость от уровня тревоги. Конусы зрения ориентированы согласно тому, в каком направлении смотрит ИИ.

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

Например, у ИИ на рис. 4 пять конусов зрения. Объект в точке A будет захвачен конусом номер 3. Конус, используемый для расчета видимости объектов в точках B и C будет один и тот же — 1, и при одинаковых значениях видимости объекта результаты будут одинаковыми.



Рис. 4. Конусы зрения, вид сверху


При осмотре интересующих объектов, обработчик данных чувств сначала определяет, в какой из конусов попадает объект. Затем внутреннее значение видимости проходит через функцию "зрения" этого конуса, которая выдает дискретное значение осведомленности.

Целью создания нескольких конусов было имитировать наличие прямого и периферийного зрения, а также различения объектов, находящихся на той же высоте от тех, что находятся выше или ниже. Конус 5 — это хороший пример использования низкоуровневого средства для воплощения идеи высокого уровня. Этот конус "мнимого зрения" установлен для осмотра назад и настроен на обнаружение движения, давая ИИ "нехорошее предчувствие", когда их кто-то преследует, даже если игрок не производит звука.


Информационный конвейер


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



Рис. 5. Информационный конвейер


Ядро системы чувств выполняет функции обработки видимости, звуковых событий, текущих связей осведомленности, данных конфигурации, определяемых дизайнером и программистом, и текущее состояние ИИ, возвращая при этом по одному значению осведомленности для каждого интересующего объекта. Эти функции считаются "черным ящиком", который настраивают программисты ИИ на протяжении всей разработки игры.

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

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


Импульсы осведомленности (Awareness Pulses)


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

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

Во-вторых, если осведомленность данного импульса выше предыдущих, то он проходит через фильтр с временным критерием, который определяет, будет ли повышен общий уровень осведомленности. Задержку по времени определяет только текущее состояние (current state), а не целевое (goal state). Таким образом реализуется алгоритм задержки реакции (reaction delay) и прощения ошибок игрока (player forgiveness). Как только проходит временной порог, осведомленность переключается в целевое состояние, минуя промежуточные.

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

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


Выводы


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

Кроме того, несмотря на свою эффективность, она создана для игры, которая во многом концентрируется вокруг результатов работы этой системы. В Thief она потребляет значительную часть занятости процессора. Это отнимет время, которое могло бы быть потрачено на поиск пути, тактический анализ и другие процессы принятия решения.

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


Дальнейшее изучение


Поскольку Dark Engine, на котором построен Thief, является системой, управляемой данными, то большинство идей, представленных в этой статье, и все подробности настройки можно изучить непосредственно с помощью инструментов, доступных на www.thief-thecircle.com
Описание
Прохождение
FAQ - игровой
FAQ - технический
Скриншоты
Зарисовки
Обои
Видео
Аудио
Патчи
Переводы
Описание
Прохождение
FAQ - игровой
FAQ - технический
Скриншоты
Зарисовки
Обои
Патчи
Переводы
Описание
Прохождение
FAQ - игровой
FAQ - технический
Скриншоты
Зарисовки
Обои
Патчи
Переводы
Описание
Прохождение
FAQ - игровой
FAQ - технический
Скриншоты
Зарисовки
Обои
Патчи
Переводы
New Dark
The Dark Mod
Thief 2 Gold
Прочие

Night Blade
Thievery
Страница сгенерирована за 0.126 секунд.
© 2001-2018 - Thief: the Dark Fate
Использование материалов сайта разрешается только при согласии их авторов и администрации Dark Fate,
при этом ссылка на Dark Fate обязательна.