Скриптинг И.И.: Сигналы

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

(Различия между версиями)
Перейти к: навигация, поиск
(Определение, кто будет получать сигнал)
(Посылание сигналов)
Строка 35: Строка 35:
|-
|-
| style="background: rgb(204, 204, 204);" width="10%" | <div style="color: rgb(0, 0, 0);">'''signal_type'''</div>
| style="background: rgb(204, 204, 204);" width="10%" | <div style="color: rgb(0, 0, 0);">'''signal_type'''</div>
-
| style="background: rgb(204, 204, 204);" width="100%" | <div style="color: rgb(0, 0, 0);">'''описание'''</div>
+
| style="background: rgb(204, 204, 204);" width="80%" | <div style="color: rgb(0, 0, 0);">'''описание'''</div>
|-
|-
| width="10%" | 1
| width="10%" | 1
-
| width="60%" | сущность, получающая сигнал, будет обрабатывать его только если она активна
+
| width="80%" |
 +
 
 +
сущность, получающая сигнал, будет обрабатывать его только если она активна
 +
 
и нет установки на игнорирование (см. AI:MakePuppetIgnorant более подробно)
и нет установки на игнорирование (см. AI:MakePuppetIgnorant более подробно)
|-
|-
| width="10%" | 0
| width="10%" | 0
-
| width="60%" | сущность, получающая сигнал, будет обрабатывать его только если нет установки на игнорирование   
+
| width="80%" |  
 +
 
 +
сущность, получающая сигнал, будет обрабатывать его только если нет установки на игнорирование   
|-
|-
| width="10%" | -1
| width="10%" | -1
-
| width="80%" | сущность, получающая сигнал, будет обрабатывать его безоговорочно  
+
| width="80%" |  
 +
 
 +
сущность, получающая сигнал, будет обрабатывать его безоговорочно  
|}
|}

Версия 07:06, 26 апреля 2012

Эта страница страница помечена как находящиеся в процессе перевода.


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


Содержание

Сигналы

Краткий обзор

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

- как посылать сигналы от поведения агента к другим агентам

- как определять подмножество агентов, которые получат посылаемый сигнал

- как агент получатель может реагировать на посланный сигнал

Посылание сигналов

Метод посылания сигналов следующий:

AI:Signal(Signal_filter, signal_type, *MySignalName*, sender_entity_id);
-- смысл этой записи:  
-- Некий ИИ Сигнал (Фильтр сигнала, тип сигнала, *Имя моего сигнала*, id сущности посылающей сигнал)

Где:

Signal_filter: определяет подмножество агентов в игре, которые будут получать сигнал. Оно может быть выбрано из фиксированного набора символов, которые имеют префикс SIGNALFILTER_. Полный список доступных сигнальных фильтров представлен ниже.


signal_type
описание
1

сущность, получающая сигнал, будет обрабатывать его только если она активна

и нет установки на игнорирование (см. AI:MakePuppetIgnorant более подробно)

0

сущность, получающая сигнал, будет обрабатывать его только если нет установки на игнорирование

-1

сущность, получающая сигнал, будет обрабатывать его безоговорочно


MySignalName: фактический идентификатор сигнала. Это может быть любая не пустая строка; должна существовать функция с таким же именем или в его текущем поведении, его дефолтном поведении (default behavior), или в DEFAULT.lua скриптовом файле для того чтобы реагировать на полученный сигнал.

entity_id: это id сущности получателя сигнала. Обычно вы можете захотеть прописать entity.id (или self.id если он вызывается из entity а не из её behavior), послать сигнал к самому отправителю, но вы также можете прописать любой другой id куда послать сигнал к другой сущности.

Определение, кто будет получать сигнал

При помощи фильтра сигнала мы можем определять подмножество агентов, которые будут получать сигнал. Параметр фильтра сигнала в вызове функции AI:Signal (...) может быть один из следующих:

Signal filter
Сигнал посылается к:
0

Сущность определяется entity_id параметром (обычно сам посылатель но не обязательно)

SIGNALFILTER_LASTOP

Цель последней операции сущности (если таковая имеется)

SIGNALFILTER_TARGET

Текущая цель внимания сущности

SIGNALFILTER_GROUPONLY Все сущности в группе посылателя, например враги с такой же группой id, на расстоянии коммуникации с

отправителем

-- ----
-- ----
-- ----
-- ----
-- ----
-- ----
-- ----
-- ----