TASK_A2A_DISPATCHER documentation

This commit is contained in:
FlightControl 2017-06-22 22:13:31 +02:00
parent 706a0949ee
commit a31abef3cf
23 changed files with 331 additions and 88 deletions

View File

@ -41,9 +41,6 @@ do -- AI_A2A_DISPATCHER
-- ## 1. AI\_A2A\_DISPATCHER constructor:
--
-- The @{#AI_A2A_DISPATCHER.New}() method creates a new AI\_A2A\_DISPATCHER instance.
-- There are two parameters required, a @{Set#SET_GROUP} that defines the Groups of the EWR network, and a radius in meters, that will be used to group the detected targets.
--
-- The @{#AI_A2A_DISPATCHER.New}() method is used to setup the EWR network and to define the grouping.
--
-- ### 1.1. Define the **EWR network**:
--
@ -67,7 +64,7 @@ do -- AI_A2A_DISPATCHER
-- therefore less CAP and GCI flights will spawn and this will tend to make just the border area active rather than a melee over the whole map.
-- It all depends on what the desired effect is.
--
-- EWR networks are **dynamically constructed**, that is, they form part of the @{Set#SET_GROUP} object that is given as the input parameter of the AI\_A2A\_DISPATCHER class.
-- EWR networks are **dynamically constructed**, that is, they form part of the @{Functional#DETECTION_BASE} object that is given as the input parameter of the AI\_A2A\_DISPATCHER class.
-- By defining in a **smart way the names or name prefixes of the groups** with EWR capable units, these groups will be **automatically added or deleted** from the EWR network,
-- increasing or decreasing the radar coverage of the Early Warning System.
--
@ -78,18 +75,22 @@ do -- AI_A2A_DISPATCHER
-- DetectionSetGroup = SET_GROUP:New()
-- DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
-- DetectionSetGroup:FilterStart()
--
-- -- Setup the detection.
-- Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
--
-- -- Setup the A2A dispatcher, and initialize it.
-- A2ADispatcher = AI_A2A_DISPATCHER:New( DetectionSetGroup, 30000 )
-- A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
--
-- The above example creates a SET_GROUP instance, and stores this in the variable (object) **DetectionSetGroup**.
-- **DetectionSetGroup** is then being configured to filter all active groups with a group name starting with **DF CCCP AWACS** or **DF CCCP EWR** to be included in the Set.
-- **DetectionSetGroup** 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.
-- The **DetectionSetGroup** variable is then passed to the @{#AI_A2A_DISPATCHER.New}() method to indicate the EWR network configuration and setup the A2A defense detection mechanism.
-- Then a new Detection object is created from the class DETECTION_AREAS. A grouping radius of 30000 is choosen, which is 30km.
-- The **Detection** object is then passed to the @{#AI_A2A_DISPATCHER.New}() method to indicate the EWR network configuration and setup the A2A defense detection mechanism.
--
-- ### 1.2. Define the detected **target grouping radius**:
-- ### 2. Define the detected **target grouping radius**:
--
-- As a second parameter of the @{#AI_A2A_DISPATCHER.New}() method, 30000 indicates that detected targets need to be grouped within a radius of 30km.
-- The target grouping radius is a property of the Detection object, that was passed to the AI\_A2A\_DISPATCHER object, but can be changed.
-- The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation.
-- Fast planes like in the 80s, need a larger radius than WWII planes.
-- Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.
@ -97,7 +98,7 @@ do -- AI_A2A_DISPATCHER
-- Note that detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate
-- group being detected. This may result in additional GCI being started by the dispatcher! So don't make this value too small!
--
-- ## 2. Set the **engage radius**:
-- ## 3. Set the **Engage radius**:
--
-- Define the radius to engage any target by airborne friendlies, which are executing cap or returning from an intercept mission.
--
@ -112,7 +113,15 @@ do -- AI_A2A_DISPATCHER
-- If too small, more intercept missions may be triggered upon detected target areas.
-- If too large, any airborne cap may not be able to reach the detected target area in time, because it is too far.
--
-- ## 3. Set the **borders**:
-- ## 4. Set the **Intercept radius** or **Gci radius**:
--
-- When targets are detected that are still really far off, you don't want the AI_A2A_DISPATCHER to launch intercepts just yet.
-- You want it to wait until a certain intercept range is reached, which is the distance of the closest airbase to targer being smaller than the **Gci radius**.
-- The Gci radius is by default defined as 200km. This value can be overridden using the method @{#AI_A2A_DISPATCHER.SetGciRadius}().
-- Override the default Gci radius when the era of the warfare is early, or, when you don't want to let the AI_A2A_DISPATCHER react immediately when
-- a certain border or area is not being crossed.
--
-- ## 5. Set the **borders**:
--
-- According to the tactical and strategic design of the mission broadly decide the shape and extent of red and blue territories.
-- They should be laid out such that a border area is created between the two coalitions.
@ -131,7 +140,7 @@ do -- AI_A2A_DISPATCHER
-- it makes it easier sometimes for the mission maker to envisage where the red and blue territories roughly are.
-- In a hot war the borders are effectively defined by the ground based radar coverage of a coalition.
--
-- ## 4. Squadrons:
-- ## 6. Squadrons:
--
-- The AI\_A2A\_DISPATCHER works with **Squadrons**, that need to be defined using the different methods available.
--
@ -157,7 +166,7 @@ do -- AI_A2A_DISPATCHER
-- For performance and bug workaround reasons within DCS, squadrons have different methods to spawn new aircraft or land returning or damaged aircraft.
--
--
-- ### 4.1. Set squadron take-off methods
-- ### 6.1. Set squadron take-off methods
--
-- Use the various SetSquadronTakeoff... methods to control how squadrons are taking-off from the airfield:
--
@ -178,7 +187,7 @@ do -- AI_A2A_DISPATCHER
-- Currently within the DCS engine, the airfield traffic coordination is erroneous and contains a lot of bugs.
-- If you experience while testing problems with aircraft take-off or landing, please use one of the above methods as a solution to workaround these issues!
--
-- ### 4.2. Set squadron landing methods
-- ### 6.2. Set squadron landing methods
--
-- In analogy with takeoff, the landing methods are to control how squadrons land at the airfield:
--
@ -193,7 +202,7 @@ do -- AI_A2A_DISPATCHER
-- Note that the method @{#AI_A2A_DISPATCHER.SetSquadronLandingNearAirbase}() will only work for returning aircraft, not for damaged or out of fuel aircraft.
-- Damaged or out-of-fuel aircraft are returning to the nearest friendly airbase and will land, and are out of control from ground control.
--
-- ### 4.3. Set squadron grouping
-- ### 6.3. Set squadron grouping
--
-- Use the method @{#AI_A2A_DISPATCHER.SetSquadronGrouping}() to set the amount of CAP or GCI flights that will take-off when spawned.
--
@ -206,7 +215,7 @@ do -- AI_A2A_DISPATCHER
--
-- The **grouping value is set for a Squadron**, and can be **dynamically adjusted** during mission execution, so to adjust the defense flights grouping when the tactical situation changes.
--
-- ### 4.4. Balance or setup effectiveness of the air defenses in case of GCI
-- ### 6.4. Balance or setup effectiveness of the air defenses in case of GCI
--
-- The effectiveness can be set with the **overhead parameter**. This is a number that is used to calculate the amount of Units that dispatching command will allocate to GCI in surplus of detected amount of units.
-- The **default value** of the overhead parameter is 1.0, which means **equal balance**.
@ -230,9 +239,9 @@ do -- AI_A2A_DISPATCHER
--
-- The **overhead value is set for a Squadron**, and can be **dynamically adjusted** during mission execution, so to adjust the defense overhead when the tactical situation changes.
--
-- ## 5. Setup a squadron for CAP
-- ## 7. Setup a squadron for CAP
--
-- ### 5.1. Set the CAP zones
-- ### 7.1. Set the CAP zones
--
-- CAP zones are patrol areas where Combat Air Patrol (CAP) flights loiter until they either return to base due to low fuel or are assigned an interception task by ground control.
--
@ -276,7 +285,7 @@ do -- AI_A2A_DISPATCHER
-- Note the different @{Zone} MOOSE classes being used to create zones of different types. Please click the @{Zone} link for more information about the different zone types.
-- Zones can be circles, can be setup in the mission editor using trigger zones, but can also be setup in the mission editor as polygons and in this case GROUP objects are being used!
--
-- ## 5.2. Set the squadron to execute CAP:
-- ## 7.2. Set the squadron to execute CAP:
--
-- The method @{#AI_A2A_DISPATCHER.SetSquadronCap}() defines a CAP execution for a squadron.
--
@ -298,7 +307,7 @@ do -- AI_A2A_DISPATCHER
-- A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
-- A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
--
-- ## 6. Setup a squadron for GCI:
-- ## 8. Setup a squadron for GCI:
--
-- The method @{#AI_A2A_DISPATCHER.SetSquadronGci}() defines a GCI execution for a squadron.
--
@ -315,19 +324,19 @@ do -- AI_A2A_DISPATCHER
--
-- A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )
--
-- ## 7. Other configuration options
-- ## 9. Other configuration options
--
-- ### 7.1. Set a tactical display panel:
-- ### 9.1. Set a tactical display panel:
--
-- Every 30 seconds, a tactical display panel can be shown that illustrates what the status is of the different groups controlled by AI\_A2A\_DISPATCHER.
-- Use the method @{#AI_A2A_DISPATCHER.SetTacticalDisplay}() to switch on the tactical display panel. The default will not show this panel.
-- Note that there may be some performance impact if this panel is shown.
--
-- ## 8. Mission Editor Guide:
-- ## 10. Mission Editor Guide:
--
-- The following steps need to be followed, in order to setup the different borders, templates and groups within the mission editor:
--
-- ### 8.1. Define your EWR network:
-- ### 10.1. Define your EWR network:
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia14.JPG)
--
@ -335,7 +344,7 @@ do -- AI_A2A_DISPATCHER
-- Create the naming of these groups as such, that these can be easily recognized and included as a prefix within your lua MOOSE mission script.
-- These prefixes should be unique, so that accidentally no other groups would be incorporated within the EWR network.
--
-- ### 8.2. Define the border zone:
-- ### 10.2. Define the border zone:
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia15.JPG)
--
@ -345,7 +354,7 @@ do -- AI_A2A_DISPATCHER
-- Place the helicopter where the border zone should start, and draw using the waypoints the polygon zone around the area that is considered the border.
-- The helicopter group name is included as the reference within your lua MOOSE mission script, so ensure that the name is unique and is easily recognizable.
--
-- ### 8.3. Define the plane templates:
-- ### 10.3. Define the plane templates:
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia16.JPG)
--
@ -364,7 +373,7 @@ do -- AI_A2A_DISPATCHER
--
-- Place these airplane templates are good visible locations within your mission, so you can easily retrieve them back.
--
-- ### 8.4. Define the CAP zones:
-- ### 10.4. Define the CAP zones:
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia17.JPG)
--
@ -375,7 +384,7 @@ do -- AI_A2A_DISPATCHER
--
-- Or you can define also zones using trigger zones.
--
-- ### 8.5. "Script it":
-- ### 10.5. "Script it":
--
-- Find the following mission script as an example:
--
@ -455,15 +464,15 @@ do -- AI_A2A_DISPATCHER
-- A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 )
-- A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
--
-- #### 8.5.1. Script the EWR network
-- #### 10.5.1. Script the EWR network
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia20.JPG)
--
-- #### 8.5.2. Script the AI\_A2A\_DISPATCHER object and configure it
-- #### 10.5.2. Script the AI\_A2A\_DISPATCHER object and configure it
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia21.JPG)
--
-- #### 8.5.3. Script the squadrons
-- #### 10.5.3. Script the squadrons
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia22.JPG)
--
@ -498,9 +507,9 @@ do -- AI_A2A_DISPATCHER
--
-- Use the @{#AI_A2A_DISPATCHER.SetSquadronGci)() method to define GCI execution for the squadron.
--
-- ## 9. Q & A:
-- ## 11. Q & A:
--
-- ### 9.1. Which countries will be selected for each coalition?
-- ### 11.1. Which countries will be selected for each coalition?
--
-- Which countries are assigned to a coalition influences which units are available to the coalition.
-- For example because the mission calls for a EWR radar on the blue side the Ukraine might be chosen as a blue country
@ -508,7 +517,7 @@ do -- AI_A2A_DISPATCHER
-- Some countries assign different tasking to aircraft, for example Germany assigns the CAP task to F-4E Phantoms but the USA does not.
-- Therefore if F4s are wanted as a coalitions CAP or GCI aircraft Germany will need to be assigned to that coalition.
--
-- ### 9.2.Country, type, load out, skill and skins for CAP and GCI aircraft?
-- ### 11.2. Country, type, load out, skill and skins for CAP and GCI aircraft?
--
-- * Note these can be from any countries within the coalition but must be an aircraft with one of the main tasks being “CAP”.
-- * Obviously skins which are selected must be available to all players that join the mission otherwise they will see a default skin.

View File

@ -18,19 +18,116 @@ do -- TASK_A2A_DISPATCHER
--- # TASK_A2A_DISPATCHER class, extends @{Tasking#DETECTION_MANAGER}
--
-- ![Banner Image](..\Presentations\TASK_A2A_DISPATCHER\Dia1.JPG)
--
-- The @{#TASK_A2A_DISPATCHER} class implements the dynamic dispatching of tasks upon groups of detected units determined a @{Set} of EWR installation groups.
--
-- ![Banner Image](..\Presentations\TASK_A2A_DISPATCHER\Dia3.JPG)
--
-- The EWR will detect units, will group them, and will dispatch @{Task}s to groups. Depending on the type of target detected, different tasks will be dispatched.
-- Find a summary below describing for which situation a task type is created:
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia9.JPG)
--
-- * **INTERCEPT Task**: Is created when the target is known, is detected and within a danger zone, and there is no friendly airborne in range.
-- * **SWEEP Task**: Is created when the target is unknown, was detected and the last position is only known, and within a danger zone, and there is no friendly airborne in range.
-- * **ENGAGE Task**: Is created when the target is known, is detected and within a danger zone, and there is a friendly airborne in range, that will receive this task.
--
-- Other task types will follow...
--
-- # TASK_A2A_DISPATCHER constructor:
-- --------------------------------------
-- The @{#TASK_A2A_DISPATCHER.New}() method creates a new TASK_A2A_DISPATCHER instance.
-- ## 1. TASK\_A2A\_DISPATCHER constructor:
--
-- The @{#TASK_A2A_DISPATCHER.New}() method creates a new TASK\_A2A\_DISPATCHER instance.
--
-- ### 1.1. Define or set the **Mission**:
--
-- Tasking is executed to accomplish missions. Therefore, a MISSION object needs to be given as the first parameter.
--
-- local HQ = GROUP:FindByName( "HQ", "Bravo" )
-- local CommandCenter = COMMANDCENTER:New( HQ, "Lima" )
-- local Mission = MISSION:New( CommandCenter, "A2A Mission", "High", "Watch the air enemy units being detected.", coalition.side.RED )
--
-- Missions are governed by COMMANDCENTERS, so, ensure you have a COMMANDCENTER object installed and setup within your mission.
-- Create the MISSION object, and hook it under the command center.
--
-- ### 1.2. Build a set of the groups seated by human players:
--
-- ![Banner Image](..\Presentations\TASK_A2A_DISPATCHER\Dia6.JPG)
--
-- A set or collection of the groups wherein human players can be seated, these can be clients or units that can be joined as a slot or jumping into.
--
-- local AttackGroups = SET_GROUP:New():FilterCoalitions( "red" ):FilterPrefixes( "Defender" ):FilterStart()
--
-- The set is built using the SET_GROUP class. Apply any filter criteria to identify the correct groups for your mission.
-- Only these slots or units will be able to execute the mission and will receive tasks for this mission, once available.
--
-- ### 1.3. Define the **EWR network**:
--
-- As part of the TASK\_A2A\_DISPATCHER constructor, an EWR network must be given as the third parameter.
-- An EWR network, or, Early Warning Radar network, is used to early detect potential airborne targets and to understand the position of patrolling targets of the enemy.
--
-- ![Banner Image](..\Presentations\TASK_A2A_DISPATCHER\Dia5.JPG)
--
-- 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.
--
-- ![Banner Image](..\Presentations\TASK_A2A_DISPATCHER\Dia7.JPG)
--
-- Additionally in a hot war situation where the border is no longer respected the placement of radars has a big effect on how fast the war escalates.
-- For example if they are a long way forward and can detect enemy planes on the ground and taking off
-- they will start to vector CAP and GCI flights to attack them straight away which will immediately draw a response from the other coalition.
-- Having the radars further back will mean a slower escalation because fewer targets will be detected and
-- therefore less CAP and GCI flights will spawn and this will tend to make just the border area active rather than a melee over the whole map.
-- It all depends on what the desired effect is.
--
-- EWR networks are **dynamically constructed**, that is, they form part of the @{Functional#DETECTION_BASE} object that is given as the input parameter of the TASK\_A2A\_DISPATCHER class.
-- By defining in a **smart way the names or name prefixes of the groups** with EWR capable units, these groups will be **automatically added or deleted** from the EWR network,
-- increasing or decreasing the radar coverage of the Early Warning System.
--
-- See the following example to setup an EWR network containing EWR stations and AWACS.
--
-- local EWRSet = SET_GROUP:New():FilterPrefixes( "EWR" ):FilterCoalitions("red"):FilterStart()
--
-- local EWRDetection = DETECTION_AREAS:New( EWRSet, 6000 )
-- EWRDetection:SetFriendliesRange( 10000 )
-- EWRDetection:SetDetectionInterval(30)
--
-- -- Setup the A2A dispatcher, and initialize it.
-- A2ADispatcher = TASK_A2A_DISPATCHER:New( Detection )
--
-- The above example creates a SET_GROUP instance, and stores this in the variable (object) **EWRSet**.
-- **EWRSet** is then being configured to filter all active groups with a group name starting with **EWR** to be included in the Set.
-- **EWRSet** 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 **EWRDetection** object is created from the class DETECTION_AREAS. A grouping radius of 6000 is choosen, which is 6km.
-- The **EWRDetection** object is then passed to the @{#TASK_A2A_DISPATCHER.New}() method to indicate the EWR network configuration and setup the A2A tasking and detection mechanism.
--
-- ### 2. Define the detected **target grouping radius**:
--
-- ![Banner Image](..\Presentations\TASK_A2A_DISPATCHER\Dia8.JPG)
--
-- The target grouping radius is a property of the Detection object, that was passed to the AI\_A2A\_DISPATCHER object, but can be changed.
-- The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation.
-- Fast planes like in the 80s, need a larger radius than WWII planes.
-- Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.
--
-- Note that detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate
-- group being detected. This may result in additional GCI being started by the dispatcher! So don't make this value too small!
--
-- ## 3. Set the **Engage radius**:
--
-- Define the radius to engage any target by airborne friendlies, which are executing cap or returning from an intercept mission.
--
-- ![Banner Image](..\Presentations\AI_A2A_DISPATCHER\Dia11.JPG)
--
-- So, if there is a target area detected and reported,
-- then any friendlies that are airborne near this target area,
-- will be commanded to (re-)engage that target when available (if no other tasks were commanded).
-- For example, if 100000 is given as a value, then any friendly that is airborne within 100km from the detected target,
-- will be considered to receive the command to engage that target area.
-- You need to evaluate the value of this parameter carefully.
-- If too small, more intercept missions may be triggered upon detected target areas.
-- If too large, any airborne cap may not be able to reach the detected target area in time, because it is too far.
--
-- @field #TASK_A2A_DISPATCHER
TASK_A2A_DISPATCHER = {
@ -79,6 +176,36 @@ do -- TASK_A2A_DISPATCHER
return self
end
--- Define the radius to when an ENGAGE task will be generated for any nearby by airborne friendlies, which are executing cap or returning from an intercept mission.
-- So, if there is a target area detected and reported,
-- then any friendlies that are airborne near this target area,
-- will be commanded to (re-)engage that target when available (if no other tasks were commanded).
-- An ENGAGE task will be created for those pilots.
-- For example, if 100000 is given as a value, then any friendly that is airborne within 100km from the detected target,
-- will be considered to receive the command to engage that target area.
-- You need to evaluate the value of this parameter carefully.
-- If too small, more intercept missions may be triggered upon detected target areas.
-- If too large, any airborne cap may not be able to reach the detected target area in time, because it is too far.
-- @param #TASK_A2A_DISPATCHER self
-- @param #number EngageRadius (Optional, Default = 100000) The radius to report friendlies near the target.
-- @return #TASK_A2A_DISPATCHER
-- @usage
--
-- -- Set 50km as the radius to engage any target by airborne friendlies.
-- TaskA2ADispatcher:SetEngageRadius( 50000 )
--
-- -- Set 100km as the radius to engage any target by airborne friendlies.
-- TaskA2ADispatcher:SetEngageRadius() -- 100000 is the default value.
--
function AI_A2A_DISPATCHER:SetEngageRadius( EngageRadius )
self.Detection:SetFriendliesRange( EngageRadius or 100000 )
return self
end
--- Creates an INTERCEPT task when there are targets for it.
-- @param #TASK_A2A_DISPATCHER self

View File

@ -652,10 +652,7 @@ This is a good implementation, because maybe in the future, more coalitions may
<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.
There are two parameters required, a <a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a> that defines the Groups of the EWR network, and a radius in meters, that will be used to group the detected targets.</p>
<p>The <a href="##(AI_A2A_DISPATCHER).New">AI<em>A2A</em>DISPATCHER.New</a>() method is used to setup the EWR network and to define the grouping.</p>
<p>The <a href="##(AI_A2A_DISPATCHER).New">AI<em>A2A</em>DISPATCHER.New</a>() method creates a new AI_A2A_DISPATCHER instance.</p>
<h3>1.1. Define the <strong>EWR network</strong>:</h3>
@ -679,7 +676,7 @@ Having the radars further back will mean a slower escalation because fewer targe
therefore less CAP and GCI flights will spawn and this will tend to make just the border area active rather than a melee over the whole map.
It all depends on what the desired effect is. </p>
<p>EWR networks are <strong>dynamically constructed</strong>, that is, they form part of the <a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a> object that is given as the input parameter of the AI_A2A_DISPATCHER class.
<p>EWR networks are <strong>dynamically constructed</strong>, that is, they form part of the <a href="Functional.html##(DETECTION_BASE)">Functional#DETECTION_BASE</a> object that is given as the input parameter of the AI_A2A_DISPATCHER class.
By defining in a <strong>smart way the names or name prefixes of the groups</strong> with EWR capable units, these groups will be <strong>automatically added or deleted</strong> from the EWR network,
increasing or decreasing the radar coverage of the Early Warning System.</p>
@ -691,18 +688,22 @@ DetectionSetGroup = SET_GROUP:New()
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
DetectionSetGroup:FilterStart()
-- Setup the detection.
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
-- Setup the A2A dispatcher, and initialize it.
A2ADispatcher = AI_A2A_DISPATCHER: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.
The <strong>DetectionSetGroup</strong> variable 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>
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>
<h3>1.2. Define the detected <strong>target grouping radius</strong>:</h3>
<h3>2. Define the detected <strong>target grouping radius</strong>:</h3>
<p>As a second parameter of the <a href="##(AI_A2A_DISPATCHER).New">AI<em>A2A</em>DISPATCHER.New</a>() method, 30000 indicates that detected targets need to be grouped within a radius of 30km.
<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.
The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation.
Fast planes like in the 80s, need a larger radius than WWII planes. <br/>
Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.</p>
@ -710,7 +711,7 @@ Typically I suggest to use 30000 for new generation planes and 10000 for older e
<p>Note that detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate
group being detected. This may result in additional GCI being started by the dispatcher! So don't make this value too small!</p>
<h2>2. Set the <strong>engage radius</strong>:</h2>
<h2>3. Set the <strong>Engage radius</strong>:</h2>
<p>Define the radius to engage any target by airborne friendlies, which are executing cap or returning from an intercept mission.</p>
@ -725,7 +726,15 @@ You need to evaluate the value of this parameter carefully.
If too small, more intercept missions may be triggered upon detected target areas.
If too large, any airborne cap may not be able to reach the detected target area in time, because it is too far.</p>
<h2>3. Set the <strong>borders</strong>:</h2>
<h2>4. Set the <strong>Intercept radius</strong> or <strong>Gci radius</strong>:</h2>
<p>When targets are detected that are still really far off, you don't want the AI<em>A2A</em>DISPATCHER to launch intercepts just yet.
You want it to wait until a certain intercept range is reached, which is the distance of the closest airbase to targer being smaller than the <strong>Gci radius</strong>.
The Gci radius is by default defined as 200km. This value can be overridden using the method <a href="##(AI_A2A_DISPATCHER).SetGciRadius">AI<em>A2A</em>DISPATCHER.SetGciRadius</a>().
Override the default Gci radius when the era of the warfare is early, or, when you don't want to let the AI<em>A2A</em>DISPATCHER react immediately when
a certain border or area is not being crossed.</p>
<h2>5. Set the <strong>borders</strong>:</h2>
<p>According to the tactical and strategic design of the mission broadly decide the shape and extent of red and blue territories.
They should be laid out such that a border area is created between the two coalitions.</p>
@ -744,7 +753,7 @@ If a hot war is chosen then <strong>no borders</strong> actually need to be defi
it makes it easier sometimes for the mission maker to envisage where the red and blue territories roughly are.
In a hot war the borders are effectively defined by the ground based radar coverage of a coalition.</p>
<h2>4. Squadrons:</h2>
<h2>6. Squadrons:</h2>
<p>The AI_A2A_DISPATCHER works with <strong>Squadrons</strong>, that need to be defined using the different methods available.</p>
@ -774,7 +783,7 @@ while defining which plane types are being used by the squadron and how many res
<p>For performance and bug workaround reasons within DCS, squadrons have different methods to spawn new aircraft or land returning or damaged aircraft.</p>
<h3>4.1. Set squadron take-off methods</h3>
<h3>6.1. Set squadron take-off methods</h3>
<p>Use the various SetSquadronTakeoff... methods to control how squadrons are taking-off from the airfield:</p>
@ -799,7 +808,7 @@ The more and the longer aircraft need to taxi at an airfield, the more risk ther
<p>Currently within the DCS engine, the airfield traffic coordination is erroneous and contains a lot of bugs.
If you experience while testing problems with aircraft take-off or landing, please use one of the above methods as a solution to workaround these issues!</p>
<h3>4.2. Set squadron landing methods</h3>
<h3>6.2. Set squadron landing methods</h3>
<p>In analogy with takeoff, the landing methods are to control how squadrons land at the airfield:</p>
@ -816,7 +825,7 @@ A2A defense system, as no new CAP or GCI planes can takeoff.
Note that the method <a href="##(AI_A2A_DISPATCHER).SetSquadronLandingNearAirbase">AI<em>A2A</em>DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft.
Damaged or out-of-fuel aircraft are returning to the nearest friendly airbase and will land, and are out of control from ground control.</p>
<h3>4.3. Set squadron grouping</h3>
<h3>6.3. Set squadron grouping</h3>
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetSquadronGrouping">AI<em>A2A</em>DISPATCHER.SetSquadronGrouping</a>() to set the amount of CAP or GCI flights that will take-off when spawned.</p>
@ -829,7 +838,7 @@ a GCI needs to be started, the GCI flights will be grouped as follows: Group 1 o
<p>The <strong>grouping value is set for a Squadron</strong>, and can be <strong>dynamically adjusted</strong> during mission execution, so to adjust the defense flights grouping when the tactical situation changes.</p>
<h3>4.4. Balance or setup effectiveness of the air defenses in case of GCI</h3>
<h3>6.4. Balance or setup effectiveness of the air defenses in case of GCI</h3>
<p>The effectiveness can be set with the <strong>overhead parameter</strong>. This is a number that is used to calculate the amount of Units that dispatching command will allocate to GCI in surplus of detected amount of units.
The <strong>default value</strong> of the overhead parameter is 1.0, which means <strong>equal balance</strong>. </p>
@ -855,9 +864,9 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
<p>The <strong>overhead value is set for a Squadron</strong>, and can be <strong>dynamically adjusted</strong> during mission execution, so to adjust the defense overhead when the tactical situation changes.</p>
<h2>5. Setup a squadron for CAP</h2>
<h2>7. Setup a squadron for CAP</h2>
<h3>5.1. Set the CAP zones</h3>
<h3>7.1. Set the CAP zones</h3>
<p>CAP zones are patrol areas where Combat Air Patrol (CAP) flights loiter until they either return to base due to low fuel or are assigned an interception task by ground control.</p>
@ -899,7 +908,7 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
<p>Note the different <a href="Zone.html">Zone</a> MOOSE classes being used to create zones of different types. Please click the <a href="Zone.html">Zone</a> link for more information about the different zone types.
Zones can be circles, can be setup in the mission editor using trigger zones, but can also be setup in the mission editor as polygons and in this case GROUP objects are being used!</p>
<h2>5.2. Set the squadron to execute CAP:</h2>
<h2>7.2. Set the squadron to execute CAP:</h2>
<p>The method <a href="##(AI_A2A_DISPATCHER).SetSquadronCap">AI<em>A2A</em>DISPATCHER.SetSquadronCap</a>() defines a CAP execution for a squadron.</p>
@ -923,7 +932,7 @@ Zones can be circles, can be setup in the mission editor using trigger zones, bu
<p> A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )</p>
<h2>6. Setup a squadron for GCI:</h2>
<h2>8. Setup a squadron for GCI:</h2>
<p>The method <a href="##(AI_A2A_DISPATCHER).SetSquadronGci">AI<em>A2A</em>DISPATCHER.SetSquadronGci</a>() defines a GCI execution for a squadron.</p>
@ -942,19 +951,19 @@ too short will mean that the intruders may have alraedy passed the ideal interce
<p> A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )</p>
<h2>7. Other configuration options</h2>
<h2>9. Other configuration options</h2>
<h3>7.1. Set a tactical display panel:</h3>
<h3>9.1. Set a tactical display panel:</h3>
<p>Every 30 seconds, a tactical display panel can be shown that illustrates what the status is of the different groups controlled by AI_A2A_DISPATCHER.
Use the method <a href="##(AI_A2A_DISPATCHER).SetTacticalDisplay">AI<em>A2A</em>DISPATCHER.SetTacticalDisplay</a>() to switch on the tactical display panel. The default will not show this panel.
Note that there may be some performance impact if this panel is shown.</p>
<h2>8. Mission Editor Guide:</h2>
<h2>10. Mission Editor Guide:</h2>
<p>The following steps need to be followed, in order to setup the different borders, templates and groups within the mission editor:</p>
<h3>8.1. Define your EWR network:</h3>
<h3>10.1. Define your EWR network:</h3>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia14.JPG" alt="Banner Image"/></p>
@ -962,7 +971,7 @@ Note that there may be some performance impact if this panel is shown.</p>
Create the naming of these groups as such, that these can be easily recognized and included as a prefix within your lua MOOSE mission script.
These prefixes should be unique, so that accidentally no other groups would be incorporated within the EWR network.</p>
<h3>8.2. Define the border zone:</h3>
<h3>10.2. Define the border zone:</h3>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia15.JPG" alt="Banner Image"/></p>
@ -972,7 +981,7 @@ To do this, you need to create a zone using a helicopter group, that is late act
Place the helicopter where the border zone should start, and draw using the waypoints the polygon zone around the area that is considered the border.
The helicopter group name is included as the reference within your lua MOOSE mission script, so ensure that the name is unique and is easily recognizable.</p>
<h3>8.3. Define the plane templates:</h3>
<h3>10.3. Define the plane templates:</h3>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia16.JPG" alt="Banner Image"/></p>
@ -993,7 +1002,7 @@ These plane templates will never be activated, but are used to create a diverse
<p>Place these airplane templates are good visible locations within your mission, so you can easily retrieve them back.</p>
<h3>8.4. Define the CAP zones:</h3>
<h3>10.4. Define the CAP zones:</h3>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia17.JPG" alt="Banner Image"/></p>
@ -1004,7 +1013,7 @@ But you can also define other zone types instead, like moving zones.</p>
<p>Or you can define also zones using trigger zones.</p>
<h3>8.5. "Script it":</h3>
<h3>10.5. "Script it":</h3>
<p>Find the following mission script as an example:</p>
@ -1085,15 +1094,15 @@ But you can also define other zone types instead, like moving zones.</p>
A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
</code></pre>
<h4>8.5.1. Script the EWR network</h4>
<h4>10.5.1. Script the EWR network</h4>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia20.JPG" alt="Banner Image"/></p>
<h4>8.5.2. Script the AI_A2A_DISPATCHER object and configure it</h4>
<h4>10.5.2. Script the AI_A2A_DISPATCHER object and configure it</h4>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia21.JPG" alt="Banner Image"/></p>
<h4>8.5.3. Script the squadrons</h4>
<h4>10.5.3. Script the squadrons</h4>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia22.JPG" alt="Banner Image"/></p>
@ -1116,9 +1125,9 @@ But you can also define other zone types instead, like moving zones.</p>
<p>Use the @{#AI<em>A2A</em>DISPATCHER.SetSquadronGci)() method to define GCI execution for the squadron.</p>
<h2>9. Q &amp; A:</h2>
<h2>11. Q &amp; A:</h2>
<h3>9.1. Which countries will be selected for each coalition?</h3>
<h3>11.1. Which countries will be selected for each coalition?</h3>
<p>Which countries are assigned to a coalition influences which units are available to the coalition.
For example because the mission calls for a EWR radar on the blue side the Ukraine might be chosen as a blue country
@ -1126,7 +1135,7 @@ so that the 55G6 EWR radar unit is available to blue. <br/>
Some countries assign different tasking to aircraft, for example Germany assigns the CAP task to F-4E Phantoms but the USA does not. <br/>
Therefore if F4s are wanted as a coalitions CAP or GCI aircraft Germany will need to be assigned to that coalition. </p>
<h3>9.2.Country, type, load out, skill and skins for CAP and GCI aircraft?</h3>
<h3>11.2. Country, type, load out, skill and skins for CAP and GCI aircraft?</h3>
<ul>
<li>Note these can be from any countries within the coalition but must be an aircraft with one of the main tasks being “CAP”.</li>

View File

@ -2934,6 +2934,7 @@ The range till cargo will board.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(CARGO_UNIT).CargoCarrier" >
<strong>CARGO_UNIT.CargoCarrier</strong>
</a>

View File

@ -900,7 +900,6 @@ function below will use the range 1-7 just in case</p>
<dl class="function">
<dt>
<em></em>
<a id="#(DESIGNATE).LaserCodes" >
<strong>DESIGNATE.LaserCodes</strong>
</a>

View File

@ -2393,7 +2393,6 @@ The index of the DetectedItem.</p>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(DETECTION_BASE).DetectedItemCount" >
<strong>DETECTION_BASE.DetectedItemCount</strong>
</a>

View File

@ -1604,7 +1604,7 @@ A string defining the start state.</p>
<dl class="function">
<dt>
<em>#string</em>
<em></em>
<a id="#(FSM)._StartState" >
<strong>FSM._StartState</strong>
</a>
@ -1903,6 +1903,7 @@ A string defining the start state.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(FSM).current" >
<strong>FSM.current</strong>
</a>

View File

@ -227,6 +227,7 @@ on defined intervals (currently every minute).</p>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(MOVEMENT).AliveUnits" >
<strong>MOVEMENT.AliveUnits</strong>
</a>
@ -235,6 +236,9 @@ on defined intervals (currently every minute).</p>
<p> Contains the counter how many units are currently alive</p>
</dd>
</dl>
<dl class="function">

View File

@ -2799,7 +2799,6 @@ The y coordinate.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(POINT_VEC2).z" >
<strong>POINT_VEC2.z</strong>
</a>

View File

@ -2194,9 +2194,6 @@ The group that was spawned. You can use this group for further actions.</p>
<p> Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.</p>
</dd>
</dl>
<dl class="function">
@ -3150,7 +3147,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
<p> Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.</p>
<p> When the first Spawn executes, all the Groups need to be made visible before start.</p>
</dd>
</dl>

View File

@ -765,7 +765,6 @@ true if it is lasing</p>
<dl class="function">
<dt>
<em></em>
<a id="#(SPOT).ScheduleID" >
<strong>SPOT.ScheduleID</strong>
</a>
@ -779,7 +778,6 @@ true if it is lasing</p>
<dl class="function">
<dt>
<em></em>
<a id="#(SPOT).SpotIR" >
<strong>SPOT.SpotIR</strong>
</a>
@ -793,7 +791,6 @@ true if it is lasing</p>
<dl class="function">
<dt>
<em></em>
<a id="#(SPOT).SpotLaser" >
<strong>SPOT.SpotLaser</strong>
</a>
@ -807,7 +804,6 @@ true if it is lasing</p>
<dl class="function">
<dt>
<em></em>
<a id="#(SPOT).Target" >
<strong>SPOT.Target</strong>
</a>

View File

@ -125,6 +125,8 @@
<td class="summary">
<h1>TASK<em>A2A</em>DISPATCHER class, extends <a href="Tasking.html##(DETECTION_MANAGER)">Tasking#DETECTION_MANAGER</a></h1>
<p><img src="..\Presentations\TASK_A2A_DISPATCHER\Dia1.JPG" alt="Banner Image"/></p>
<p>The <a href="##(TASK_A2A_DISPATCHER)">#TASK<em>A2A</em>DISPATCHER</a> class implements the dynamic dispatching of tasks upon groups of detected units determined a <a href="Set.html">Set</a> of EWR installation groups.</p>
</td>
</tr>
@ -212,23 +214,123 @@
<h1>TASK<em>A2A</em>DISPATCHER class, extends <a href="Tasking.html##(DETECTION_MANAGER)">Tasking#DETECTION_MANAGER</a></h1>
<p><img src="..\Presentations\TASK_A2A_DISPATCHER\Dia1.JPG" alt="Banner Image"/></p>
<p>The <a href="##(TASK_A2A_DISPATCHER)">#TASK<em>A2A</em>DISPATCHER</a> class implements the dynamic dispatching of tasks upon groups of detected units determined a <a href="Set.html">Set</a> of EWR installation groups.</p>
<p><img src="..\Presentations\TASK_A2A_DISPATCHER\Dia3.JPG" alt="Banner Image"/></p>
<p>The EWR will detect units, will group them, and will dispatch <a href="Task.html">Task</a>s to groups. Depending on the type of target detected, different tasks will be dispatched.
Find a summary below describing for which situation a task type is created:</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia9.JPG" alt="Banner Image"/></p>
<ul>
<li><strong>INTERCEPT Task</strong>: Is created when the target is known, is detected and within a danger zone, and there is no friendly airborne in range.</li>
<li><strong>SWEEP Task</strong>: Is created when the target is unknown, was detected and the last position is only known, and within a danger zone, and there is no friendly airborne in range.</li>
<li><strong>ENGAGE Task</strong>: Is created when the target is known, is detected and within a danger zone, and there is a friendly airborne in range, that will receive this task.</li>
</ul>
<p>Other task types will follow...</p>
<h2>1. TASK_A2A_DISPATCHER constructor:</h2>
<h1>TASK<em>A2A</em>DISPATCHER constructor:</h1>
<hr/>
<p>The <a href="##(TASK_A2A_DISPATCHER).New">TASK<em>A2A</em>DISPATCHER.New</a>() method creates a new TASK<em>A2A</em>DISPATCHER instance.</p>
<p>The <a href="##(TASK_A2A_DISPATCHER).New">TASK<em>A2A</em>DISPATCHER.New</a>() method creates a new TASK_A2A_DISPATCHER instance.</p>
<h3>1.1. Define or set the <strong>Mission</strong>:</h3>
<p>Tasking is executed to accomplish missions. Therefore, a MISSION object needs to be given as the first parameter.</p>
<pre><code>local HQ = GROUP:FindByName( "HQ", "Bravo" )
local CommandCenter = COMMANDCENTER:New( HQ, "Lima" )
local Mission = MISSION:New( CommandCenter, "A2A Mission", "High", "Watch the air enemy units being detected.", coalition.side.RED )
</code></pre>
<p>Missions are governed by COMMANDCENTERS, so, ensure you have a COMMANDCENTER object installed and setup within your mission.
Create the MISSION object, and hook it under the command center.</p>
<h3>1.2. Build a set of the groups seated by human players:</h3>
<p><img src="..\Presentations\TASK_A2A_DISPATCHER\Dia6.JPG" alt="Banner Image"/></p>
<p>A set or collection of the groups wherein human players can be seated, these can be clients or units that can be joined as a slot or jumping into.</p>
<pre><code>local AttackGroups = SET_GROUP:New():FilterCoalitions( "red" ):FilterPrefixes( "Defender" ):FilterStart()
</code></pre>
<p>The set is built using the SET_GROUP class. Apply any filter criteria to identify the correct groups for your mission.
Only these slots or units will be able to execute the mission and will receive tasks for this mission, once available.</p>
<h3>1.3. Define the <strong>EWR network</strong>:</h3>
<p>As part of the TASK_A2A_DISPATCHER constructor, an EWR network must be given as the third parameter.
An EWR network, or, Early Warning Radar network, is used to early detect potential airborne targets and to understand the position of patrolling targets of the enemy.</p>
<p><img src="..\Presentations\TASK_A2A_DISPATCHER\Dia5.JPG" alt="Banner Image"/></p>
<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>
<p><img src="..\Presentations\TASK_A2A_DISPATCHER\Dia7.JPG" alt="Banner Image"/></p>
<p>Additionally in a hot war situation where the border is no longer respected the placement of radars has a big effect on how fast the war escalates.
For example if they are a long way forward and can detect enemy planes on the ground and taking off
they will start to vector CAP and GCI flights to attack them straight away which will immediately draw a response from the other coalition.
Having the radars further back will mean a slower escalation because fewer targets will be detected and
therefore less CAP and GCI flights will spawn and this will tend to make just the border area active rather than a melee over the whole map.
It all depends on what the desired effect is. </p>
<p>EWR networks are <strong>dynamically constructed</strong>, that is, they form part of the <a href="Functional.html##(DETECTION_BASE)">Functional#DETECTION_BASE</a> object that is given as the input parameter of the TASK_A2A_DISPATCHER class.
By defining in a <strong>smart way the names or name prefixes of the groups</strong> with EWR capable units, these groups will be <strong>automatically added or deleted</strong> from the EWR network,
increasing or decreasing the radar coverage of the Early Warning System.</p>
<p>See the following example to setup an EWR network containing EWR stations and AWACS.</p>
<pre><code>local EWRSet = SET_GROUP:New():FilterPrefixes( "EWR" ):FilterCoalitions("red"):FilterStart()
local EWRDetection = DETECTION_AREAS:New( EWRSet, 6000 )
EWRDetection:SetFriendliesRange( 10000 )
EWRDetection:SetDetectionInterval(30)
-- Setup the A2A dispatcher, and initialize it.
A2ADispatcher = TASK_A2A_DISPATCHER:New( Detection )
</code></pre>
<p>The above example creates a SET_GROUP instance, and stores this in the variable (object) <strong>EWRSet</strong>.
<strong>EWRSet</strong> is then being configured to filter all active groups with a group name starting with <strong>EWR</strong> to be included in the Set.
<strong>EWRSet</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 <strong>EWRDetection</strong> object is created from the class DETECTION_AREAS. A grouping radius of 6000 is choosen, which is 6km.
The <strong>EWRDetection</strong> object is then passed to the <a href="##(TASK_A2A_DISPATCHER).New">TASK<em>A2A</em>DISPATCHER.New</a>() method to indicate the EWR network configuration and setup the A2A tasking and detection mechanism.</p>
<h3>2. Define the detected <strong>target grouping radius</strong>:</h3>
<p><img src="..\Presentations\TASK_A2A_DISPATCHER\Dia8.JPG" alt="Banner Image"/></p>
<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.
The grouping radius should not be too small, but also depends on the types of planes and the era of the simulation.
Fast planes like in the 80s, need a larger radius than WWII planes. <br/>
Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.</p>
<p>Note that detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate
group being detected. This may result in additional GCI being started by the dispatcher! So don't make this value too small!</p>
<h2>3. Set the <strong>Engage radius</strong>:</h2>
<p>Define the radius to engage any target by airborne friendlies, which are executing cap or returning from an intercept mission.</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia11.JPG" alt="Banner Image"/></p>
<p>So, if there is a target area detected and reported,
then any friendlies that are airborne near this target area,
will be commanded to (re-)engage that target when available (if no other tasks were commanded).
For example, if 100000 is given as a value, then any friendly that is airborne within 100km from the detected target,
will be considered to receive the command to engage that target area.
You need to evaluate the value of this parameter carefully.
If too small, more intercept missions may be triggered upon detected target areas.
If too large, any airborne cap may not be able to reach the detected target area in time, because it is too far.</p>
</dd>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB