Jump to content

Dynamic Campaign Engine


Recommended Posts

F/A-18C Dynamic Campaign: Battle Group Delta


F-14A Dynamic Campaign: Battle Group Delta


F-14B Dynamic Campaign: EastMed Fleet Defense




***** old DCE version *****




Screaming Eagle





Desert Tiger 76





Desert Fishbed 76





Wild Weasel



***** original post *****


With this thread I would like to present the project I am currently working on: A modular dynamic campaign system for DCS which I am simply calling Dynamic Campaign Engine.


Some might be aware of my Guardians of the Caucasus dynamic campaign for the MiG-21 which I have released about a year ago. This campaign was very specifically tailored to the MiG-21 and purposely limited in scope in order to keep it manageable. With DCE I would now like to step up to the next level and provide a framework that can inherently manage a large variety of aircraft tasks and aircraft eras. I expect DCE to be able to run campaigns from modern times back to Korea (and possibly even WWII, though because of personal lack of interest I am not spending any extra time on that).


The Guardians campaign had several annoying limitations and workarounds due to the approach of generating mission content within running DCS missions. Shortly after release of Guardians it became clear to me that a more advanced DC system must be an independent program outside of DCS that can write complete .miz mission files from scratch. DCE is such a program. It is written in LUA and runs outside of DCS. It is still using the LUA interpreter supplied by DCS, but this is simply a convenience (why should I bother to set up my own LUA interpreter if there is one in the DCS installation ready for use). This approach remedies most of the limitations of the Guardians-system:


-Time and weather of the next mission no longer need to be adjusted manually.

-Briefings are now displayed as ordinary briefings instead of text output.

-Missions can be quit directly without any F10 actions required.

-Complete text debriefings are shown after the mission has been quit.

-Players can be assigned mission specific waypoints and loadouts.

-Because of above, players can play any mission type available to their aircraft (air-air, air-ground).



DCE running a campaign will work as follows:

1. Somewhere you have your campaign folder. Within is your next mission. For example it is called 'Test Campaign Mission 1.miz'. You simply play it in DCS as any other regular single mission.

2. After you are done playing, you end it with Esc.

3. A Notepad file will open automatically, showing a detailed debriefing:



(concept demo only, not an actual debriefing)


4. A command box will open asking you to accept the mission results. Accepting will proceed the campaign, not accepting will be as if you didn't play the last mission.

5. If you accepted, the mission 'Test Campaign Mission 1.miz' will be gone and 'Test Campaign Mission 2.miz' is now ready for you. This happens automatically while you are within DCS.

6. The next mission will have time advanced by a certain amount (as defined by the campaign designer), updated weather, updated order of battles depending on the kills and losses of the last mission and new task for all available aircraft (friend and foe).


The cornerstone of DCE is the automatically generated Air Tasking Order. The ATO will assign available aircraft to available targets in a sensible way taking into account a multitude of factors. I will go into more depth of the ATO in a subsequent post.


It is important to note that DCE is not a specific campaign but a framework to run campaigns on. This means that a campaign designer still has to invest some time into setting up a campaign, such as developing the overall scenario, defining all ground targets, setting up all air defenses, defining all involved aviation units, setting up victory conditions, defining special events, writing background texts etc. DCE will then play out what the campaign designer came up with. So whether a campaign will be fun to play will also depend a lot on how it will be set up.


A word on ground war and moving front line. DCE will not have it initially. Some people will instinctively associate a dynamic campaign with an ongoing ground war. I do not think this is the case, as the basis of a DC must be persistent damage and an ATO making aircraft do stuff. Historically several massive air campaigns have been fought without a ground war ongoing (Battle of Britain, Linebacker, 90% of Desert Storm). Therefore I think it is sensible to concentrate on the air war first (which includes air-ground against air defenses and ground targets) before looking at a dynamic ground war. I am not saying this will never happen. The way DCE is set up it should be very easy to insert a ground war module. Writing such a module will be a massive undertaking though, which basically is creating a strategy game from scratch. So I think this time is currently better spent on stuff in the air until this is really solid. DCE will be perfectly suited to run campaigns like F/A-18s doing carrier air strikes in the Strait of Hormuz against Iranian installations ashore.


So where is DCE currently at? I laid some groundwork last January and started working on it in earnest in October. So I am now about 2 months into development. The basic framework is set up and the ATO is already very solid. But there is still a lot of work ahead. I will use this thread to post some development updates as I go along.


Edited by MBot
  • Like 6
Link to comment
Share on other sites

Great work MBot


Can be see in the future some type of integration of your old script (ASW Course and others) on the Dynamic Campaign Engine?

More news to the front

My Rig: AMD Ryzen 7 1800X Eight-Core  3.60 GHz / Crosshair VI Hero / Corsair H115i / 48 GB DDR4 RAM Vergance RGB Pro / GTX-1080 8 GB RAM / HD 1Tb / SSD 2Tb/2x1Tb / Warthog / 2 MDF / TFPR / Track Ir V / Logitech G633

DCS: Roadmap (unofficial): https://forums.eagle.ru/showthread.php?t=116893

