Расширенная настройка ИИ

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

(Различия между версиями)
Перейти к: навигация, поиск
 
Строка 1: Строка 1:
-
{{В процессе перевода|дата=11 января 2012}}
+
= Введение =
-
 
+
-
= Введение<br/> =
+
Несмотря на широкие графические возможности CryENGINE 2, его красивая графика ещё не делает каждый уровень интересным и правильным с точки зрения дизайна уровней. Crysis не только был технической демонстрацией движка, но также преподносил линейный, в то же время ориантированный на выбор игрока геймплей. Это пособие направлено на повышение знаний дизайнеров об игровой настройке ИИ, и создания расширенных возможностей по управлению единицами ИИ в игре, чтобы приспособить их к любым вариантам дизайна уровней. Это руководство предполагает, что вы владеете эементарными техниками дизайна уровней, такими как '''''триггеры'' '''и '''''сценарии flowgraph'''''.
Несмотря на широкие графические возможности CryENGINE 2, его красивая графика ещё не делает каждый уровень интересным и правильным с точки зрения дизайна уровней. Crysis не только был технической демонстрацией движка, но также преподносил линейный, в то же время ориантированный на выбор игрока геймплей. Это пособие направлено на повышение знаний дизайнеров об игровой настройке ИИ, и создания расширенных возможностей по управлению единицами ИИ в игре, чтобы приспособить их к любым вариантам дизайна уровней. Это руководство предполагает, что вы владеете эементарными техниками дизайна уровней, такими как '''''триггеры'' '''и '''''сценарии flowgraph'''''.
-
= Использование нода Entity:BroadcastEvent в своих целях<br/> =
+
= Использование нода Entity:BroadcastEvent в своих целях =
-
 
+
-
'''Entity:BroadcastEvent''' is an iterative flowgraph node that is capable of selecting a multitude of entities (on the basis of their names containing a certain string) and then performing an entity event. How does this aid in level design? Instead of manually adding all entities to a given flowgraph for whatever purpose, you can simply set up all your entities with certain names (which you should be doing anyway for organisation's sake!) and then execute one flowgraph node. This means that if you decide to, say, change the amount of enemies in the future, you can simply add them with certain names and not worry about rescripting them. Let’s look at an example of this now in a real level design scenario.
+
-
 
+
-
== Появление ИИ<br/> ==
+
-
 
+
-
For the purposes of this tutorial we are only going to apply the effect to two alien troopers, but this will work on much larger groups of AI if necessary.
+
-
 
+
-
=== Правила наименования<br/> ===
+
-
Firstly, we need to set our AI up with names that are guaranteed to be unique. I personally use a fairly long string that corresponds to the event in the level. For this particular occasion I have used '''CrashSiteAI''' as the prefix to the entity names (''the actual troopers are CrashSiteAI1 and CrashSiteAI2 respectively'').
+
'''Entity:BroadcastEvent''' - итеративный нод, который может выбрать множество сущносте (на основе их имен, содержащих определенную строку), а затем выполняет событие сущности. Как это может помощь в дизайне уровней? Вместо того, чтобы вручную добавлять все сущности к потоковому графу в любых целях, вы можете просто назвать все ваши сущности по определенному (что надо делать в любом случае ради порядка!), а затем выполнять всё в одном ноде. Это означает, что если вы решите, например, изменить количество врагов в будущем, вы можете просто добавить их с определенными именами и не беспокоиться о их рескриптинге. Теперь давайте посмотрим на пример этого в реальном дизайне уровней.
-
=== Отключение единиц ИИ при старте<br/> ===
+
== Появление ИИ ==
 +
В целях этого руководства мы всего лишь применим эффект к двум труперам, но он будет работать на значительно большем количестве групп ИИ, если необходимо.
-
What will happen with these AI? Well, I want to disable them until the point where the player triggers a certain event which in this instance is entering a proximity trigger. Firstly, let's take a look at the necessary setup to disable the AI on game start. The flowgraph looks like this:
+
=== Правила наименования ===
-
<center>[[File:EAIS DisableFG.jpg|RTENOTITLE]]</center>
+
Сначала нам необходимо назвать нашего ИИ таким именем, которые гарантированно будет уникальным. Лично я использую довольно длинную строку, которая соответствует событию на уровне. В данном конкретном случае я использовал '''CrashSiteAI''' в качестве префикса для имени сущностей (''фактически труперы имеют название CrashSiteAI1 и CrashSiteAI2 соответственно.'').
-
We want to call the '''Disable''' event for the troopers. You can view a full list of entity events by either viewing the Input/Output section of the entity in the rollup bar, or by adding the entity to a flowgraph and looking at the different options available.
+
-
=== Включение по входу в триггер<br/> ===
+
=== Отключение единиц ИИ при старте ===
 +
Что произойдет с этими ИИ? Ну, я хочу, отключить их до того момента, пока игрок не вызовет определенное событие, которое в данном случае — вход в ProximityTrigger. Сначала давайте взглянем на необходимые настройки для отключения ИИ при начале игры. Потоковый граф выглядит следующим образом:
 +
<center>[[File:EAIS DisableFG.jpg]]</center>
 +
Мы хотим вызвать событие '''Disable''' для труперов. Вы можете просмотреть полный список событий сущности взглянув в разделе «Input/Output» сворачивающейся панели, либо путем добавления сущности в потоковый граф и, просмотром доступных параметров.
-
Now we need to call the '''Enable''' event when the player enters the trigger. The flowgraph is made in a very similar fashion.
+
=== Включение по входу в триггер ===
-
<center>[[File:EAIS EnableFG.jpg|RTENOTITLE]]</center>
+
Теперь нам необходимо вызвать событие '''Enable''' когда игрок войдёт в триггер. Потоковый граф делается очень похожим образом.
-
More to come in the future on extensible AI setup, I hope this has helped some people understand flexible design more and that your projects benefit at least slightly.&nbsp;:)
+
<center>[[File:EAIS EnableFG.jpg]]</center>
-
<center>[[File:EAIS cover.jpg|RTENOTITLE]]</center>
+
Подробные детали по расширенной настройки ИИ будут в будущем, а пока надеюсь, что это помогло некоторым людям чуть больше понять гибкий дизайн и что это хоть чуть-чуть помогло вашим проектам.&nbsp;:)
-
<br/><br/>
+
<center>[[File:EAIS cover.jpg]]</center>
-
[[Category:Синглплеер]] <br/>
+
[[Category:Синглплеер]]

