Final updates

This commit is contained in:
FlightControl
2017-01-17 12:19:35 +01:00
parent b9c85d4cb7
commit 1206c51fe1
110 changed files with 13026 additions and 336 deletions

View File

@@ -70,23 +70,22 @@
<div id="content">
<h1>Module <code>AI_Balancer</code></h1>
<p>Single-Player:Yes / Mulit-Player:Yes / AI:Yes / Human:No / Types:All -- AI Balancing will replace in multi player missions
<p>Single-Player:<strong>No</strong> / Mulit-Player:<strong>Yes</strong> / AI:<strong>Yes</strong> / Human:<strong>No</strong> / Types:<strong>All</strong> -- <strong>AI Balancing will replace in multi player missions
non-occupied human slots with AI groups, in order to provide an engaging simulation environment,
even when there are hardly any players in the mission.</p>
even when there are hardly any players in the mission.</strong></p>
<p><img src="..\Presentations\AI_Balancer\Dia1.JPG" alt="Banner Image"/></p>
<p>Examples can be found in the test missions.</p>
<hr/>
<h1>1) <a href="AI.AI_Balancer.html##(AI_BALANCER)">AI.AI<em>Balancer#AI</em>BALANCER</a> class, extends <a href="Core.Fsm.html##(FSM_SET)">Core.Fsm#FSM_SET</a></h1>
<p>The <a href="AI.AI_Balancer.html##(AI_BALANCER)">AI.AI<em>Balancer#AI</em>BALANCER</a> class monitors and manages as many replacement AI groups as there are
CLIENTS in a SET<em>CLIENT collection, which are not occupied by human players.
In other words, use AI</em>BALANCER to simulate human behaviour by spawning in replacement AI in multi player missions.</p>
CLIENTS in a SET_CLIENT collection, which are not occupied by human players.</p>
<p>In other words, use AI_BALANCER to simulate human behaviour by spawning in replacement AI in multi player missions.</p>
<p>The parent class <a href="Core.Fsm.html##(FSM_SET)">Core.Fsm#FSM_SET</a> manages the functionality to control the Finite State Machine (FSM).
The mission designer can tailor the behaviour of the AI_BALANCER, by defining event and state transition methods.
@@ -157,6 +156,8 @@ otherwise the AI</em>BALANCER will trigger a <strong>Destroy</strong> event, and
<p>Hereby the change log:</p>
<p>2017-01-17: There is still a problem with AI being destroyed, but not respawned. Need to check further upon that.</p>
<p>2017-01-08: AI_BALANCER:<strong>InitSpawnInterval( Earliest, Latest )</strong> added.</p>
<hr/>
@@ -166,8 +167,8 @@ otherwise the AI</em>BALANCER will trigger a <strong>Destroy</strong> event, and
<h3>Contributions:</h3>
<ul>
<li><p><strong><a href="https://forums.eagle.ru/member.php?u=112075">Dutch_Baron</a></strong>: Working together with James has resulted in the creation of the AI_BALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</p></li>
<li><p><strong>SNAFU</strong>: Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. None of the script code has been used however within the new AI_BALANCER moose class.</p></li>
<li><strong><a href="https://forums.eagle.ru/member.php?u=112075">Dutch_Baron</a></strong>: Working together with James has resulted in the creation of the AI_BALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</li>
<li><strong>SNAFU</strong>: Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. None of the script code has been used however within the new AI_BALANCER moose class.</li>
</ul>
<h3>Authors:</h3>

View File

@@ -74,9 +74,6 @@
<p><img src="..\Presentations\AI_Cap\Dia1.JPG" alt="Banner Image"/></p>
<p>Examples can be found in the test missions.</p>
<hr/>
@@ -85,6 +82,8 @@
<p>The <a href="##(AI_CAP_ZONE)">#AI<em>CAP</em>ZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>
and automatically engage any airborne enemies that are within a certain range or within a certain zone.</p>
<p><img src="..\Presentations\AI_Cap\Dia3.JPG" alt="Process"/></p>
<p>The AI<em>CAP</em>ZONE is assigned a @(Group) and this must be done before the AI<em>CAP</em>ZONE process can be started using the <strong>Start</strong> event.</p>

View File

