Скриптинг И.И.: Дерево выбора поведения

Материал из CryWiki Russia

(Различия между версиями)
Перейти к: навигация, поиск
Строка 44: Строка 44:
Чтобы проиллюстрировать вышеизложенное, секция '''selection variable''' может выглядеть таким образом:
Чтобы проиллюстрировать вышеизложенное, секция '''selection variable''' может выглядеть таким образом:
 +
 +
<source lang="lua">
 +
<Variables>
 +
  <Variable name="AwareOfSound" default="false"/>
 +
  <Variable name="AwareOfEnemy"/>
 +
</Variables>
 +
</source>
 +
 +
===Signal Variables:===
 +
 +
'''Signal Variables''' представляют возможность напрямую изменять переменные в '''ИИ''' '''BHS'''. Они приходят из ИИ системы и включают/выключают переменные объявленные в секции под названием «Переменные». Три параметра должны быть определены для каждой сигнальной переменной.

Версия 10:13, 20 августа 2012

Эта страница страница помечена как находящиеся в процессе перевода с: 20 июля 2012.
Статью пометил сам автор статьи.


О статье
АвторAndreyFilantrop
СложностьСредняя
ТребованияТекстовый редактор, Crysis 2 Mod SDK.
Дата добавления20/07/12


Содержание

Дерево выбора поведения

Обзор

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

Давайте определим некий пример, на который в дальнейшем мы будем ссылаться в течение всей этой статьи. Скажем некий ИИ, которого мы назовем «Grunt», имеет 3 поведения: idle, alert, и attack. (перевод этих названий соответственно: в режиме ожидания - т.е. дефолтное поведение, встревоженный, боевое поведение). ИИ должен быть по определению в дефолтном поведении idle, когда он не получает внешних стимулов; в состоянии alert он должен находиться, года он слышит что-то неизвестное, и наконец в состояние attack он перейдет, когда он визуально может уже видеть врага. Обратно в состояние idle он может перейти через некоторое время, если он на его протяжении не получает обновляющихся слуховых/визуальных стимулов. Чтобы поддерживать такую систему, ИИ должен иметь Дерево Выбора Поведений или BHS, которое будет определять, какие условия ассоциируются с каким из поведений. Глобальная ИИ-система будет заботиться об обновлении ИИ перцепции (т.е. восприятии сигналов) и посылании сигналов событий, когда состояние перцепции ИИ меняется.

Диаграмма вышеуказанных поведений может выглядеть так:


-потом нарисую


Этот макет является ключом к функционированию ИИ в игре, т.к. он определяет все поведения, которые ИИ должен поддерживать в игре. Это, естественно, должно переводиться в BHS с набором для реализации подходящего поведения. Все BHS должны быть определены внутри папки «Game» в директории «Scripts/AI/SelectionTrees». Новое дерево, добавляемое в эту папку, будет автоматически проявлено в игре при перезагрузке ИИ или при перезагрузке игры. Чтобы связать BHS с конкретным архетипом ИИ, загрузите архетип в редакторе, и используйте выпадающее меню для BehaviorSelectionTree параметра под вкладкой Class Properties.

Дерево Выбора Поведений: концепция и анатомия

BHS концепция предполагает, что в любой момент времени ИИ будет иметь одно поведение соответствующее текущему состоянию. Так, когда ИИ слышит какой-то звук, он начинает исследовать его, а когда видит врага - атакует его. Обратите внимание, что BHS не содержит информации о том, как ИИ переходит между состояниями, но содержит - только о том, как выбрать правильно поведение для правильного момента. BHS определяется посредством XML скрипт-файла и должно быть пригодным для ИИ, чтобы он мог перейти в любое поведение. Если BHS недоступно, то ИИ может только поворачивать голову по направлению к цели, и «ai_debugdraw 1» будет показывать «No Behavior» в дебаге.

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

Дерево Выбора Поведений содержит 4 компонента:

1) Selection Variables (Выбираемые переменные): Переменные используются для определения условий, которые выбирают между статусами в Дереве.

2) Signal Variables (Сигнальные переменные): Сигналы, как посылаемые ИИ системой, которые непосредственно изменяют состояние выбираемых переменных (см.пункт №1).

3) Leaf Translations (Листы трансляции): Список отображения от общих имен до архетип-специфических имен поведений.

4) The Selection Tree (Дерево выбора): структура дерева, которая определяет, какие поведения являются приоритетными и какие условия должны быть выполнены.

Selection Variables:

Selection variables объявлены в своем собственном ​​разделе под названием «Переменные». Каждая переменная является всего лишь именно декларацией, представляющей булево значение (т.е. логическое) true (правда) или false (ложь). Они могут быть включены/выключены извне как ИИ-системой, так и самими поведениями. Они являются концептуальными переключателями, которые необходимы чтобы выбирать текущее состояние поведения ИИ, использующего данное BHS. Кроме того, возможно передавать значение по умолчанию (хотя по умолчанию все значения установлены на положение «ложь»).

Чтобы проиллюстрировать вышеизложенное, секция selection variable может выглядеть таким образом:

<Variables>
  <Variable name="AwareOfSound" default="false"/>
  <Variable name="AwareOfEnemy"/>
</Variables>

Signal Variables:

Signal Variables представляют возможность напрямую изменять переменные в ИИ BHS. Они приходят из ИИ системы и включают/выключают переменные объявленные в секции под названием «Переменные». Три параметра должны быть определены для каждой сигнальной переменной.