DCS: List of Vacant models: https://forums.eagle.ru/showthread.php?p=4076891#post4076891

Silver_Dragon Youtube

Link to comment
Share on other sites

Let's talk about the Air Tasking Order a bit. As mentioned, the ATO is the centerpiece of DCE. It will assign available aircraft (which depend on the losses in previous missions) to available targets (which depend on targets struck in previous missions). The ATO will put together packages of multiple flights including SEAD and fighter escorts if applicable and create sensible flight plans. Here are some of the factors which will affect the ATO:


-Mission priority: High priority missions are more likely to be flown


-Threat level. The risk to strike a target is calculated for each potential mission, which includes a threat avoiding route, how many threats cannot be avoided and how dangerous these threats are. Safe missions are more likely to be flown.


-Escorts: The availability of SEAD or fighter escorts can reduce the threat level of a mission and make a mission more likely.


-Route profile: The campaign designer can assign an altitude profile for a certain loadout (for example, F-16 on precision strike with GBU-24 should always attack high) or let the ATO decide on the most efficient option (high-high, high-low, low-low). Altitude affects routing around threats and therefore threat level and likeliness of a mission.


-Time of day: During night, some air defense systems are ignored for threat avoidance (MANPADS don't see at night). This means that during day the ATO might plan a strike at hight altitude with a SEAD escort to punch through some SA-6 because it is safer, while at night the same mission would be planned at low level without SEAD escort, avoiding the SA-6 and passing through blind SHORAD (freeing the SEAD escort aircraft to do another mission on their own).


-Aircraft proficiency: Each aircraft-task-loadout combination has a proficiency value. So an F-15 with an escort task with AMRAAMS should be very good, while an F-15 with an anti-ship task with guns only should be horrible. The better an aircraft with a loadout is suited for a specific mission, the more likely the ATO will asign it.


-Loadout firepower: Loadouts with more bang are more likely to be selected by the ATO. But if a target is out of range, the ATO will select a loadout with less firepower but sufficient range.



The overall calculation which missions will be flown and which aircraft are assigned is quite complex as you can imagine. This is further complicated by the fact that some aircraft are multirole. Should a F-16 be a SEAD escort for some B-52, do a strike mission on its own or better be on CAP? This will require a lot of testing to polish, but I think I have a pretty solid system so far.


The campaign designer has the job to assign a list of possible tasks for each aviation unit defined in the campaign. Since this is unit specific and not aircraft type specific, it will be possible for example to have a the 1st Squadron with F-16 doing CAP, sweep and escort only, while the 2nd Squadron with F-16 is doing SEAD and ground attack.


Furthermore the campaign designer must then define loadouts for each aircraft-task combination, where he can define key properties such as night capability, firepower value, proficiency, altitude profiles, cruise speeds, range etc.


Setting this up for each campaign will be a lot of work initially, but it is also an extremely flexible system. It will allow for example to set up that a F-117 unit will only fly at night or that a MiG-21 unit will only fly ground attack at day and intercepts at night.



Next I will talk about flight routes and threat avoidance.

Link to comment
Share on other sites

Can be see in the future some type of integration of your old script (ASW Course and others) on the Dynamic Campaign Engine?


In principle yes. Generic scripts can easily be added when defining a new campaign and will then be run in each campaign mission. Many scripts require some configuration though (which units are to be affected etc.) which might prove difficult to do automatically in each campaign mission. Close integration deep within the DCE code might be required to do so.

Link to comment
Share on other sites

As mentioned, the ATO tries to create flight plans that route around threats. Let's have look at some quick and dirty examples. The setup is a MiG-21 unit at Krymsk airbase and a single test target. A high-low flight profile is the enforced. This is what the ATO comes up with.




The threat is a single Hawk site between the airbase and the target. Notice that flight route is routing around only as far as required at low altitude. These are the WP altitudes that the ATO set up:

1: 6000 MSL

2-9: 100 AGL

10: 6000 MSL


As we can see, the route goes to cruise altitude until the high altitude engagement area of the Hawk is reached, then descends to low level. The cruise portion is very short due to the short distances involved.





With this setup, the Hawk low altitude engagement area cannot be avoided to strike the target. This would most likely trigger a SEAD escort if one is available, or a less dangerous target would be selected if one was available.





Some low altitude Avengers are added to the mix.





The route is extended to the west to avoid these Avengers.





Low altitude attack on target defended by Avengers. Safest ingress possible is selected, egress doesn't look to bad either.




Different layout of Avengers makes an ingress from S-E the better option. Egress is not quite optimal here, I guess to the S-W would be better. Something to tweak.



Remember, all these routes are generates automatically by the ATO.







Link to comment
Share on other sites

Looks awesome, Mbot.


Two questions regarding the ATO:


One: regarding aircraft capabilities: is NVG availablility factored into the score for night tasking (e.g. assigning a NVG-less F-15C to a low level escort at night)?


Two: will the ATO generator also plan for cruise missile attacks in a mission (e.g. use a Tomahawk launched from the Ticonderoga to take out some of those pesky SAMs)?

Link to comment
Share on other sites

Impressive, keep up the good work! DC is what we really need. Still flying and enjoying Guardians of the Caucasus :thumbup:

Asus Prime X570-P * Ryzen 5800X3D + Scythe Fuma cooler * RTX 3080 TUF OC 10Gb * G.Skill 32GB DDR4 3600MHz * Samsung 980 pro 1Tb nvme * Samsung 850 EVO 512Gb SSD * Corsair RM850x V2/2018 * HP Reverb G2 * CH Fighterstick/Pedals/Throttle * Win11

Link to comment
Share on other sites

One: regarding aircraft capabilities: is NVG availablility factored into the score for night tasking (e.g. assigning a NVG-less F-15C to a low level escort at night)?


Yes, but it will be completely up to the campaign designer to manually set this up (e.g. decide which aircraft-task-loadout combination is night capable*). The ATO will then plan according to what it is being told is possible. Whether the aircraft really has the capability is on a different page and the responsibility of the mission designer. So if I for example tell the ATO that the Fw-190 is capable of night precision strikes, the ATO will assign them to such missions which will most likely result in complete failures.


*This is quite situation dependent. For example in Desert Storm F-111 have been almost exclusively flown at night, while of course the aircraft is perfectly able to operate at day. So it's up to the campaign designer to decide what he wants.



Two: will the ATO generator also plan for cruise missile attacks in a mission (e.g. use a Tomahawk launched from the Ticonderoga to take out some of those pesky SAMs)?


Not yet, as the ATO currently only manages aircraft. Once the air stuff is done, I will probably write a naval module (*cough* Hornet *cough* Tomcat) so this is will be a good idea to look at then.

Link to comment
Share on other sites

Wow, MBot, that sounds/looks really great! Incredible what you've been able to do so far, too! Will definitely be keeping an eye on this.



System Specs:

i7 4970K @ 4.8, GTX 1080 SC, 32GB G.Skill DDR 2133,Thermaltake Level 10 Full Tower Case, Noctua NH-D15 6 Cooler, Win 10 Pro, Warthog, CH Pro Pedals, CH Throttle Quadrant, Oculus, 1 32" & 2 19" Monitors




Modules Owned: A-10C I+II, Ka-50, FC3, F-86, Mig-15, Mig21, UH-1H, Mi-8, CA, P-51D, BF-109K-4, FW-190 D-9, Hawk, NTTR, M-2000C, SA342, F-5E, Spit Mk. IX, AJS-37, Normandy, WWII A.P., AV-8B, F/A-18C, L-39, Persian Gulf, Mig-19P, I-16, Super Carrier, F-16, Channel, Syria

Link to comment
Share on other sites

Great Idea MBot.


If I may I have a suggestion based on the last 2 images of the ATO post. It would be a good idea I think to have the routine plot the lowest angular change exit from the target. For example in the second to last image the ingress route( to target) seems pretty good with that 80 degree route. However the egress route from target looks like it would be better coming off at say 135 degrees heading between the southern and eastern most air defence units. Mainly it requires a less extreme turn over the heads of the AD. In the last image it would seem to me that a roughly 270 heading would be a better exit from the target area. The sharp angle may be OK if the aircraft has stand off weaponry but for a bombing run over the target I would think a shallower angle would be better.


Just my opinion though.

Link to comment
Share on other sites

MBOT, as always, your work is ground breaking!

I'm really glad to see you are working on a campaign framework in the same style Guardians is done, this is what I asked if you had ready a while back and you took it a few steps forward.


I will write to you in PM about this awesome project, thanks!



The Blue Flag campaign BuddySpike team has created, is working on the concept you did in Guardians campaign where an external file is saved for the progress.

So thank you again for your awesome contribution to DCS community!

Link to comment
Share on other sites

Ah, but this being DCS - which year?


Seriously though, great work.






Intel i5 / 16gb RAM / Nvidia GeForce 1080Ti / Viewsonic 28" monitor / TM Warthog / TM Elite rudder pedals / TrackIR5


First flight sim: Psion 'Flight Simulator' (ZX Spectrum 48k)

Link to comment
Share on other sites

This looks interesting.


I've been wanting to say for awhile that without an ATO, the ability to frag multiple packages, and building/editing flight plans from scratch, any Dynamic Campaign brought into DCS would be essentially worthless.


This looks like excellent groundwork for those features though. I'm happy someone else recognizes that at some level as well.

Link to comment
Share on other sites

This sounds incredible! Nice work! :)

Scripts: Complete Transport And Logistics Deployment - CTLD / CTLD Examples - Lots of example of how to use CTLD

CSAR Script - Downed Pilot Rescue / Dedicated Server Script - Automatically launch DCS Multiplayer server at startup

Range Scoring Script - Get scores and counts hits on targets for gunnery or bombs / SimpleSlotBlock - Multiplayer dynamic Slot Blocking Script


Projects: DCS-SimpleRadio Standalone - DCS Radio Integration for All Aircraft - NO TeamSpeak Required! :)

DCS-SimpleRadio Troubleshooting Post / DCS-SimpleRadio Free Support Channel on Discord

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...