@@ -74,9 +74,6 @@
<p><img src="..\Presentations\AI_Cas\Dia1.JPG" alt="Banner Image"/></p>
<p>Examples can be found in the test missions.</p>
<hr/>
@@ -84,7 +81,9 @@
<p><a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> derives from the <a href="AI.AI_Patrol.html##(AI_PATROL_ZONE)">AI.AI<em>Patrol#AI</em>PATROL_ZONE</a>, inheriting its methods and behaviour.</p>
<p>The <a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> class implements the core functions to provide Close Air Support in an Engage <a href="Zone.html">Zone</a> by an AIR <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>.
<p>
The <a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> class implements the core functions to provide Close Air Support in an Engage <a href="Zone.html">Zone</a> by an AIR <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>.
The AI<em>CAS</em>ZONE runs a process. It holds an AI in a Patrol Zone and when the AI is commanded to engage, it will fly to an Engage Zone.</p>
<p><img src="..\Presentations\AI_Cas\Dia3.JPG" alt="HoldAndEngage"/></p>

View File

@@ -74,9 +74,6 @@
<p><img src="..\Presentations\AI_Patrol\Dia1.JPG" alt="Banner Image"/></p>
<p>Examples can be found in the test missions.</p>
<hr/>
@@ -84,6 +81,8 @@
<p>The <a href="##(AI_PATROL_ZONE)">#AI<em>PATROL</em>ZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>.</p>
<p><img src="..\Presentations\AI_Patrol\Dia3.JPG" alt="Process"/></p>
<p>The AI<em>PATROL</em>ZONE is assigned a @(Group) and this must be done before the AI<em>PATROL</em>ZONE process can be started using the <strong>Start</strong> event.</p>
@@ -192,6 +191,17 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI<em>PATROL</em>ZONE.M
<hr/>
<h1><strong>OPEN ISSUES</strong></h1>
<p>2017-01-17: When Spawned AI is located at an airbase, it will be routed first back to the airbase after take-off.</p>
<p>2016-01-17:
-- Fixed problem with AI returning to base too early and unexpected.
-- ReSpawning of AI will reset the AI_PATROL and derived classes.
-- Checked the correct workings of SCHEDULER, and it DOES work correctly.</p>
<hr/>
<h1><strong>API CHANGE HISTORY</strong></h1>
<p>The underlying change log documents the API changes. Please read this carefully. The following notation is used:</p>
@@ -203,7 +213,9 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI<em>PATROL</em>ZONE.M
<p>Hereby the change log:</p>
<p>2016-01-15: Complete revision. AI<em>PATROL</em>ZONE is the base class for other AI_PATROL like classes.</p>
<p>2017-01-17: Rename of class: <strong>AI_PATROL_ZONE</strong> is the new name for the old <em>AI_PATROLZONE</em>.</p>
<p>2017-01-15: Complete revision. AI<em>PATROL</em>ZONE is the base class for other AI_PATROL like classes.</p>
<p>2016-09-01: Initial class and API.</p>
@@ -231,12 +243,6 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI<em>PATROL</em>ZONE.M
<td class="name" nowrap="nowrap"><a href="#AI_PATROL_ZONE">AI_PATROL_ZONE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_NewPatrolRoute">_NewPatrolRoute(AIControllable)</a></td>
<td class="summary">
</td>
</tr>
</table>
@@ -540,6 +546,12 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI<em>PATROL</em>ZONE.M
<td class="name" nowrap="nowrap"><a href="##(AI_PATROL_ZONE).Status">AI_PATROL_ZONE:Status()</a></td>
<td class="summary">
<p>Synchronous Event Trigger for Event Status.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROL_ZONE)._NewPatrolRoute">AI_PATROL_ZONE._NewPatrolRoute(AIControllable, self)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -635,27 +647,6 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI<em>PATROL</em>ZONE.M
</dd>
</dl>
<dl class="function">
<dt>
<a id="_NewPatrolRoute" >
<strong>_NewPatrolRoute(AIControllable)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> AIControllable </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<h2><a id="#(AI_Patrol)" >Type <code>AI_Patrol</code></a></h2>
@@ -2001,6 +1992,34 @@ self</p>
<dl class="function">
<dt>
<a id="#(AI_PATROL_ZONE)._NewPatrolRoute" >
<strong>AI_PATROL_ZONE._NewPatrolRoute(AIControllable, self)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> AIControllable </em></code>:
This statis method is called from the route path within the last task at the last waaypoint of the Controllable.
Note that this method is required, as triggers the next route when patrolling for the Controllable.</p>
</li>
<li>
<p><code><em> self </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_PATROL_ZONE).__Detect" >
<strong>AI_PATROL_ZONE:__Detect(Delay)</strong>
</a>

View File

