From 15cf215d4909e2b7b8e030a4a883d6d0d3d803fe Mon Sep 17 00:00:00 2001
From: FlightControl The #AI class is designed to create an automatic air defence system for a coalition. The #AIA2ADISPATCHER class is designed to create an automatic air defence system for a coalition. The #AI class is designed to create an automatic air defence system for a coalition. The #AIA2ADISPATCHER class is designed to create an automatic air defence system for a coalition. It includes automatic spawning of Combat Air Patrol aircraft (CAP) and Ground Controlled Intercept aircraft (GCI) in response to enemy air movements that are detected by a ground based radar network.
CAP flights will take off and proceed to designated CAP zones where they will remain on station until the ground radars direct them to intercept detected enemy aircraft or they run short of fuel and must return to base (RTB). When a CAP flight leaves their zone to perform an interception or return to base a new CAP flight will spawn to take their place.
If all CAP flights are engaged or RTB then additional GCI interceptors will scramble to intercept unengaged enemy aircraft under ground radar control.
@@ -618,22 +625,30 @@ There are two parameters required, a Set#SET_GRO
The AIA2ADISPATCHER.New() method is used to setup the EWR network and to define the grouping. As part of the AI_A2A_DISPATCHER constructor, an EWR network must be given as the first 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. 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.
-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.
+to pick up enemy aircraft as they approach so that CAP and GCI flights can be tasked to intercept them. 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 Set#SET_GROUP 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 of EWR capable units, these units will be automatically added or deleted from the EWR network,
+ 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.
+By defining in a smart way the names or name prefixes of the groups of EWR capable units, these units 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. 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 AIA2ADISPATCHER.New() method to indicate the EWR network configuration and setup the A2A defense detection mechanism.
-As a second parameter of the AIA2ADISPATCHER.New() method, 30000 indicates that detected targets need to be grouped within a radius of 30km.
+The DetectionSetGroup variable is then passed to the AIA2ADISPATCHER.New() method to indicate the EWR network configuration and setup the A2A defense detection mechanism. As a second parameter of the AIA2ADISPATCHER.New() method, 30000 indicates that detected targets need to be grouped within a radius of 30km.
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. Define the radius to engage any target by airborne friendlies, which are executing cap or returning from an intercept mission.
-So, if there is a target area detected and reported,
+ Define the radius to engage any target 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).
For example, if 100000 is given as a value, then any friendly that is airborne within 100km from the detected target,
@@ -677,11 +698,16 @@ If too large, any airborne cap may not be able to reach the detected target area
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. Define a border area to simulate a cold war scenario and use the method AIA2ADISPATCHER.SetBorderZone() to create a border zone for the dispatcher. A cold war is one where CAP aircraft patrol their territory but will not attack enemy aircraft or launch GCI aircraft unless enemy aircraft enter their territory. In other words the EWR may detect an enemy aircraft but will only send aircraft to attack it if it crosses the border.
-A hot war is one where CAP aircraft will intercept any detected enemy aircraft and GCI aircraft will launch against detected enemy aircraft without regard for territory. In other words if the ground radar can detect the enemy aircraft then it will send CAP and GCI aircraft to attack it.
-If it’s a cold war then the borders of red and blue territory need to be defined using a zone object derived from Zone#ZONE_BASE.
+A hot war is one where CAP aircraft will intercept any detected enemy aircraft and GCI aircraft will launch against detected enemy aircraft without regard for territory. In other words if the ground radar can detect the enemy aircraft then it will send CAP and GCI aircraft to attack it. If it’s a cold war then the borders of red and blue territory need to be defined using a zone object derived from Zone#ZONE_BASE.
If a hot war is chosen then no borders actually need to be defined using the helicopter units other than 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. Set the noborders parameter to 1 Choices are 1, 2, 3 or 4 when CAP or GCI flights spawn. Use the method AIA2ADISPATCHER.SetSquadronGrouping() to set the amount of CAP or GCI flights that will take-off when spawned.
-In the case of GCI, the AIA2ADISPATCHER.SetSquadronGrouping() method has additional behaviour. When there aren't enough CAP flights airborne, a GCI will be initiated for the remaining
+ Use the method AIA2ADISPATCHER.SetSquadronGrouping() to set the amount of CAP or GCI flights that will take-off when spawned. In the case of GCI, the AIA2ADISPATCHER.SetSquadronGrouping() method has additional behaviour. When there aren't enough CAP flights airborne, a GCI will be initiated for the remaining
targets to be engaged. Depending on the grouping parameter, the spawned flights for GCI are grouped into this setting. 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. However, depending on the (type of) aircraft (strength and payload) in the squadron and the amount of resources available, this parameter can be changed. The AIA2ADISPATCHER.SetOverhead() method can be used to tweak the defense strength,
@@ -794,8 +825,11 @@ multiplied by the Overhead and rounded up to the smallest integer. 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. 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. As the CAP flights wander around within the zone waiting to be tasked, these zones need to be large enough that the aircraft are not constantly turning
but do not have to be big and numerous enough to completely cover a border. CAP zones can be of any type, and are derived from the Zone#ZONE_BASE class. Zones can be Zone#ZONE, Zone#ZONE_POLYGON, Zone#ZONE_UNIT, Zone#ZONE_GROUP, etc.
@@ -810,6 +844,8 @@ multiplied by the Overhead and rounded up to the smallest integer. Typically if a CAP flight is tasked and therefore leaves their zone empty while they go off and intercept their target another CAP flight will spawn to take their place. The following example illustrates how CAP zones are coded:
@@ -599,9 +601,14 @@
AI_A2A_DISPATCHER class, extends Tasking#DETECTION_MANAGER
-AI_A2A_DISPATCHER class, extends Tasking#DETECTION_MANAGER
-1.1. Define the EWR network:
+1.1. Define the EWR network:
+
+1.2. Define the detected target grouping radius:
+
+
Typically I suggest to use 30000 for new generation planes and 10000 for older era aircraft.2. Set the engage radius:
-4. Squadrons:
@@ -758,8 +784,11 @@ Damaged or out-of-fuel aircraft are returning to the nearest friendly airbase an
4.3. Set squadron grouping
-
For example with a group setting of 2, if 3 targets are detected and cannot be engaged by CAP or any airborne flight,
a GCI needs to be started, the GCI flights will be grouped as follows: Group 1 of 2 flights and Group 2 of one flight!5.1. Set the CAP zones
+
-
+ -- CAP Squadron execution.
diff --git a/docs/Documentation/Cargo.html b/docs/Documentation/Cargo.html
index e3fae231c..d774a472f 100644
--- a/docs/Documentation/Cargo.html
+++ b/docs/Documentation/Cargo.html
@@ -2934,7 +2934,6 @@ The range till cargo will board.
Contains the counter how many units are currently alive
+Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.
+Overwrite unit names by default with group name.
+By default, no InitLimit
+When the first Spawn executes, all the Groups need to be made visible before start.
+Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.
A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )
-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 AIA2ADISPATCHER.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.
+ +The following steps need to be followed, in order to setup the different borders, templates and groups within the mission editor:
+ +At strategic positions within the battlefield, position the correct groups of units that have radar detection capability in the battlefield. +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.
+ +For a cold war situation, define your border zone. +You can do this in many ways, as the Zone capability within MOOSE outlines. However, the best practice is to create a ZONE_POLYGON class. +To do this, you need to create a zone using a helicopter group, that is late activated, and has a unique group name. +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.
+ +Define the templates of the planes that define the format of planes that will take part in the A2A defenses of your coalition. +These plane templates will never be activated, but are used to create a diverse airplane portfolio allocated to your squadrons.
+ +IMPORTANT! Plane templates MUST be of ONE unit, and must have the Late Activated flag switched on!
+ +Plane templates are used to diversify the defending squadrons with:
+ +Place these airplane templates are good visible locations within your mission, so you can easily retrieve them back.
+ +Similar as with the border zone, define the CAP zones using helicopter group templates. Its waypoints define the polygon zones. +But you can also define other zone types instead, like moving zones.
+ +Or you can define also zones using trigger zones.
+ +Find the following mission script as an example:
+ +-- Define a SETGROUP object that builds a collection of groups that define the EWR network. + -- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR. + DetectionSetGroup = SETGROUP:New() + DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } ) + DetectionSetGroup:FilterStart()
+ +-- Setup the A2A dispatcher, and initialize it. + A2ADispatcher = AIA2ADISPATCHER:New( DetectionSetGroup, 30000 )
+ +-- Initialize the dispatcher, setting up a border zone. This is a polygon, + -- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area. + -- Any enemy crossing this border will be engaged. + CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) ) + A2ADispatcher:SetBorderZone( { CCCPBorderZone } )
+ +-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly + -- without an assignment within 100km radius from a detected target, will engage that target. + A2ADispatcher:SetEngageRadius( 300000 )
+ +-- Setup the squadrons. + A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.MineralnyeVody, { "SQ CCCP SU-27" }, 20 ) + A2ADispatcher:SetSquadron( "Maykop", AIRBASE.Caucasus.MaykopKhanskaya, { "SQ CCCP MIG-31" }, 20 ) + A2ADispatcher:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, { "SQ CCCP MIG-31" }, 20 ) + A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27" }, 20 ) + A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 20 )
+ +-- Setup the overhead + A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 ) + A2ADispatcher:SetSquadronOverhead( "Maykop", 1 ) + A2ADispatcher:SetSquadronOverhead( "Mozdok", 1.5 ) + A2ADispatcher:SetSquadronOverhead( "Sochi", 1 ) + A2ADispatcher:SetSquadronOverhead( "Novo", 1 )
+ +-- Setup the Grouping + A2ADispatcher:SetSquadronGrouping( "Mineralnye", 2 ) + A2ADispatcher:SetSquadronGrouping( "Sochi", 2 ) + A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
+ +-- Setup the Takeoff methods + A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AIA2ADISPATCHER.Takeoff.Air ) + A2ADispatcher:SetSquadronTakeoffInAir( "Sochi" ) + A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" ) + A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" ) + A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
+ +-- Setup the Landing methods + A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" ) + A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" ) + A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" ) + A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" ) + A2ADispatcher:SetSquadronLanding( "Novo", AIA2ADISPATCHER.Landing.AtRunway )
+ + +-- CAP Squadron execution. + CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) ) + A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 ) + A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 )
+ +CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) ) + A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" ) + A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
+ +CAPZoneMiddle = ZONE:New( "CAP Zone Middle") + A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" ) + A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
+ +-- GCI Squadron execution. + A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 ) + A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 ) + A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
+ +Create the squadrons using the AIA2ADISPATCHER.SetSquadron objects using:
+ +Use the @{#AIA2ADISPATCHER.SetSquadronCap)() method to define CAP execution for the squadron, within the CAP zone defined.
+ +Use the @{#AIA2ADISPATCHER.SetSquadronCapInterval)() method to define how many CAP groups can be airborne at the same time, and the timing intervals.
+ +Use the @{#AIA2ADISPATCHER.SetSquadronGci)() method to define GCI execution for the squadron.
+ +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
@@ -920,7 +1086,7 @@ so that the 55G6 EWR radar unit is available to blue.
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 coalition’s CAP or GCI aircraft Germany will need to be assigned to that coalition.
This table contains the targets detected during patrol.
+Contains the counter how many units are currently alive
-Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.
-Overwrite unit names by default with group name.
-By default, no InitLimit
-Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.
+When the first Spawn executes, all the Groups need to be made visible before start.
x>}!Gm+R{14p8=B4u>%l8^gUx
z*?=Y3l1+kcI;vL=&59_Zzef^vf5M7IB#ZWUB4YDjF?s9k;0;WIKd1Cy9O_&I{;;uK
zXLnJ)793&{oU^j(e6+eb*S0%M&FJAf)!yDl3^1D6{xr;NaJA@OfA|S3BP%EVi2qdH
zj&*_an{>{b$`psQt7mD@