<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.frozenbyte.com/index.php?action=history&amp;feed=atom&amp;title=Shadwen_ai</id>
	<title>Shadwen ai - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.frozenbyte.com/index.php?action=history&amp;feed=atom&amp;title=Shadwen_ai"/>
	<link rel="alternate" type="text/html" href="https://wiki.frozenbyte.com/index.php?title=Shadwen_ai&amp;action=history"/>
	<updated>2026-06-07T15:47:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.frozenbyte.com/index.php?title=Shadwen_ai&amp;diff=363&amp;oldid=prev</id>
		<title>AnteroFB: /* AI detection for moving dynamic objects */</title>
		<link rel="alternate" type="text/html" href="https://wiki.frozenbyte.com/index.php?title=Shadwen_ai&amp;diff=363&amp;oldid=prev"/>
		<updated>2018-06-18T08:15:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;AI detection for moving dynamic objects&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:15, 18 June 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l104&quot;&gt;Line 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To make the AI able to hear  and see the movement of a dynamic object, it needs certain components.&amp;quot;&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To make the AI able to hear  and see the movement of a dynamic object, it needs certain components.&amp;quot;&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[file:seehearreact.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;png&lt;/del&gt;|thumb|right|500px|The needed components.]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[file:seehearreact.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jpg&lt;/ins&gt;|thumb|right|500px|The needed components.]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The components an object needs in order for the guards to see and hear it are as follows:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The components an object needs in order for the guards to see and hear it are as follows:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* AreaComponent (with distractionObject bit in NotifyMask)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* AreaComponent (with distractionObject bit in NotifyMask)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>AnteroFB</name></author>
	</entry>
	<entry>
		<id>https://wiki.frozenbyte.com/index.php?title=Shadwen_ai&amp;diff=245&amp;oldid=prev</id>
		<title>AnteroFB: Copied the article from the old wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.frozenbyte.com/index.php?title=Shadwen_ai&amp;diff=245&amp;oldid=prev"/>
		<updated>2018-06-15T07:23:23Z</updated>

		<summary type="html">&lt;p&gt;Copied the article from the old wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Shadwen Editor Tutorial|Shadwen Editor Tutorial Main Page]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[shadwen_items|-&amp;gt; Next tutorial (Items)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[shadwen_rope_targets|&amp;lt;- Previous tutorial (Rope Targets)]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This section covers the basics of using AI in your levels, from how hideouts work to how the guards patrolling works. Note that this is an advanced tutorial, which assumes the player already has some experience with the editor. If this feels too complicated, you can always skip this tutorial for now, and come back once you have a good grasp of the other tutorials.&lt;br /&gt;
&lt;br /&gt;
Note that lot of the things covered in this tutorial (guards, Lily, hideouts, etc) are very Shadwen specific and won&amp;#039;t be useful for those looking for information about the Trine editors.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Level path in Shadwen Public Editor&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;data\mission\editor_tutorial\05_ai&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=Navigation Mesh=&lt;br /&gt;
[[File:navmeshinaction2.png|thumb|right|400px|How the NavMesh visualization looks like.]]&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;&amp;#039;&amp;#039;&amp;#039;Navigation Mesh&amp;#039;&amp;#039;&amp;#039; is the area in which the AI can move.&amp;lt;br&amp;gt;&lt;br /&gt;
You can see the Navigation Mesh by clicking the &amp;#039;&amp;#039;&amp;#039;Visualize Navigation Mesh&amp;#039;&amp;#039;&amp;#039; icon [[File:navmeshicon.png|25px]] in the [[Toolbar]].&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If &amp;#039;&amp;#039;&amp;#039;Navigation Mesh&amp;#039;&amp;#039;&amp;#039; is not created, the AI won&amp;#039;t work properly. Below video teaches how to create the Navigation Mesh.&lt;br /&gt;
[[File:navmeshcreation.mp4|thumb|none|700px|How to create NavigationMesh]]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Area Tool&amp;#039;&amp;#039;&amp;#039; can be selected either via the hotkey 4 or by clicking the corresponding icon in the toolbar. The idea is to cover the entire level with the &amp;#039;&amp;#039;&amp;#039;NavigationMeshAreaEntity&amp;#039;&amp;#039;&amp;#039;. This allows the editor to create an accurate NavMesh for the whole level. If some parts are not inside the area created by the area tool, they will not be included into the NavMesh properly and might cause problems for the AI. Do note that the visuals for both the Area tool and Scale Specific Side tool are really similar, so be careful not to mix them up! Another thing to keep in mind is to &amp;#039;&amp;#039;&amp;#039;never rotate the NavMesh&amp;#039;&amp;#039;&amp;#039;, doing so will result in errors and the NavMesh not working properly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;Dynamic objects such as boxes and barrels create holes to the Navigation Mesh so that the AI will go around them.&amp;lt;br&amp;gt;&lt;br /&gt;
If you want the guards to not be able to move in a specific area, you can also use &amp;#039;&amp;#039;&amp;#039;NavMeshCreatorCollisionHelper&amp;#039;&amp;#039;&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
This is basically an invisible collision helper without collision, so its only purpose is to create a hole in the Navigation Mesh.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
The above mentioned NavMeshCreatorCollisionHelper can be found from the [[Type_tree|type tree]] at: &amp;#039;&amp;#039;&amp;#039;InstanceBase &amp;gt; Entity &amp;gt; ObjectEntity &amp;gt; object &amp;gt; Helper &amp;gt; CollisionHelper &amp;gt; RockCollisionHelper&amp;#039;&amp;#039;&amp;#039;. It is a normal CollisionHelper that you just place in the level where you don&amp;#039;t want the AI to be able to reach. You can also change its size and other properties. &lt;br /&gt;
&lt;br /&gt;
=Hiding Spots=&lt;br /&gt;
[[File:hideoutcomponent.png|thumb|right|400px|Few of the most important properties of the HidoutComponent]]&lt;br /&gt;
{{StyledQuote|&amp;quot;Lily needs some hiding spots to hide in.&amp;lt;br&amp;gt;&lt;br /&gt;
For this purpose you can use bushes like &amp;#039;&amp;#039;&amp;#039;redwoodbushesLargePrefabEntity&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;indoorsredwoodbushesLargePrefabEntity&amp;#039;&amp;#039;&amp;#039; or haypiles such as &amp;#039;&amp;#039;&amp;#039;hayPile&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;hayPile_2&amp;#039;&amp;#039;&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Go to the hiding spot&amp;#039;s &amp;#039;&amp;#039;&amp;#039;GameHideOutComponent&amp;#039;&amp;#039;&amp;#039; and change the &amp;#039;&amp;#039;&amp;#039;PriorityGroup&amp;#039;&amp;#039;&amp;#039; setting to set the order of the hiding spot&amp;#039;s for Lily to use.&amp;lt;br&amp;gt;&lt;br /&gt;
The objects GameHideOutComponent is found in its Properties window.&amp;lt;br&amp;gt;&lt;br /&gt;
Start from PriorityGroup 0. Here you can also change other setting concerning the hiding spot.&amp;lt;br&amp;gt;&lt;br /&gt;
The hiding spots can also hide Shadwen and dead bodies.&amp;lt;br&amp;gt;&lt;br /&gt;
The placement, size, and quantity of the hiding spots is one way to adjust the difficulty of your level.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
[[File:hideoutstt.png|thumb|none|400px|Most of the hideout can be found under Prefab Entity, these two are the most commonly used types.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;It&amp;#039;s a good practice to number the PriorityGroups of the hiding spots 10, 20, 30 etc.&amp;lt;br&amp;gt;&lt;br /&gt;
This way, if you later want to add more you can just number them 12, 21 etc.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
The PriorityGroup of a hideout is a key factor in the decisions Lily makes. The highest active hideout is the one she will be attempting to go hide into. If that hideout is not accessible, she will go to the next highest one and so on. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;You can add a GameHideoutComponent such as &amp;#039;&amp;#039;&amp;#039;GameHideoutComponent(hay_set_alphatest_pile_1_v2_high.fbxmodel)&amp;#039;&amp;#039;&amp;#039; to just about any object if you really want to.&amp;lt;br&amp;gt;&lt;br /&gt;
You may want to edit the position and size of the component from the object&amp;#039;s Properties.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This component can be found in the [[Type_tree|type tree]] at: &amp;#039;&amp;#039;&amp;#039;ComponentBase &amp;gt; AbstractGameplayComponent &amp;gt; GameHideoutComponent &amp;gt; BodyGameHideoutComponent &amp;gt; HayPileBodyGameHideoutComponent&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=Patrol=&lt;br /&gt;
[[File:partolcomponent.png|thumb|right|400px|PatrolComponent]]&lt;br /&gt;
[[File:ppcomponent.png|thumb|right|400px|PatrolPointPathHelperEntity ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;Search the [[Type_tree|type tree]] for &amp;#039;&amp;#039;&amp;#039;PatrolPointPathHelperEntity&amp;#039;&amp;#039;&amp;#039;. Spawn &amp;#039;&amp;#039;&amp;#039;PatrolHelperEntities&amp;#039;&amp;#039;&amp;#039; from PatrolPointPathHelperEntity&amp;#039;s &amp;#039;&amp;#039;&amp;#039;Properties &amp;gt; PatrolPointList&amp;#039;&amp;#039;&amp;#039; (click the +).&amp;lt;br&amp;gt;&lt;br /&gt;
These PatrolHelperEntities are spawned right under the PatrolPointPathHelperEntity. Note that they are automatically placed on the AI layer.&lt;br /&gt;
The PatrolHelperEntities are used to create a &amp;quot;path&amp;quot; for the guards to follow.&amp;lt;br&amp;gt;&lt;br /&gt;
The order in which a guard will patrol these PatrolHelperEntities can be adjusted from the PatrolPointPahtHelperEntity under &amp;#039;&amp;#039;&amp;#039;PatrolPointPathCollectionComponent &amp;gt; PatrolPointList&amp;#039;&amp;#039;&amp;#039;. Unless you choose the PatrolType Random, then the order doesn&amp;#039;t matter.&amp;lt;br&amp;gt;&lt;br /&gt;
Go to the guard&amp;#039;s &amp;#039;&amp;#039;&amp;#039;PatrolComponent&amp;#039;&amp;#039;&amp;#039; -&amp;gt; &amp;#039;&amp;#039;&amp;#039;PatrolPathCollectionUH&amp;#039;&amp;#039;&amp;#039;. Click on the &amp;quot;...&amp;quot; and then click on the PatrolPointPathHelperEntity to select the patrol path for the guard.&amp;lt;br&amp;gt;&lt;br /&gt;
Here you can also change the guard&amp;#039;s PatrolStatus and PatrolType among other things.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;[[File:ppphett.png|400px|thumb||400px|PatrolPointPathHelperEntity in the Type Tree]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;[[file:ppoints.png|thumb||400px|These two will determine the path your AI walks]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;PatrolType:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PatrolType Loop&amp;#039;&amp;#039;&amp;#039;: The guard goes through the PatrolHelperEntities in order. After reaching the last PatrolHelperEntity, it starts from the first one again. The guard continues to do this until it sees or hears something.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PatrolType Random&amp;#039;&amp;#039;&amp;#039;: After the guard has reached a PatrolHelperEntity, it randomly chooses another PatrolHelperEntity from the PatrolPointHelperEntity&amp;#039;s PatrolPointList.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PatrolType PingPong&amp;#039;&amp;#039;&amp;#039;: After reaching the last PatrolHelperEntity in the PatrolPointList, the guard will turn around and go through the PatrolHelperEntities in reverse order.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SelectiveAIEnablingHelperEntity===&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;You can use &amp;#039;&amp;#039;&amp;#039;SelectiveAIEnablingHelperEntity&amp;#039;&amp;#039;&amp;#039; to choose which AI&amp;#039;s you want to enable when Shadwen reaches the SelectiveAIEnablingHelperEntity&amp;#039;s boxareacomponent.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==AIMissionExitHelperEntity==&lt;br /&gt;
[[file:aiexit.png|thumb|right|400px|Remember that the AIExit cannot hover in the air or the guards can&amp;#039;t reach it.]]&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;A level should have at least one &amp;#039;&amp;#039;&amp;#039;AIMissionExitHelperEntity&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the place the AI will run towards after seeing a dead body and going to alert mode.&amp;lt;br&amp;gt;&lt;br /&gt;
When the guards reach the exit, the game is over and you will have to rewind the time to continue.&amp;lt;br&amp;gt;&lt;br /&gt;
The AIMissionExitHelperEntity should touch the ground.&amp;lt;br&amp;gt;&lt;br /&gt;
You can choose which AIMissionExitHelperEntity a guard will use from &amp;#039;&amp;#039;&amp;#039;AlertnessComponent -&amp;gt; AIMissionExitUH&amp;#039;&amp;#039;&amp;#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
If you don&amp;#039;t assign an AIMissionExitHelperEntity to a guard, he will automatically run towards the closes AIMissionExit.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
In Shadwen, there are [[Shadwen_prefabs|prefabs]] used to indicate where the guards will run to. These are &amp;#039;&amp;#039;&amp;#039;alarm_bell_large&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;alarm_bell_wall&amp;#039;&amp;#039;&amp;#039;, both found in the [[Type_tree|type tree]] from: &amp;#039;&amp;#039;&amp;#039;IntanceBase -&amp;gt; Entity -&amp;gt; PrefabEntity&amp;#039;&amp;#039;&amp;#039;. With these in the level, the guards have a proper and intuitive place where they will run to when they are alerted.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gossip=&lt;br /&gt;
You can place &amp;#039;&amp;#039;&amp;#039;GossipHelperEntity&amp;#039;&amp;#039;&amp;#039; to a level somewhere near guards that you want to gossip. Use the &amp;#039;&amp;#039;&amp;#039;Area Tool&amp;#039;&amp;#039;&amp;#039; (hotkey 4) to modify the area which Shadwen has to reach to activate the gossip. Go to the GossipHelperEntity&amp;#039;s &amp;#039;&amp;#039;&amp;#039;GossipCollectionComponent &amp;gt; Pool&amp;#039;&amp;#039;&amp;#039; to add the &amp;#039;&amp;#039;&amp;#039;GossipComponent(s)&amp;#039;&amp;#039;&amp;#039; of your choice. Then, use the &amp;#039;&amp;#039;&amp;#039;Actors&amp;#039;&amp;#039;&amp;#039; setting to choose the guards. Change the Cooldown to choose how long it will take for the guards to start to gossip again (in milliseconds, making a value of 10000 equal to 10 seconds).&lt;br /&gt;
[[file:adding_gossip.mp4|600px]]&lt;br /&gt;
&lt;br /&gt;
=AI detection for moving dynamic objects=&lt;br /&gt;
&amp;lt;blockquote style=&amp;quot;border-left: 5px solid #ccc; margin: 1.5em 100px; padding: 0.5em 10px; font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;display: inline;&amp;quot;&amp;gt;&amp;quot;The barrels and boxes already have the necessary components to be seen by guards and to produce sound.&amp;lt;br&amp;gt;&lt;br /&gt;
However, by default, a dynamic object can&amp;#039;t be seen or heard by guards.&amp;lt;br&amp;gt;&lt;br /&gt;
To make the AI able to hear  and see the movement of a dynamic object, it needs certain components.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[file:seehearreact.png|thumb|right|500px|The needed components.]]&lt;br /&gt;
The components an object needs in order for the guards to see and hear it are as follows:&lt;br /&gt;
* AreaComponent (with distractionObject bit in NotifyMask)&lt;br /&gt;
* PhysicsComponent (dynamic)&lt;br /&gt;
* DistractionObjectComponent&lt;br /&gt;
* GenerateSoundOnEventComponent &lt;br /&gt;
* SoundGeneratorComponent&lt;br /&gt;
&lt;br /&gt;
By default the AI will try to ignore any sounds and movements these objects cause if they were moved by another guard.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found here: [[AI detection for moving dynamic objects]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Shadwen Editor Tutorial|Shadwen Editor Tutorial Main Page]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[shadwen_items|-&amp;gt; Next tutorial (Items)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[shadwen_rope_targets|&amp;lt;- Previous tutorial (Rope Targets)]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnteroFB</name></author>
	</entry>
</feed>