@@ -428,6 +428,12 @@ Use the following Zone validation methods on the group:</p>
<td class="name" nowrap="nowrap"><a href="##(GROUP).GroupName">GROUP.GroupName</a></td>
<td class="summary">
<p>The name of the group.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).InAir">GROUP:InAir()</a></td>
<td class="summary">
<p>Returns true if the first unit of the GROUP is in the air.</p>
</td>
</tr>
<tr>
@@ -482,6 +488,12 @@ Use the following Zone validation methods on the group:</p>
<td class="name" nowrap="nowrap"><a href="##(GROUP).IsShip">GROUP:IsShip()</a></td>
<td class="summary">
<p>Returns if the DCS Group contains Ships.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).OnReSpawn">GROUP:OnReSpawn(ReSpawnFunction)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -1166,6 +1178,34 @@ Current Vec3 of the first DCS Unit of the GROUP.</p>
<dl class="function">
<dt>
<a id="#(GROUP).InAir" >
<strong>GROUP:InAir()</strong>
</a>
</dt>
<dd>
<p>Returns true if the first unit of the GROUP is in the air.</p>
<h3>Return values</h3>
<ol>
<li>
<p><em>#boolean:</em>
true if in the first unit of the group is in the air.</p>
</li>
<li>
<p><em>#nil:</em>
The GROUP is not existing or not alive. </p>
</li>
</ol>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).IsAir" >
<strong>GROUP:IsAir()</strong>
</a>
@@ -1361,6 +1401,27 @@ true if DCS Group contains Ships.</p>
<dl class="function">
<dt>
<a id="#(GROUP).OnReSpawn" >
<strong>GROUP:OnReSpawn(ReSpawnFunction)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> ReSpawnFunction </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).Register" >
<strong>GROUP:Register(GroupName)</strong>
</a>

View File

@@ -543,6 +543,12 @@ In order to keep the credibility of the the author, I want to emphasize that the
<h2><a id="#(POINT_VEC3.RoutePointAction)">Type <code>POINT_VEC3.RoutePointAction</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.RoutePointAction).FromParkingArea">POINT_VEC3.RoutePointAction.FromParkingArea</a></td>
<td class="summary">
<p>"From Parking Area"</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.RoutePointAction).TurningPoint">POINT_VEC3.RoutePointAction.TurningPoint</a></td>
<td class="summary">
<p>"Turning Point"</p>
@@ -563,6 +569,12 @@ In order to keep the credibility of the the author, I want to emphasize that the
<h2><a id="#(POINT_VEC3.RoutePointType)">Type <code>POINT_VEC3.RoutePointType</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.RoutePointType).TakeOffParking">POINT_VEC3.RoutePointType.TakeOffParking</a></td>
<td class="summary">
<p>"TakeOffParking"</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POINT_VEC3.RoutePointType).TurningPoint">POINT_VEC3.RoutePointType.TurningPoint</a></td>
<td class="summary">
<p>"Turning Point"</p>
@@ -2099,6 +2111,19 @@ The new calculated POINT_VEC3.</p>
<dl class="function">
<dt>
<a id="#(POINT_VEC3.RoutePointAction).FromParkingArea" >
<strong>POINT_VEC3.RoutePointAction.FromParkingArea</strong>
</a>
</dt>
<dd>
<p>"From Parking Area"</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POINT_VEC3.RoutePointAction).TurningPoint" >
<strong>POINT_VEC3.RoutePointAction.TurningPoint</strong>
</a>
@@ -2137,6 +2162,19 @@ The new calculated POINT_VEC3.</p>
<dl class="function">
<dt>
<a id="#(POINT_VEC3.RoutePointType).TakeOffParking" >
<strong>POINT_VEC3.RoutePointType.TakeOffParking</strong>
</a>
</dt>
<dd>
<p>"TakeOffParking"</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(POINT_VEC3.RoutePointType).TurningPoint" >
<strong>POINT_VEC3.RoutePointType.TurningPoint</strong>
</a>

View File

@@ -645,6 +645,9 @@ The POSITIONABLE is not existing or alive. </p>
<p>Returns true if the POSITIONABLE is in the air.</p>
<p>Polymorphic, is overridden in GROUP and UNIT.</p>
<h3>Return values</h3>
<ol>
<li>

View File

