Первоисточник:
John Funge:
Cognitive Modeling for Computer Games (1999)
URL:http://citeseer.ist.psu.edu/article/funge99cognitive.html

Когнитивное моделирование для компьютерных игр

Джон Фунг

Microcomputer Research Lab

Intel Corporation

Реферат

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

Другая важная проблема, рассматриваемая в данной статье, - как обеспечить удобный механизм, позволяющий программистам удерживать баланс между большинством быстрых предопределенных поведений персонажей и более медленным принятием решений во время выполнения. К тому же, используя интервальную арифметику для объединения ощущений в нашу основную теоретическую структуру, мы позволяем персонажам генерировать планы действий, даже когда они оказываются в очень сложном, динамическом виртуальном мире. Все эти идеи были объединены в разработанном нами языке когнитивного моделирования (CMLCognitive Modeling Language). CML используется, чтобы выразить что персонаж знает, как это знание приобретено, и как оно может быть применено при планировании действий. Это позволило нам быстро и легко создавать различные "интеллектуальные" персонажи, населяющие разнообразные виртуальные миры.

Вступление

Мы разбили когнитивное моделирование на 2 связанные подзадачи: спецификация области знаний и спецификация управления. Одно из преимуществ такого разбиения то, что код становится легче поддерживать. Если мы имеем правильное знание о мировой установке, то для генерации нового поведения нам достаточно поменять блок управления. Персонажи могут совмещать знания в сочетаниях, о которых мы не можем знать заранее. Эти знания могут использоваться ими в собственных стратегиях для достижения целей. Такой подход напоминает классическую формулу ИИ, которая пытается поддерживать модульность цели путем разграничения знания и управления.

Управление +Знания = Поведение

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

Традиционный ИИ стиль планирования, конечно, подпадает под это описание, но различные особенности CML позволяют определить области знаний и предоставляют разработчику игры знакомые структуры управления, чтобы сосредоточить возможности устройства рассуждений. Это формирует важную прослойку между логическим программированием (например Prolog) и процедурным (например С). Для быстрого создания прототипов сокращение времени развития гораздо важнее быстрого использования. Поэтому разработчик игры может в большей степени положиться на устройство рассуждений. Если эффективность исполнения также важна, наш подход использует постепенное развитие. Мы можем быстро создать работающий прототип, который будет постепенно усовершенствоваться путем подключения все большего количества эвристической информации управления для ограничения фокуса устройства рассуждений.

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

Спецификация области знаний

Спецификация области знаний заключается в предоставлении персонажу знания о том, как изменяется его мир. Мир задуман, как совокупность последовательности ситуаций. Каждая ситуация - "снимок" состояния мира. Любое свойство мира, которое может измениться во времени, объявляется переменной. Ее значения меняются при выполнении действий. Возможность выполнения действий определяется заданными пользователем предусловиями.

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

Эта проблема известна как frame problem. Для ее решения примем приближение, описанное в  (Reiter 1991). Для каждой переменной автоматически собираются все результаты действий, определенные пользователем и делается предположение, что эти результаты – единственные. Для каждой переменной такое предположение представляется внутренне так называемой аксиомой состояния приемника.

Спецификация управления

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

Здесь вступают в силу сложные действия (Levesque etal. 1997). Сложные действия состоят из других действий, с использованием знакомых программистам конструкций таких как “while” и менее знакомых – например, недетерминированный выбор. Сложные действия воплощены в CML и позволяют пользователю, указать, что следует учитывать при наброске планов.

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

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

Ощущения

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

Представление невежества/знания внутри исчисления ситуаций оказывается сложной задачей. Хотя есть некоторые теоретические результаты, но насколько мы знаем, предыдущие подходы к «ощущениям» в пределах исчисления ситуации не являлись легко реализуемыми. Наша идея заключается в использовании интервалов для представления уровня невежества/знания персонажа об аспектах его мира. Например, если мы имеем меняющуюся температуру, то интервал (10; 40) может представлять знания персонажа о том, что температура - между 10 и 40 градусами.

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