walder / skynet-iads Goto Github PK
View Code? Open in Web Editor NEWAdds IADS (integrated air defence) functionality to Digital Combat Simulator.
License: Apache License 2.0
Adds IADS (integrated air defence) functionality to Digital Combat Simulator.
License: Apache License 2.0
add skynet-compiled to demo mission, stress test demo mission, hightdigitmod, moose a2adispatcher missions.
write release notes based on 3.0.0-develop release
doc errors:
If identified as a HARM the IADS will shut down radars 30 degrees left and -> 15 degrees
figher -> fighter
As of April 2022 I have only been able to get the SA-15 and the SA-10 to engage HARMS. -> add Patriot and NASAMS
Bcz EW's range too short,So can I add a Awacs instead of ground EWs let the SAM sites which out of EW range can connect to IADS.
BUG
Build: Timestamp: Timestamp: 04.03.2020 23:12:30.82
Missionfile: https://www.dropbox.com/s/yaojrfw31ufmrrb/Neck_Skynet_test_v4.miz?dl=0
Was testing some new SAM sites, and I realized that after I destroyed powersupply to both my 2 SAM sites (1x SA-11 site and 1x SA-3 site), they still show as they have power, see screenshot below:
Here I have killed both node and powersupply for my SAM site, but it shows still as they have both power and node:
And same result after all powersupply and nodes are taken out for the second SAM site aswell:
This part of the code should check if pd is in range of shooting down the HARM:
currently it activates the PD 20 NM out, this is a bit far out.
could check max shooting distance + 15% for example.
if ( #self:getPointDefences() > 0 and self:pointDefencesGoLive() == true and self.iads:getDebugSettings().harmDefence ) then
self.iads:printOutputToLog("POINT DEFENCES GOING LIVE FOR: "..self:getDCSName().." | TTI: "..secondsToImpact)
end
Would it be possible to add an Airborne AWACS (A-50 in red side) as a participant to the IADS, similar to EW Radar?
That way, this could be used as a high value target, and will drive tactic, as the AWACS will have a lock down ability to aid the EW radars.
Advanced HARM reaction for point defences, when saturation point is reached:
if harms have sufficient spacing between each other keep SAM on, because it can pick one HARM at a time, if there is enough distance between HARMS.
One would have to check how this defence tactic could be used in game, there would only be a short time window when this tactic would be active. Maybe it is not really so usefull
investigate potential bug where adding a sam site after iads:activate() is called causes the site to be autonomous even if it is under cover of an ew radar.
Also Handle:
if there is only one SAM in IADS with setActAsEW(true) it shuts down.
Radar Coverage Tests need to be reworked in test-skynet-iads.lua
One thing I did notice, tho was I kept getting the same error over and over in the logs. It didn't seem to affect the script, tho:
[CODE]2020-02-25 00:13:58.136 ERROR SCRIPTING: MIST|doScheduledFunctions|1019: Error in scheduled function: $1[string "F:/Data/Under Development/IADS/skynet-iads-compiled.lua"]:1665: attempt to get length of field 'iadsContacts' (a nil value)
i tried to create a mission using skynet and added a "CP SKP-11 ATC Mobile Command Post" to the mission and added the name of that group to the script as being the command Center:
commandCenter = StaticObject.getByName('Command-Center') redIADS:addCommandCenter(commandCenter)
but i didn't get the IADS info messages in the mission and in the log file got an error:
ERROR SCRIPTING: MIST|doScheduledFunctions|1019: Error in scheduled function: $1[string "C:\Users\ladis\AppData\Local\Temp\DCS.openbeta-ME\/~mis000012CF.lua"]:1335: attempt to index a nil value
which then referred to:
function SkynetIADSAbstractElement:isDestroyed()
return self:getDCSRepresentation():isExist() == false
end
changing the vehicle to a static object of the type command center seemed to have fixed the issue
not sure if it is by design, if it is maybe a warning in the docs might be a good idea; i didn't see it mentioned
BUG
Build: Timestamp: Timestamp: 04.03.2020 23:12:30.82
Missionfile: https://www.dropbox.com/s/near828hhn50a90/Neck_Skynet_test_v3.miz?dl=0
Linked issues: Issue #6
In SAM group 1, I made the powersupply and node to a static object: Ground vehicles
and for SAM ground 2 powersupply and node to static object: Structures
With the latest build, I can destroy one unit as the screenshot shows
But when I attack unit number 2 or 3 I get the following error:
However, when I make both SAM groups to use powersupply and node to static object: Structures
Then I do not get any errors when they are destroyed.
When loading in the mission there is a message saying that it is a unknown type and will not be managed.
You make a demomission to show how your scripts work and how they need to be setup in the editor, nice.
BUT you are using a payed DLC map for it?!!!
Kidding me?
The line of sight calculation does not always work, especially in an urban environment with surrounding objects.
Possible solutions:
lift the object position 7m to 10m to that calculation will work.
Might remove LOS check completely since I learnt that jammers don't need LOS to work..
FEATURE REQUEST:
Would it be possible to connect another component to the IADS, specificly an option similar to node and powersupply to each specific site.
I am thinking about a close protection SAM (SA-15/SA-19) connected to the larger SAMs and if a HARM is shot against the site, then the close protection SAM comes online to shoot down the HARM.
Rationale: The larger SAMs such as SA-2 and SA-3 are likely more static, and are of higher value, and need protection to increase survivability.
Autonomous SAM sites, need to run their own Harm detection. It should be activated when a SAM site becomes autonomous and be deactivated once a SAM site is added to the IADS network.
Autonomous SAM sites currently don't react to incoming HARMs.
The IADS should be able to detect TALDS. Implementation approach could be similar to HARM detection.
Once detected TALDs could be set to invisible, so SAM sites don't go live to fire on them
This video has some info on the flight profile of a TALD:
https://www.youtube.com/watch?v=oihBk9stK-8
Think of adding logic so that talds flying close to each other would all be discovered if one TALD triggers TALD detection
BUG:
Build: Timestamp: 03.03.2020 21:35:37.55
Missionfile: https://www.dropbox.com/s/cvybqk8yxwr728i/Neck_Skynet_test.miz?dl=0
I was testing the script now , and encountered a bug. As a node gets destroyed I get the following error:
.miz file here:
https://www.dropbox.com/s/cvybqk8yxwr728i/Neck_Skynet_test.miz?dl=0
Mission is setup with a commandcenter
2 x SAM sites, both with a node and a powersupply
2x EW , both with a node and a powersupply
The bug happens both when I destroy the node for the EW and SAM. If I destroy the powersupply it works.
_do
iranIADS = SkynetIADS:create()
---debug settings remove from here on if you do not wan't any output on what the IADS is doing
local iadsDebug = iranIADS:getDebugSettings()
iadsDebug.IADSStatus = true
iadsDebug.samWentDark = true
iadsDebug.contacts = true
iadsDebug.radarWentLive = true
iadsDebug.noWorkingCommmandCenter = true
iadsDebug.ewRadarNoConnection = true
iadsDebug.samNoConnection = true
iadsDebug.jammerProbability = true
iadsDebug.addedEWRadar = true
iadsDebug.hasNoPower = true
---end remove debug ---
iranIADS:addEarlyWarningRadarsByPrefix('EW')
iranIADS:addSamSitesByPrefix('SAM')
iranIADS:activate()
-- Command Center 1
local commandCenter = StaticObject.getByName("CommandCenter1")
local comPowerSource = StaticObject.getByName("CommandCenter1_power")
iranIADS:addCommandCenter(commandCenter, comPowerSource)
-- SAM Site 2
local powerSource = StaticObject.getByName('SAM_POWER1')
local connectionNode = StaticObject.getByName('SAM_NODE1')
iranIADS:setOptionsForSamSite('SAM-SA-6', powerSource, connectionNode)
-- SAM Site 1
local powerSource = StaticObject.getByName('SAM_POWER2')
local connectionNode = StaticObject.getByName('SAM_NODE2')
iranIADS:setOptionsForSamSite('SAM-SA-6_2', powerSource, connectionNode)
-- Early Warning Radar 1
local powerSource = StaticObject.getByName('EW_POWER1')
local connectionNode = StaticObject.getByName('EW_NODE1')
iranIADS:setOptionsForEarlyWarningRadar('EW-1', powerSource , connectionNode)
-- Early Warning Radar 2
local powerSource = StaticObject.getByName('EW_POWER2')
local connectionNode = StaticObject.getByName('EW_NODE2')
iranIADS:setOptionsForEarlyWarningRadar('EW-2', powerSource , connectionNode)
end_
Would it be possible to add the following features:
Allowing SAMs to fire on targeting data from other radars in the IADS network? (Sneaky SAM/ambush tactic)
A SAM site can also fire on a target after its radar have been destroyed, as long as connection node to the IADS network is present, and another SAM site have aquired the target its radar (tracking radar)
BUG:
Build: Timestamp: 03.03.2020 21:35:37.55
Missionfile: https://www.dropbox.com/s/cvybqk8yxwr728i/Neck_Skynet_test.miz?dl=0
After a SAM is active , if the powersupply is destroyed, it does nothing to the SAM group, and it will stay active and still engage aircrafts.
function SkynetIADSJammer:setMaximumEffectiveDistance(distance)
self.setMaximumEffectiveDistance = distance
end
Var name should be:
maximumEffectiveDistanceNM
DCS Mission LUA code is here: https://paste.ofcode.org/c22keLj5z7RQFHnXHLYMPp
This work perfectly if the EW and SAM sites are NOT spawned in the mission code.
I tested this with EW being EWR 1L13, EWR 55G6 and an A-50 AWACS.
SAMs were SA-2 and SA-11, manually added to ensure object was was the SR.
However, if the same code is executed after late activated spawns of the EW and SAM no detection occurs.
DCS.LOG extract here: https://paste.ofcode.org/35evyrAw6rFW4LULubWjqJD
2021-12-06 18:10:09.565 INFO SCRIPTING: SKYNET: ACTIVE: true | AUTONOMOUS: false | IS ACTING AS EW: false | DETECTED TARGETS: 1 | DEFENDING HARM: false | MISSILES IN FLIGHT: 1
MIST 4.4.90 or 4.5.98
Moose 2.7.7.1
SKYNET VERSION: 2.4.0
SAM not reacting to HARM correctly even in skynet-test-persian-gulf.miz with SA-6 test with lines included in its script:
--this SA-6 site will always react to a HARM being fired at it:
redIADS:getSAMSiteByGroupName('SAM-SA-6'):setHARMDetectionChance(100)
Seems to be a standalone radar. No connection to SAM sites possible.
the connection node script to add a node for EWR is unclear??
local connectionNode = Unit.getByName("EW connection node")
ewRadar:addConnectionNode(connectionNode)
I don't understand how to add the EW name? where? I have tried to install NODES to my EWR in a
test game but keep getting errors like this
[string .......... 788a.I..."]:38:'='expected near'-'
can you clarify?
Hello. Im starting to build campaigns, and I was looking something like your scripts. They look awesome!
Im not really skilled in scripting so Im sorry if my questions are a little bumb .
To use your scritps:
.- where Im suposed to put all the contects I download from here, in wich DCS folder should I put the files?
.- when loading the script as your instructios say, in the example the file skynet-iads-setup-persian-gulf.lua is loaded. This file has to be created from scractch for every mission file or at leat I have to create a new one and use that as templete. I can put thiis lua file anywhere and just pint it in the path in the DCS trigger screen? What about the skynet-iads-compiled.lua, what it is used for and where should I place it? Do I need to change anything in this file or it is suposed to be used without any changes?
.- To run the example mission file and I have opend the mision in the mission editor and looked for the lua files so the correct path is there. But when loading the mision, The sim just stays there trying to load the file (I have the persion gulf map, and I have the su-33 mod). What Im doing wrong?
.- May be my problem is with the MIST installation, I dont know where to place those files either, I guess I have to ask them about this but if you can tell me, THANKS
Thanks in advance for the help
REQUEST:
Build: Timestamp: 03.03.2020 21:35:37.55
Missionfile: https://www.dropbox.com/s/cvybqk8yxwr728i/Neck_Skynet_test.miz?dl=0
In the current version , the SAMs go live immediately after the Commandcenter is disconnected from the IADS (Either by blowing up the Commandcenter or by destroying the powersource)
Would it be possible to add in a delay before the SAMs go live, as it would be more realistic with some delay from an action where the IADS central node is taken out until the SAMs go live.
International and maritime borders often define when a SAM engages rather than a certain lethality distance. It's especially difficult to handle coastal SAM's that are engaging beyond the 12nm maritime range. I'd like to see a polygon zone as an overall engagement zone first, then the sam lethal range after.
I used the following script in my sample mission:
do
IADSRed = SkynetIADS:create('IADSRed')
local IADSRedDebug = IADSRed:getDebugSettings()
IADSRedDebug.IADSStatus = true
IADSRedDebug.radarWentDark = true
IADSRedDebug.contacts = true
IADSRedDebug.radarWentLive = true
IADSRedDebug.noWorkingCommmandCenter = false
IADSRedDebug.ewRadarNoConnection = false
IADSRedDebug.samNoConnection = false
IADSRedDebug.jammerProbability = true
IADSRedDebug.addedEWRadar = false
IADSRedDebug.hasNoPower = false
IADSRedDebug.harmDefence = true
IADSRedDebug.samSiteStatusEnvOutput = true
IADSRedDebug.earlyWarningRadarStatusEnvOutput = true
IADSRedDebug.commandCenterStatusEnvOutput = true
IADSRed:addEarlyWarningRadar('SA-11 3')
IADSRed:addSAMSite('SA-11 1')
IADSRed:addSAMSite('SA-11 2')
IADSRed:activate()
end
The debug output shows both sams but no early warning radar. If I exchange addEarlyWarningRadar
with addEarlyWarningRadarsByPrefix
it shows up. I can also add it as SAM without problems. Just started with Lua, so I am not able to fix it myself and open a PR :(
Method currently has no unit test.
Even though it is documented that the function clears the samsites the name is misleading because it SETS the samsites instead of ADDing them. Please rename it to setSAMSitesByPrefix and consider adding a new function addSAMSitesByPrefix which really adds them.
I once was struggling with it and now I ran into the same issue again just because I forgot about it.
In my case I wanted to add all "red sa" and all "red aaa" and so I called the function twice resulting in only aaa controlled by skynet...
https://github.com/walder/Skynet-IADS#point-defence-1
Is it feasible for skynet to enable the point defense behaviors for a group if the group contains point defense types? We're looking in to enabling point defense behavior for Liberation, and it'd be simpler if we could add SA-15s to our SA-10 groups rather than needing to work out which randomly generated group is the point defense for another. Not at all impossible for us, but seems like it'd be a helpful feature for other skynet users too assuming it's feasible.
FEATURE REQUEST
Build: Timestamp: 04.03.2020 23:12:30.82
Mission: https://www.dropbox.com/s/9q3a6sugjgpq1dz/Neck_Skynet_test_v2.miz?dl=0
Currently it is not possible to use a normal unit for node or powersupply. (See screenshot below after node have been destroyed and after powersupply have beend destroyed).
Would it be possible to use a normal unit for node or powersupply?
Noticing script call can use
local commandCenter = StaticObject.getByName("Command Center2")
local comPowerSource = StaticObject.getByName("Command Center2 Power Source")
iranianIADS:addCommandCenter(commandCenter, comPowerSource)
This is used for a command center and its associated power source, however with the recent ME bug with renaming all static objects to AMMO##
Is it possible to use regular units and call on them instead of a static object in the mission editor ?
for example
local commandCenter = Unit.getByName("Command Center2")
Would this work ? sorry i am very weak on my lua skills
this will get around the DCS Bug in the meantime ?
skynet bugreport.miz is a mission containing one SA-10 site (search radar is the first unit, has two SRs, two TRs, a CP, and 7 launchers). There are no EWRs and this site is expected to operate in autonomous mode.
An AI F-16 will overfly the SAM.
The site briefly turns on because of iads:setupSAMSitesAndThenActivate()
, but then turns off and never turns back on (using activate()
does not fix the problem). https://github.com/walder/Skynet-IADS#autonomous-mode-options says that SAM sites should remain on by default when going into autonomous mode.
This is using the latest version of skynet and mist from the skynet release.
Skynet configured using:
iads = SkynetIADS:create("IADS")
local iadsDebug = iads:getDebugSettings()
iadsDebug.IADSStatus = true
iadsDebug.samWentDark = true
iadsDebug.contacts = true
iadsDebug.radarWentLive = true
iadsDebug.noWorkingCommmandCenter = true
iadsDebug.ewRadarNoConnection = true
iadsDebug.samNoConnection = true
iadsDebug.jammerProbability = true
iadsDebug.addedEWRadar = true
iadsDebug.hasNoPower = true
iadsDebug.harmDefence = true
iadsDebug.samSiteStatusEnvOutput = true
iadsDebug.earlyWarningRadarStatusEnvOutput = true
iads:addEarlyWarningRadarsByPrefix("RED|EWR|")
iads:addSAMSitesByPrefix("RED|SAM|")
iads:addRadioMenu()
iads:setupSAMSitesAndThenActivate()
The jammer table has not yet been updated with the SAM systems from the High Digit SAMs mod. It only has vanilla systems in it.
There currently no check to see if a Radar tracking a HARM is connected to the IADS. Though implicitly this is the case with the first detection cycle. Since a HARM is only in the air for a short amount of time this is currently no big issue.
BUG:
Build: Timestamp: 03.03.2020 21:35:37.55
Missionfile: https://www.dropbox.com/s/cvybqk8yxwr728i/Neck_Skynet_test.miz?dl=0
Even after the EW unit is destroyed (see screenshot below), the EW unit shows up in the debugging.
When mobile SAMs, like the SA-15, detects an incoming missiles, it would be nice to have it change position while (or instead of) switching off its radar.
For modern, mobile units, it may be sensible to make this behaviour the default.
create separate file the same way high digit sams was added.
https://forums.eagle.ru/topic/275571-sam-sites-asset-pack-a-3d-assets-mod-to-populate-you-sam-sites-farp-and-other-bases/
With the new ED protected slots, if the game master slot is password protected, the script fail in addEarlyWarningRadarsByPrefix or setupSAMSitesAndThenActivate
dcs.log1.log
I think I may have seen a bug.
When an aircraft is detcted by a SAM or EW, it will stay in even when it is not detected by radar as long as it stays withing the SAM WEZ.
Examples shown below:
Setup:
One EW , 2 SAM sites, and one AC:
F-16 in a valley without beeing detected by any radar, but it will not be forgotten until it is outside the SAM WEZ.
Now outside the SAM WEZ, and it starts the counter:
This creates a challenge, as it is not enough to avoid radar detection to be forgotten by the IADS, the pilot also need to fly outside the WEZ and not get detected by any radar
setEngageAIRWeapons(false) should also set setCanEngageHARM(false) would be more logical.
Check unit test there is a regression issue here.
The Gazetchik Decoy could be used for that provided by the HighDigitSAMs pack, however it is not finished yet.
Greetings
Is there a way to turn on/off in game the Debug menu ?
Have tried with triggers running script with
for DEBUG ONI have been using your provided debug
do
iranIADS = SkynetIADS:create()
---debug settings remove from here on if you do not wan't any output on what the IADS is doing
local iadsDebug = iranIADS:getDebugSettings()
iadsDebug.IADSStatus = true
iadsDebug.samWentDark = true
iadsDebug.contacts = true
iadsDebug.radarWentLive = true
iadsDebug.noWorkingCommmandCenter = true
iadsDebug.ewRadarNoConnection = true
iadsDebug.samNoConnection = false
iadsDebug.jammerProbability = true
iadsDebug.addedEWRadar = false
iadsDebug.hasNoPower = false
---end remove debug ---
iranIADS:addEarlyWarningRadarsByPrefix('EW')
iranIADS:addSamSitesByPrefix('SAM')
local iadsDebug = iranIADS:getDebugSettings()
iadsDebug.IADSStatus = false
iranIADS:activate()
Do you know of a way i can shut the debug off while the mission is live and running to turn it off or on again ?
thanks
First of all, thank you for your great work.
I have a question or request. When working on our missions in the 132nd Virtual Wing, we have been looking into ways to make SAMs and networks smarter.
Would the following be possible in Skynet-IADS, or would it be possible to implement it in some way?
In the mission there will be various groups, for example:
Air Defence Revolutionary Guard Battalion (ADRGB)Mission:
Supporting Armor Regiment, Frontline forces
- 4x SA-15
- 4x SA-8
- 1x Dog Ear Radar
Would it be possible to script it so that only the Dog Ear radar is on, and once any blue aircraft is within range of one of the 1 SA-15, all of the SAM's turn on. Furthermore, if the Dog Ear Radar is targeted (HARM's), all SAM's go active.
Also for this request, can this be added to the script using just a prefix or specific text that goes into the groups name in the ME?
Of course, turning on the SAM's only if the Dog Ear Radar detects anything (so if a aircraft is flying low-level and is masked from the Dog Ear radar, it will not turn on the SAM's as they do not know a aircraft is in the area.
Intention is to create a smarter and more dangerous Integrated Air Defence System, where they try to lure pilots into their trap, and then open up with all they have.
So staying on friendly side of the FLOT now makes a lot more sense
Link:
132nd-vWing/OPBR-Brief#9
Also update unit tests.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.