@@ -300,6 +300,12 @@ If you want to obtain the complete <strong>3D position</strong> including ori<72>
<td class="name" nowrap="nowrap"><a href="##(UNIT).HasSensors">UNIT:HasSensors(...)</a></td>
<td class="summary">
<p>Returns if the unit has sensors of a certain type.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(UNIT).InAir">UNIT:InAir()</a></td>
<td class="summary">
<p>Returns true if the UNIT is in the air.</p>
</td>
</tr>
<tr>
@@ -1086,6 +1092,34 @@ The DCS Unit is not existing or alive. </p>
<dl class="function">
<dt>
<a id="#(UNIT).InAir" >
<strong>UNIT:InAir()</strong>
</a>
</dt>
<dd>
<p>Returns true if the UNIT is in the air.</p>
<h3>Return values</h3>
<ol>
<li>
<p><em>#boolean:</em>
true if in the air.</p>
</li>
<li>
<p><em>#nil:</em>
The UNIT is not existing or alive. </p>
</li>
</ol>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(UNIT).IsActive" >
<strong>UNIT:IsActive()</strong>
</a>

View File

@@ -73,9 +73,19 @@
<tr>
<td class="name" nowrap="nowrap"><a href="AI_Balancer.html">AI_Balancer</a></td>
<td class="summary">
<p>Single-Player:Yes / Mulit-Player:Yes / AI:Yes / Human:No / Types:All -- AI Balancing will replace in multi player missions
<p>Single-Player:<strong>No</strong> / Mulit-Player:<strong>Yes</strong> / AI:<strong>Yes</strong> / Human:<strong>No</strong> / Types:<strong>All</strong> -- <strong>AI Balancing will replace in multi player missions
non-occupied human slots with AI groups, in order to provide an engaging simulation environment,
even when there are hardly any players in the mission.</p>
even when there are hardly any players in the mission.</strong></p>
<p><img src="..\Presentations\AI_Balancer\Dia1.JPG" alt="Banner Image"/></p>
<hr/>
<h1>1) <a href="AI.AI_Balancer.html##(AI_BALANCER)">AI.AI<em>Balancer#AI</em>BALANCER</a> class, extends <a href="Core.Fsm.html##(FSM_SET)">Core.Fsm#FSM_SET</a></h1>
<p>The <a href="AI.AI_Balancer.html##(AI_BALANCER)">AI.AI<em>Balancer#AI</em>BALANCER</a> class monitors and manages as many replacement AI groups as there are
CLIENTS in a SET_CLIENT collection, which are not occupied by human players.</p>
</td>
</tr>
<tr>
@@ -85,7 +95,13 @@ even when there are hardly any players in the mission.</p>
<p><img src="..\Presentations\AI_Cap\Dia1.JPG" alt="Banner Image"/></p>
<p>Examples can be found in the test missions.</p>
<hr/>
<h1>1) <a href="##(AI_CAP_ZONE)">#AI<em>CAP</em>ZONE</a> class, extends <a href="AI.AI_Cap.html##(AI_PATROL_ZONE)">AI.AI<em>Cap#AI</em>PATROL_ZONE</a></h1>
<p>The <a href="##(AI_CAP_ZONE)">#AI<em>CAP</em>ZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>
and automatically engage any airborne enemies that are within a certain range or within a certain zone.</p>
</td>
</tr>
<tr>
@@ -95,7 +111,12 @@ even when there are hardly any players in the mission.</p>
<p><img src="..\Presentations\AI_Cas\Dia1.JPG" alt="Banner Image"/></p>
<p>Examples can be found in the test missions.</p>
<hr/>
<h1>1) <a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> class, extends <a href="AI.AI_Patrol.html##(AI_PATROL_ZONE)">AI.AI<em>Patrol#AI</em>PATROL_ZONE</a></h1>
<p><a href="##(AI_CAS_ZONE)">#AI<em>CAS</em>ZONE</a> derives from the <a href="AI.AI_Patrol.html##(AI_PATROL_ZONE)">AI.AI<em>Patrol#AI</em>PATROL_ZONE</a>, inheriting its methods and behaviour.</p>
</td>
</tr>
<tr>
@@ -105,7 +126,12 @@ even when there are hardly any players in the mission.</p>
<p><img src="..\Presentations\AI_Patrol\Dia1.JPG" alt="Banner Image"/></p>
<p>Examples can be found in the test missions.</p>
<hr/>
<h1>1) <a href="##(AI_PATROL_ZONE)">#AI<em>PATROL</em>ZONE</a> class, extends <a href="Core.Fsm.html##(FSM_CONTROLLABLE)">Core.Fsm#FSM_CONTROLLABLE</a></h1>
<p>The <a href="##(AI_PATROL_ZONE)">#AI<em>PATROL</em>ZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AI <a href="Controllable.html">Controllable</a> or <a href="Group.html">Group</a>.</p>
</td>
</tr>
<tr>