|
|
|
|
@@ -120,6 +120,152 @@
|
|
|
|
|
|
|
|
|
|
<hr/>
|
|
|
|
|
|
|
|
|
|
<h1>QUICK START GUIDE</h1>
|
|
|
|
|
|
|
|
|
|
<p>There are basically two classes available to model an A2A defense system.</p>
|
|
|
|
|
|
|
|
|
|
<p>AI_A2A_DISPATCHER is the main A2A defense class that models the A2A defense system.
|
|
|
|
|
AI_A2A_GCICAP derives or inherits from AI_A2A_DISPATCHER and is a more <strong>noob</strong> user friendly class, but is less flexible.</p>
|
|
|
|
|
|
|
|
|
|
<p>Before you start using the AI_A2A_DISPATCHER or AI_A2A_GCICAP ask youself the following questions:</p>
|
|
|
|
|
|
|
|
|
|
<h2>0. Do I need AI_A2A_DISPATCHER or do I need AI_A2A_GCICAP?</h2>
|
|
|
|
|
|
|
|
|
|
<p>AI_A2A_GCICAP, automates a lot of the below questions using the mission editor and requires minimal lua scripting.
|
|
|
|
|
But the AI_A2A_GCICAP provides less flexibility and a lot of options are defaulted.
|
|
|
|
|
With AI_A2A_DISPATCHER you can setup a much more <strong>fine grained</strong> A2A defense mechanism, but some more (easy) lua scripting is required.</p>
|
|
|
|
|
|
|
|
|
|
<h2>1. Which Coalition am I modeling an A2A defense system for? blue or red?</h2>
|
|
|
|
|
|
|
|
|
|
<p>One AI_A2A_DISPATCHER object can create a defense system for <strong>one coalition</strong>, which is blue or red.
|
|
|
|
|
If you want to create a <strong>mutual defense system</strong>, for both blue and red, then you need to create <strong>two</strong> AI_A2A_DISPATCHER <strong>objects</strong>,
|
|
|
|
|
each governing their defense system.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>2. Which type of EWR will I setup? Grouping based per AREA, per TYPE or per UNIT? (Later others will follow).</h2>
|
|
|
|
|
|
|
|
|
|
<p>The MOOSE framework leverages the <a href="Detection.html">Detection</a> classes to perform the EWR detection.
|
|
|
|
|
Several types of <a href="Detection.html">Detection</a> classes exist, and the most common characteristics of these classes is that they:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li>Perform detections from multiple FACs as one co-operating entity.</li>
|
|
|
|
|
<li>Communicate with a Head Quarters, which consolidates each detection.</li>
|
|
|
|
|
<li>Groups detections based on a method (per area, per type or per unit).</li>
|
|
|
|
|
<li>Communicates detections.</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h2>3. Which EWR units will be used as part of the detection system? Only Ground or also Airborne?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Typically EWR networks are setup using 55G6 EWR, 1L13 EWR, Hawk sr and Patriot str ground based radar units.
|
|
|
|
|
These radars have different ranges and 55G6 EWR and 1L13 EWR radars are Eastern Bloc units (eg Russia, Ukraine, Georgia) while the Hawk and Patriot radars are Western (eg US).
|
|
|
|
|
Additionally, ANY other radar capable unit can be part of the EWR network! Also AWACS airborne units, planes, helicopters can help to detect targets, as long as they have radar.
|
|
|
|
|
The position of these units is very important as they need to provide enough coverage
|
|
|
|
|
to pick up enemy aircraft as they approach so that CAP and GCI flights can be tasked to intercept them.</p>
|
|
|
|
|
|
|
|
|
|
<h2>4. Is a border required?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Is this a cold car or a hot war situation? In case of a cold war situation, a border can be set that will only trigger defenses
|
|
|
|
|
if the border is crossed by enemy units.</p>
|
|
|
|
|
|
|
|
|
|
<h2>5. What maximum range needs to be checked to allow defenses to engage any attacker?</h2>
|
|
|
|
|
|
|
|
|
|
<p>A good functioning defense will have a "maximum range" evaluated to the enemy when CAP will be engaged or GCI will be spawned.</p>
|
|
|
|
|
|
|
|
|
|
<h2>6. Which Airbases, Carrier Ships, Farps will take part in the defense system for the Coalition?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Carefully plan which airbases will take part in the coalition. Color each airbase in the color of the coalition.</p>
|
|
|
|
|
|
|
|
|
|
<h2>7. Which Squadrons will I create and which name will I give each Squadron?</h2>
|
|
|
|
|
|
|
|
|
|
<p>The defense system works with Squadrons. Each Squadron must be given a unique name, that forms the <strong>key</strong> to the defense system.
|
|
|
|
|
Several options and activities can be set per Squadron.</p>
|
|
|
|
|
|
|
|
|
|
<h2>8. Where will the Squadrons be located? On Airbases? On Carrier Ships? On Farps?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Squadrons are placed as the "home base" on an airfield, carrier or farp.
|
|
|
|
|
Carefully plan where each Squadron will be located as part of the defense system.</p>
|
|
|
|
|
|
|
|
|
|
<h2>9. Which plane models will I assign for each Squadron? Do I need one plane model or more plane models per squadron?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Per Squadron, one or multiple plane models can be allocated as <strong>Templates</strong>.
|
|
|
|
|
These are late activated groups with one airplane or helicopter that start with a specific name, called the <strong>template prefix</strong>.
|
|
|
|
|
The A2A defense system will select from the given templates a random template to spawn a new plane (group).</p>
|
|
|
|
|
|
|
|
|
|
<h2>10. Which payloads, skills and skins will these plane models have?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Per Squadron, even if you have one plane model, you can still allocate multiple templates of one plane model,
|
|
|
|
|
each having different payloads, skills and skins.
|
|
|
|
|
The A2A defense system will select from the given templates a random template to spawn a new plane (group).</p>
|
|
|
|
|
|
|
|
|
|
<h2>11. For each Squadron, which will perform CAP?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Per Squadron, evaluate which Squadrons will perform CAP.
|
|
|
|
|
Not all Squadrons need to perform CAP.</p>
|
|
|
|
|
|
|
|
|
|
<h2>12. For each Squadron doing CAP, in which ZONE(s) will the CAP be performed?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Per CAP, evaluate <strong>where</strong> the CAP will be performed, in other words, define the <strong>zone</strong>.
|
|
|
|
|
Near the border or a bit further away?</p>
|
|
|
|
|
|
|
|
|
|
<h2>13. For each Squadron doing CAP, which zone types will I create?</h2>
|
|
|
|
|
|
|
|
|
|
<p>Per CAP zone, evaluate whether you want:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li>simple trigger zones</li>
|
|
|
|
|
<li>polygon zones</li>
|
|
|
|
|
<li>moving zones</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<p>Depending on the type of zone selected, a different <a href="Zone.html">Zone</a> object needs to be created from a ZONE_ class.</p>
|
|
|
|
|
|
|
|
|
|
<h2>14. For each Squadron doing CAP, what are the time intervals and CAP amounts to be performed?</h2>
|
|
|
|
|
|
|
|
|
|
<p>For each CAP:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li><strong>How many</strong> CAP you want to have airborne at the same time?</li>
|
|
|
|
|
<li><strong>How frequent</strong> you want the defense mechanism to check whether to start a new CAP?</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h2>15. For each Squadron, which will perform GCI?</h2>
|
|
|
|
|
|
|
|
|
|
<p>For each Squadron, evaluate which Squadrons will perform GCI?
|
|
|
|
|
Not all Squadrons need to perform GCI.</p>
|
|
|
|
|
|
|
|
|
|
<h2>16. For each Squadron, which takeoff method will I use?</h2>
|
|
|
|
|
|
|
|
|
|
<p>For each Squadron, evaluate which takeoff method will be used:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li>Straight from the air (default)</li>
|
|
|
|
|
<li>From the runway</li>
|
|
|
|
|
<li>From a parking spot with running engines</li>
|
|
|
|
|
<li>From a parking spot with cold engines</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h2>17. For each Squadron, which landing method will I use?</h2>
|
|
|
|
|
|
|
|
|
|
<p>For each Squadron, evaluate which landing method will be used:</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li>Near the airbase when returning (default)</li>
|
|
|
|
|
<li>After landing on the runway</li>
|
|
|
|
|
<li>After engine shutdown after landing</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h2>18. For each Squadron, which overhead will I use?</h2>
|
|
|
|
|
|
|
|
|
|
<p>For each Squadron, depending on the airplane type (modern, old) and payload, which overhead is required to provide any defense?
|
|
|
|
|
In other words, if <strong>X</strong> attacker airplanes are detected, how many <strong>Y</strong> defense airplanes need to be spawned per squadron?
|
|
|
|
|
The <strong>Y</strong> is dependent on the type of airplane (era), payload, fuel levels, skills etc.
|
|
|
|
|
The overhead is a <strong>factor</strong> that will calculate dynamically how many <strong>Y</strong> defenses will be required based on <strong>X</strong> attackers detected.</p>
|
|
|
|
|
|
|
|
|
|
<h2>19. For each Squadron, which grouping will I use?</h2>
|
|
|
|
|
|
|
|
|
|
<p>When multiple targets are detected, how will defense airplanes be grouped when multiple defense airplanes are spawned for multiple attackers?
|
|
|
|
|
Per one, two, three, four?</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Global(s)</h2>
|
|
|
|
|
<table class="function_list">
|
|
|
|
|
@@ -653,7 +799,7 @@
|
|
|
|
|
|
|
|
|
|
<hr/>
|
|
|
|
|
|
|
|
|
|
<h1>Demo Mission</h1>
|
|
|
|
|
<h1>Demo Missions</h1>
|
|
|
|
|
|
|
|
|
|
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/release-2-2-pre/AID%20-%20AI%20Dispatching/AID-100%20-%20AI_A2A%20-%20Demonstration">AI_A2A_DISPATCHER Demo Mission</a></h3>
|
|
|
|
|
|
|
|
|
|
@@ -680,6 +826,10 @@ In short it is a plug in very flexible and configurable air defence module for D
|
|
|
|
|
<p>Note that in order to create a two way A2A defense system, two AI_A2A_DISPATCHER defense system may need to be created, for each coalition one.
|
|
|
|
|
This is a good implementation, because maybe in the future, more coalitions may become available in DCS world.</p>
|
|
|
|
|
|
|
|
|
|
<hr/>
|
|
|
|
|
|
|
|
|
|
<h1>USAGE GUIDE</h1>
|
|
|
|
|
|
|
|
|
|
<h2>1. AI_A2A_DISPATCHER constructor:</h2>
|
|
|
|
|
|
|
|
|
|
<p>The <a href="##(AI_A2A_DISPATCHER).New">AI<em>A2A</em>DISPATCHER.New</a>() method creates a new AI_A2A_DISPATCHER instance.</p>
|
|
|
|
|
@@ -725,12 +875,19 @@ Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
|
|
|
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
|
|
|
|
</code></pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>The above example creates a SET_GROUP instance, and stores this in the variable (object) <strong>DetectionSetGroup</strong>.
|
|
|
|
|
<strong>DetectionSetGroup</strong> is then being configured to filter all active groups with a group name starting with <strong>DF CCCP AWACS</strong> or <strong>DF CCCP EWR</strong> to be included in the Set.
|
|
|
|
|
<strong>DetectionSetGroup</strong> is then being ordered to start the dynamic filtering. Note that any destroy or new spawn of a group with the above names will be removed or added to the Set.
|
|
|
|
|
Then a new Detection object is created from the class DETECTION_AREAS. A grouping radius of 30000 is choosen, which is 30km.
|
|
|
|
|
The <strong>Detection</strong> object is then passed to the <a href="##(AI_A2A_DISPATCHER).New">AI<em>A2A</em>DISPATCHER.New</a>() method to indicate the EWR network configuration and setup the A2A defense detection mechanism.</p>
|
|
|
|
|
|
|
|
|
|
<p>You could build a <strong>mutual defense system</strong> like this:</p>
|
|
|
|
|
|
|
|
|
|
<pre><code> A2ADispatcher_Red = AI_A2A_DISPATCHER:New( EWR_Red )
|
|
|
|
|
A2ADispatcher_Blue = AI_A2A_DISPATCHER:New( EWR_Blue )
|
|
|
|
|
</code></pre>
|
|
|
|
|
|
|
|
|
|
<h3>2. Define the detected <strong>target grouping radius</strong>:</h3>
|
|
|
|
|
|
|
|
|
|
<p>The target grouping radius is a property of the Detection object, that was passed to the AI_A2A_DISPATCHER object, but can be changed.
|
|
|
|
|
@@ -2943,10 +3100,13 @@ The airbase name where you want to have the squadron located.
|
|
|
|
|
You need to specify here EXACTLY the name of the airbase as you see it in the mission editor.
|
|
|
|
|
Examples are <code>"Batumi"</code> or <code>"Tbilisi-Lochini"</code>.
|
|
|
|
|
EXACTLY the airbase name, between quotes <code>""</code>.
|
|
|
|
|
To ease the airbase naming when using the LDT editor and IntelliSense, the <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a> class contains enumerations of the airbases of each map.
|
|
|
|
|
* Caucasus: <a href="Airbase.html##(AIRBASE).Caucaus">Airbase#AIRBASE.Caucaus</a>
|
|
|
|
|
* Nevada or NTTR: <a href="Airbase.html##(AIRBASE).Nevada">Airbase#AIRBASE.Nevada</a>
|
|
|
|
|
* Normandy: <a href="Airbase.html##(AIRBASE).Normandy">Airbase#AIRBASE.Normandy</a></p>
|
|
|
|
|
To ease the airbase naming when using the LDT editor and IntelliSense, the <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a> class contains enumerations of the airbases of each map.</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li>Caucasus: <a href="Airbase.html##(AIRBASE).Caucaus">Airbase#AIRBASE.Caucaus</a></li>
|
|
|
|
|
<li>Nevada or NTTR: <a href="Airbase.html##(AIRBASE).Nevada">Airbase#AIRBASE.Nevada</a></li>
|
|
|
|
|
<li>Normandy: <a href="Airbase.html##(AIRBASE).Normandy">Airbase#AIRBASE.Normandy</a></li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
@@ -2975,26 +3135,18 @@ A number that specifies how many resources are in stock of the squadron. It is s
|
|
|
|
|
|
|
|
|
|
<h3>Usages:</h3>
|
|
|
|
|
<ul>
|
|
|
|
|
<li><pre class="example"><code>
|
|
|
|
|
-- Now Setup the A2A dispatcher, and initialize it using the Detection object.
|
|
|
|
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
|
|
|
|
</code></pre></li>
|
|
|
|
|
<li><pre class="example"><code>
|
|
|
|
|
-- This will create squadron "Squadron1" at "Batumi" airbase, and will use plane types "SQ1" and has 40 planes in stock...
|
|
|
|
|
A2ADispatcher:SetSquadron( "Squadron1", "Batumi", "SQ1", 40 )
|
|
|
|
|
</code></pre></li>
|
|
|
|
|
<li><pre class="example"><code>
|
|
|
|
|
-- This will create squadron "Sq 1" at "Batumi" airbase, and will use plane types "Mig-29" and "Su-27" and has 20 planes in stock...
|
|
|
|
|
<li><pre class="example"><code> -- Now Setup the A2A dispatcher, and initialize it using the Detection object.
|
|
|
|
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection ) </code></pre></li>
|
|
|
|
|
<li><pre class="example"><code> -- This will create squadron "Squadron1" at "Batumi" airbase, and will use plane types "SQ1" and has 40 planes in stock...
|
|
|
|
|
A2ADispatcher:SetSquadron( "Squadron1", "Batumi", "SQ1", 40 )</code></pre></li>
|
|
|
|
|
<li><pre class="example"><code> -- This will create squadron "Sq 1" at "Batumi" airbase, and will use plane types "Mig-29" and "Su-27" and has 20 planes in stock...
|
|
|
|
|
-- Note that in this implementation, the A2A dispatcher will select a random plane when a new plane (group) needs to be spawned for defenses.
|
|
|
|
|
-- Note the usage of the {} for the airplane templates list.
|
|
|
|
|
A2ADispatcher:SetSquadron( "Sq 1", "Batumi", { "Mig-29", "Su-27" }, 40 )
|
|
|
|
|
</code></pre></li>
|
|
|
|
|
<li><pre class="example"><code>
|
|
|
|
|
-- This will create 2 squadrons "104th" and "23th" at "Batumi" airbase, and will use plane types "Mig-29" and "Su-27" respectively and each squadron has 10 planes in stock...
|
|
|
|
|
A2ADispatcher:SetSquadron( "Sq 1", "Batumi", { "Mig-29", "Su-27" }, 40 )</code></pre></li>
|
|
|
|
|
<li><pre class="example"><code> -- This will create 2 squadrons "104th" and "23th" at "Batumi" airbase, and will use plane types "Mig-29" and "Su-27" respectively and each squadron has 10 planes in stock...
|
|
|
|
|
-- Note that in this implementation, the A2A dispatcher will select a random plane when a new plane (group) needs to be spawned for defenses.
|
|
|
|
|
A2ADispatcher:SetSquadron( "104th", "Batumi", "Mig-29", 40 )
|
|
|
|
|
A2ADispatcher:SetSquadron( "23th", "Batumi", "Su-27", 40 )
|
|
|
|
|
</code></pre></li>
|
|
|
|
|
A2ADispatcher:SetSquadron( "104th", "Batumi", "Mig-29", 10 )
|
|
|
|
|
A2ADispatcher:SetSquadron( "23th", "Batumi", "Su-27", 10 )</code></pre></li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
</dd>
|
|
|
|
|
|