Текущая версия на 21:38, 15 июня 2012

Содержание

Введение

Несмотря на широкие графические возможности CryENGINE 2, его красивая графика ещё не делает каждый уровень интересным и правильным с точки зрения дизайна уровней. Crysis не только был технической демонстрацией движка, но также преподносил линейный, в то же время ориантированный на выбор игрока геймплей. Это пособие направлено на повышение знаний дизайнеров об игровой настройке ИИ, и создания расширенных возможностей по управлению единицами ИИ в игре, чтобы приспособить их к любым вариантам дизайна уровней. Это руководство предполагает, что вы владеете эементарными техниками дизайна уровней, такими как триггеры и сценарии flowgraph.

Использование нода Entity:BroadcastEvent в своих целях

Entity:BroadcastEvent - итеративный нод, который может выбрать множество сущносте (на основе их имен, содержащих определенную строку), а затем выполняет событие сущности. Как это может помощь в дизайне уровней? Вместо того, чтобы вручную добавлять все сущности к потоковому графу в любых целях, вы можете просто назвать все ваши сущности по определенному (что надо делать в любом случае ради порядка!), а затем выполнять всё в одном ноде. Это означает, что если вы решите, например, изменить количество врагов в будущем, вы можете просто добавить их с определенными именами и не беспокоиться о их рескриптинге. Теперь давайте посмотрим на пример этого в реальном дизайне уровней.

Появление ИИ

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

Правила наименования

Сначала нам необходимо назвать нашего ИИ таким именем, которые гарантированно будет уникальным. Лично я использую довольно длинную строку, которая соответствует событию на уровне. В данном конкретном случае я использовал CrashSiteAI в качестве префикса для имени сущностей (фактически труперы имеют название CrashSiteAI1 и CrashSiteAI2 соответственно.).

Отключение единиц ИИ при старте

Что произойдет с этими ИИ? Ну, я хочу, отключить их до того момента, пока игрок не вызовет определенное событие, которое в данном случае — вход в ProximityTrigger. Сначала давайте взглянем на необходимые настройки для отключения ИИ при начале игры. Потоковый граф выглядит следующим образом:

EAIS DisableFG.jpg

Мы хотим вызвать событие Disable для труперов. Вы можете просмотреть полный список событий сущности взглянув в разделе «Input/Output» сворачивающейся панели, либо путем добавления сущности в потоковый граф и, просмотром доступных параметров.

Включение по входу в триггер

Теперь нам необходимо вызвать событие Enable когда игрок войдёт в триггер. Потоковый граф делается очень похожим образом.

EAIS EnableFG.jpg

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

EAIS cover.jpg