Скриптинг И.И.: Сигналы
Материал из CryWiki Russia
(Новая страница: «{{В_процессе_перевода}} {{Статья|автор= AndreyFilantrop |сложность=Средняя|совместимости=All|требова...») |
|||
Строка 9: | Строка 9: | ||
== Краткий обзор == | == Краткий обзор == | ||
- | '''CryAISystem''' (система искусственного интеллекта '''CryEngine''') предлагает мощный, полностью настраиваемый инструмент для коммуникации '''ИИ''' сущностей друг с другом, которым является система сигналов. | + | '''CryAISystem''' (система искусственного интеллекта '''CryEngine''') предлагает мощный, полностью настраиваемый инструмент для коммуникации '''ИИ''' сущностей друг с другом, которым является система сигналов. Сигнал это событие, которое может быть послано агентом другому единственного агенту (включая самого себя) или под-множеству всех агентов активных в настоящее время в игре. Мы уже встречались с концептом сигнала в секции по голпайпам (см. описание сигнальной цели более подробно). В настоящей секции мы опишем: |
+ | |||
+ | - как посылать сигналы от поведения агента к другим агентам | ||
+ | |||
+ | - как определять подмножество агентов, которые получат посылаемый сигнал | ||
+ | |||
+ | - как агент получатель может реагировать на посланный сигнал | ||
+ | |||
+ | == Посылание сигналов== | ||
+ | |||
+ | Метод посылания сигналов следующий: | ||
+ | |||
+ | <source lang="lua"> | ||
+ | AI:Signal(Signal_filter, signal_type, *MySignalName*, sender_entity_id); | ||
+ | -- смысл этой записи: | ||
+ | -- Некий ИИ Сигнал (Фильтр сигнала, тип сигнала, *Имя моего сигнала*, id сущности посылающей сигнал) | ||
+ | </source> | ||
+ | |||
+ | Где: | ||
+ | |||
+ | '''Signal_filter:''' определяет подмножество агентов в игре, которые будут получать сигнал. Оно может быть выбрано из фиксированного набора символов, которые имеют префикс '''SIGNALFILTER_.''' Полный список доступных сигнальных фильтров представлен ниже. | ||
+ | |||
+ | {| class="simple" border="1" | ||
+ | |- | ||
+ | | 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> | ||
+ | |- | ||
+ | | width="10%" | 1 | ||
+ | | width="60%" | сущность, получающая сигнал, будет обрабатывать его только если она активна | ||
+ | и нет установки на игнорирование (см. AI:MakePuppetIgnorant более подробно) | ||
+ | |- | ||
+ | | width="10%" | 0 | ||
+ | | width="60%" | сущность, получающая сигнал, будет обрабатывать его только если нет установки на игнорирование | ||
+ | |- | ||
+ | | width="10%" | -1 | ||
+ | | width="80%" | сущность, получающая сигнал, будет обрабатывать его безоговорочно | ||
+ | |} | ||
+ | |||
+ | '''MySignalName:''' фактический идентификатор сигнала. Это может быть любая не пустая строка; должна существовать функция с таким же именем или в его текущем поведении, его дефолтном поведении (default behavior), или в '''DEFAULT.lua''' скриптовом файле для того чтобы реагировать на полученный сигнал. | ||
+ | |||
+ | '''entity_id:''' это '''id''' сущности получателя сигнала. Обычно вы можете захотеть прописать entity.id (или self.id если он вызывается из '''entity''' а не из её '''behavior'''), послать сигнал к самому отправителю, но вы также можете прописать любой другой id куда послать сигнал к другой сущности. | ||
+ | |||
+ | |||
+ | == Определение, кто будет получать сигнал == |
Версия 06:41, 26 апреля 2012
|
Содержание |
Сигналы
Краткий обзор
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 куда послать сигнал к другой сущности.