The road to v1.10: Special Actions, Lua additions and ScenEdit improvements

January 13, 2016 · Posted in Command · Comment 

scriptingThis is the last in our series of posts covering the new functionality offered by the forthcoming CMANO v1.10 update. This time we turn our attention to scenario authoring and Lua scripting.


 

Special Actions

Special Actions are similar to TOAW’s much beloved “Theater Options”, in the sense that they allow the player to execute a number of pre-defined actions that may bring favorable results (or not – often the best way to model such actions is as high-risk gambles that can spectacularly backfire). Contrary to TOAW, Special Actions can range from the strictly tactical (“Host this SOF squad into the building”) through operational (“request nuclear release”) all the way to grand strategic (“The Assad regime requests assistance from the Russian Federation and makes Latakia airbase and Tartus harbor available to their forces”).

Special Actions are created and edited through ScenEdit (Editor -> Event Engine -> Special Actions) and are made available to the player in normal play mode via Game -> Special Actions (disabled actions are hidden). Such an action may be one-off or repeatable (through Lua it can also be made active for only a finite number of calls, ie. “you may request this 3 times”). From a technical standpoint, Special Actions act as containers for Lua scripts so they can be very powerful. Once an action is executed a message (generated by the script) is shown to the player as to what happened as a result of the action, so scen authors are encouraged to be elaborate in their explanations.

Lua improvements

Lua scripting on Conditions: The immense power and flexibility of Lua scripting is now available not only on event actions but also on conditions. Authors can combine this with the existing event triggers to create very elaborate conditional triggers.

Lua counterparts for existing conditions: The existing “Side Posture” and “Scenario has started” event conditions now have Lua counterparts: ScenEdit_GetSidePosture(SideANameOrID, SideBNameOrID) and ScenEdit_GetScenHasStarted() respectively.

New Lua function: ScenEdit_SetSpecialAction. Usage example: ScenEdit_SetSpecialAction({ActionNameOrID=”MyAction”, IsActive=”True”, IsRepeatable=”False”, NewName=”MySpecialAction”, Description=”This is a very special action”}). This is very handy if the scen author wants to activate/deactivate special actions depending on other events happening.

New Lua method: ScenEdit_GetSideIsHuman(‘SideNameOrID’) . Returns ‘Yes’ if the referenced side is currently under human control, ‘No’ otherwise.

New Lua method: ScenEdit_SetLoadout. Usage example: ScenEdit_SetLoadout({UnitNameOrID=”Viper #1″, LoadoutID=631, TimeToReady_Minutes=45, IgnoreMagazines=”False”})

Length limit of Lua scripts: The limit has been raised to tens of millions of characters.

You can now order a unit to RTB via Lua: Using the existing ScenEdit_SetUnit method, use the “RTB” key (e.g. RTB=’Yes’)

You can now host a unit to a suitable parent unit/group via Lua (e.g. aircraft to airbase, small boat to larger ship etc.). The new method is: ScenEdit_HostUnitToParent(table). Usage example: ScenEdit_HostUnitToParent({HostedUnitNameOrID=’Eagle 1′, SelectedHostNameOrID=’Bitburg AFB’}) . The unit to be hosted is ‘snatched’ either from mid-air or from its current host.

You can now edit a unit’s fuel level through Lua. Usage examples:
a=ScenEdit_GetUnit{side=’a’,name=’test’}
print(a.fuel)
{ [3001] = { current = 240000, max = 240000 }, [4001] = { current = 3750, max = 3750 } }
fuel = a.fuel
fuel[3001].current=1000
a.fuel = fuel

ScenEdit and Event Engine improvements

* An extra criterion, “minimum classification level”, has been added to the “Unit Detected” trigger. This allows the scenario author to tailor the desired level of target classification reached (everything from simply “detected” all the way to “precise ID”) before the trigger is actually fired. For backwards compatibility, the default level is “Detected – Known Domain”.

* You can now clone events, triggers, conditions and actions.


The v1.10 update for CMANO will soon be available as a Release Candidate on the MatrixGames forum. Stay tuned!

The new features of Chains Of War: Communications disruption

April 15, 2017 · Posted in Command · Comment 

The first few “Release Candidate” (ie. public beta) builds of the v1.12 update (the companion to the upcoming “Chains Of War” DLC pack) have began being distributed on the MatrixGames forum and we’re happy to say the feedback so far has been very encouraging. Additions like the new 2x time compression step and much improved 4K/UHD support have long been favorite requests and it is good to see them well received. Chains of War, however, will introduce a number of major new features with significant effects on scenario design and gameplay. Today we are looking at one of them; communications disruption.

 

 

Static on the radio

The US Navy’s vision for modern operations. What happens if the data pipes break?

Most wargames and simulations accustom their users to the idea of omnipresent, instant, always-on communications. The battle may be lost – your forces & assets may be in disarray – but you are always in control of them and aware of their whereabouts, activities and condition. You are always in the know and in power. The pawns in the chessboard are always at your disposal.

But what happens when the lights go out? When the only thing on the radio is static? When the datalink is dead?

This is fast becoming an ever-important question, both because the western armed forces are increasing their reliance on distributed, hyper-connected force concepts (the F-35 and the US Navy’s NIFC-CA being fine examples) and because potential peer competitors, fully aware of this trend, are rapidly improving their electronic attack and cyber-warfare capabilities. The ever-evolving chess game of electronic warfare has never been limited to the radar bands, but more recently communications and datalinks are becoming increasingly appealing targets.

Beginning with v1.12, Command makes a bold step forward in exploring this domain. We want to show players both the “how” and the “why” of communication lines breaking, and the practical effects of units being isolated from their parent side’s common picture.

Causes…

A unit can have its communications disrupted in a number of ways:

  • If all its onboard comm devices and datalinks become non-operational (damaged or destroyed):

 

Damage1

This frigate is about to become very lonely

 

  • Through the Lua scripting API: As an example: ScenEdit_SetUnit({Name=”USS Vigilant”, OutOfComms=”True”}). This is a very versatile technique as it can be used to model any number of factors, both man-made and natural, that can cause a unit to go “off-grid”:
    • A submarine hooking up to HF or satellite communications when it goes to periscope depth, and breaking contact again when it submerges.
    • A satellite linking only temporarily with its ground station to dump its intelligence product and receive new tasking instructions, then again going in isolation in space (contrary to popular fiction, even modern intelligence satellites are rarely, if ever, in constant link with their ground control stations).
    • A cyber attack directed at the internal comms infrastructure of the targeted platform. (Your comm devices may be physically untouched, but the server at the core of the comms exchange just got taken over. Tough world! Chains Of War has strong examples of this.)
    • Physical incapacitation (damage/destruction) of a critical C3I node leading to other units dependent on it going offline (remember that many of the first-night targets in Desert Storm were headquarters, C3 bunkers and comm buildings? You can now recreate why this was a critical action).
  • Through the scenario editor GUI, by selecting the unit and marking it as “out of comms”:image
    This is less powerful than using the Lua API but a simpler and faster way for quick setups. So for example you may use this to configure a unit to be “off grid” at the start of a scenario, and follow-up with a Lua script depending on some later action that changes this unit’s connectivity.
  • By jamming its comm devices, using communications jamming equipment similar to existing OECM systems. [NOTE: Integrated comms-jamming is a feature reserved for the Professional Edition. However, with a bit of creative work you can use the Lua API to approximate this in the commercial version of Command.]

…and Effects

So what are the results of a unit going “off-grid”?

The most obvious effect is that the unit is no longer under your positive control. You no longer know where it is currently located (you only know where it was when it last checked-in, and if any of your other still-connected assets manages to make contact with it, this “last datum” is updated). You don’t know what it is doing, what its fuel, weapons or damage status is. You don’t know if it is peacefully loitering with not a care in the world or if it is fighting for its life. You will know its fate with certainty only when it comes back to its base – or is destroyed first.

image

“Last we heard from Garry he was somewhere there… and that’s all we know.”

For its part, the cut-off unit loses all the benefits of the common side-wide operational picture; its situational awareness now reaches out just to the limit of its own sensors and no further. It has no idea what is going on “out there”. It can still detect, investigate and prosecute contacts on its own and proceed with its assigned mission if it has one, but all the benefits of mutual support are gone. Cooperatively patrolling a large area to split up areas? Nope. Efficient fire coordination? (“You shoot bandit #1 and I’ll take #2”) Forget about it. Even worse, it now has to be really careful with anything that shows up on the scope. Is that new contact a friendly or an enemy? You’d better hope its RoE and doctrine settings take such a situation into account – or prepare for blue-on-blues!

image

Meanwhile, Garry is now alone and trying to adjust to the sudden loss of SA from the nearby AWACS. Notice the only contact still “fresh” is the one that the F-15 is actually detecting on its own; the other contacts, hitherto provided by the E-3, are now deteriorating fast.

Units that lose their comms connectivity retain local copies of the contacts that were available to them before they went offline; essentially they inherit a snapshot of their parent side’s theater picture at the moment of their breakaway. However, without the benefit of information exchange with their parent network, this snapshot immediately starts to lose its currency and most of the contacts will soon vanish unless refreshed by the unit’s own sensors. (It’s like walking down a busy street, taking a last look around and closing your eyes. The longer you remain blind, the less relevant & useful your last memory will become.)

Units that manage to get through their “isolation” and re-join their side comms network share their contact information. You can use this to model things like film-return satellites (the Russians still use them!), a submarine sharing its intelligence take after rejoining its battlegroup etc. If the parent side already has these contacts, the updated information (including BDA – very handy!) is merged and used to refine the contact information.

As mentioned, the player has no control over his “disconnected” units. However, playing out a scenario in ScenEdit mode (which is essentially “cheating” but also very useful for analysis) affords an additional ability: To literally jump into the cockpit/CIC of the isolated unit and experience its “loneliness” first-hand (Editor –> Isolated POV view. This menu selection is only available when the “Comms Disruption” feature is enabled for the scenario). This is an excellent way to understand how a comms-isolated unit perceives its environment and reacts to it (which is usually quite different from when it operates as part of an integrated network). Quickly switching between “side-wide common picture” and “isolated POV view” can be a real eye-opener as to the value of a well-connected battleforce and the hazards and challenges of “comms off”. It is simple enough to say “we’ll not transmit so the bad guys cannot sniff us out”. But how well can you really fight in the dark?

Living with vulnerable comms

During the course of our internal testing, we realized players using this new feature will probably have to adjust to a different mindset as well as absorb the new options it affords them. A few random thoughts:

  • Non-kinetic options are now significantly more expanded. Forget jamming radars; now you can do some real sneaky tricks. It is remarkable how much more brittle and inefficient, say, an IADS becomes when you can selectively take any of its critical nodes offline. Michael Scofield would _love_ to be able to brick the guards’ phones during his break-out/break-in escapades. Put another way: Going ultra-stealth or swarming cruise missiles over every radar & SAM site are no longer your only, or even your best options.
  • An initial tempting thought was to freely use comms disruption as a standard built-in feature to all existing scenarios. We soon discovered, in hilarious ways, how this can wreck scenarios that were not designed with this factor in mind. As an example, in the standalone scenario “Duelists”, we “flipped the switch” on the Soviet surface group just to see what would happen. Because the group had a standing “forbidden zone” around it that automatically marked violators as hostile, and in combination with very liberal “shoot first” ROEs, the ships in the group almost immediately proceeded to blow each other out of the water with righteous fury, with even a distant Oscar sub joining the action with its beastly antiship missiles. It really was blue-on-blue in its most pure, raw form.
  • Apart from the obvious step of making this new feature optional so that existing scenarios can function as before, we also added a lot of “reasonable smarts” to the AI crews so that events like the above Soviet shootout were less likely to happen. So for example, when detecting a new contact close to where a friendly off-grid unit was last known/reported, the side-wide AI is now a bit more careful even if the new contact is a violator of a forbidden zone (“easy on the trigger, guys… maybe it’s Garry after all”). Likewise, cut-off units compare their new contacts with the most recent datum of their known comrades and will ignore contacts that seem to be right on top of where their buddies were when they last heard from them. After putting together such refinements and re-trying the Duelists test, the isolated Soviet units were now significantly more restrained on how they prosecuted sudden new contacts after their breakaway.


    (On the flip side, if you are the one creating the chaos, this creates excellent “false flag” opportunities for exploiting it. For example, if you can swiftly and unobserved dispatch comms-isolated units that are part of an enemy distributed force, the longer you can remain in their general location the longer it may take for their friends to get suspicious of you. Cloak and dagger fans rejoice!)

  • Comms vulnerability really drives home the dirty little secret of most network-based CONOPS. People talk about swarms, distributed lethality and all the rest of current jargon – but all of this assumes reliable communications.
    This also reinforces the importance of sufficient individual capability: A modern warship, even when comms-isolated, is still a powerful unit. It has a fair chance of accomplishing its mission even without the obvious benefits of cooperation with its consorts. On the other hand, a “swarm” unit (be it a small speedboat, a drone etc.) that relies on the “my strength is in the pack” principle? Take comms off and its power drops precipitously (it is not an accident that comms-jammers are rather more favored for counter-drone defence than hard-kill measures).

Some other scenario-editing ideas for taking advantage of this feature:

  • Special actions, with units on the opposing side getting their comms knocked out. This is used to simulate a computer network attack, but could also represent saboteurs physically disrupting the comms network.
  • A “unit enters area” trigger where a friendly unit representing a jammer (ie, an EA-6B Prowler or similar) arrives on station. The script is fired, and representing its jamming capabilities, units on the opposing side have their comms taken out.
  • A “unit enters area” trigger where run-off the mill friendly units get their comms knocked out, forcing them to continuing prearranged missions or move aimlessly in circles until they run low on fuel and return to base. This, especially in earlier-period scenarios, simulates units outrunning their lines of communication. It can also be used to simulate submarine operations.

Looking forward

Further improvements to the comms-disruption feature are already planned and underway, but most of them are currently restricted to the Professional Edition. In the meantime, it is obvious that this feature represents a huge step forward in modeling the intricacies of modern operations, and scenario authors are likely going to have a creative blast with it just like with other existing features. What are YOU going to do with it?

Manual Addendum: Scenario Editor

July 5, 2014 · Posted in · Comment 

* The “Add Unit” window now remembers all selection filters used on the last unit addition and re-applies them whenever called up. This makes it easier to rapidly add different but similar units.

Window - Air Ops 001

* You can now edit aircraft names and delete specific aircraft directly through the Air-Ops window.

* New event trigger: Unit Detected. Fires when a unit (flexibly filtered from side-wide down to specific unit) is detected by the specified side.

* New event-engine addition: Event Conditions. Conditions are managed and added to/removed from events just like triggers and actions. An event without conditions fires normally (probability check etc.). If conditions are present, all of them must be satisfied in order for the event to fire.

* Added new realism option: Unlimited Aircraft Weapons. When enabled, aircraft have unlimited loadout packs available even if their bases are not loaded with weapons at all. This is not recommended for realistic prolonged scenarios (it makes airpower too omnipotent) but can be useful for quick experimentation.

* Added first event condition: Side posture. (e.g. Side-A must consider Side-B as [friendly|neutral|unfriendly|hostile]). The condition also has an optional “NOT” operator (e.g. Side-A must not consider Side-B as friendly).

* Significant addition to patrol missions: Prosecution Area. Prosecution Areas (PAs) act much like a forbidden zone in that contacts appearing within them are marked for interception, but they also _restrict_ the extent at which interceptions will happen. So if you want your fighters to e.g. be triggered only by bandits within 200nm of a protected HVU instead of “waking up” to contacts thousands of miles away, PAs are the solution.

PAs Act as a “leash” for assets on a patrol; they effectively determine the extent to which the patrol assets can give chase to receding targets. If the bandit moves out of the PA, the defender is forbidden to follow (though it can still engage with weapons if feasible). This solves the problem of patrol assets over-extending themselves during interception, quite often falling victims to feints/traps.

PAs are supported in the UI by modifications to the Mission Editor UI, and are populated by reference points in the same way as existing patrol areas. They are empty by default, and in this case the AI behavior is the same as before (intercept bandits far away etc.), to facilitate existing scenarios. Units that are assigned to a patrol with a prosecution area will target & engage only contacts that are within this area (or their patrol area). If they are not on patrol or their patrol does not have a prosecution area, the existing AI rules apply. This makes it possible to create SAM ambushes (shoot at far less than max range), divide areas of responsibility for multiple patrol forces etc.

For PAs to work, the patrol option “Investigate targets outside contact area” needs to be enabled. The doctrine option “engage targets of opportunity” _overrides_ the prosecution area limit.

* Grouping land units with ammo dump type units with matching weapons records  for replenishment. This allows for reloads which means that SAM, artillery and land units can be replenished.

* Added sprint-and-drift behavior for units that are part of a surface or sub group (the most common case requiring this behavior). This behavior is enabled by going in the formation editor, selecting the desired unit, and ticking the checkbox “Sprint and Drift” on the formation editor toolbar.

*When rebuilding a scenario with the latest database, the simulator will automatically re-shuffle the aircraft and move those that are ready in less than 60 minutes to the flight deck. Ditto when readying an aircraft in the scenario editor and selecting ‘Ready Immediately’. It may be worth noting that the simulator is not topping up the deck completely, it is keeping some free space on the deck for the recovery cycles since landing aircraft may have to park there in case all elevators are busy.

* Major new addition: Lua scripting. See here for details and examples: http://www.warfaresims.com/?p=3565 Special reserved variable for Event Engine: UnitX. This is a global (scenario-wide) variable representing the active unit responsible for firing any of these triggers:

  • Unit is damaged
  • Unit is destroyed
  • Unit is detected
  • Unit enters an area
  • Unit remains in area

So whichever unit causes of the above triggers to fire, it gets tagged as “UnitX”. You can then use this special variable as a reference in any Lua-mapped function that takes a unit’s name/ObjectID as a parameter (so for example you can dictate “whichever unit enters this area will get assigned to this mission”).

* New Event Trigger type: “Scenario is loaded”. This fires immediately once a scenario is loaded from file and before it is presented to the player/editor, _if_ the scenario current datetime is at or before the “start of scenario” datetime. This enables doing initial setup actions (e.g. randomize unit locations) before the player starts the scenario.

* New Scen-Edit feature: Clone a unit (ie. copy a unit and also copy all customizations of the original). The keyboard shortcut is Shift + C. The only limitaton currently is that modifications to an aircraft’s loadout (extra weapons etc.) are not copied.

* Major new ScenEdit feature in v1.07: Scenario Attachments (a.k.a. auto-bundling). See detailed description here: http://www.warfaresims.com/?p=3710

 

NEW IN v1.08

* Added “Reset All Side Scores” button on Losses & Expenditures window.

* New side-level option (editable on “Edit Sides” window): Can Auto-track civilians. When enabled, the selected side automatically detects and tracks civilian/commercial units. This simulates access to publicly available traffic sources like AIS, and can be handy for piracy & law-enforcement scenarios.

* Various tweaks to mission editor UI.

 

NEW IN v1.09

* New Lua action: Change the side of a unit

* New Lua action: Explode a warhead.

* New event condition: “Scenario Has Started”. Useful for scripting actions that you want to happen only at the very beginning of a scenario (e.g randomizing start positions).

* New attachment type: Local video file (local = stored on hard drive, not streamed e.g. YouTube). Has option for full-screen or windowed mode, and optional delay before playing. The video file must be in WMV format (the “Movie Maker” application included in Windows can easily convert almost any media format to WMV).

* When adding new aircraft, if the player does not specify a callsign, one is automatically assigned.

* FIXED: Right-click while in “add unit” status opens up the “Add Unit” window in addition to panning the map.

 

NEW IN v1.10

* NEW MAJOR FEATURE: Special Actions. These are very similar to TOAW’s “Theater Options”, in the sense that they allow the player to execute a number of pre-defined special actions that may bring favorable results (or not – often the best way to model such actions is as high-risk gambles that can spectacularly backfire). Contrary to TOAW, Special Actions can range from the strictly tactical (“Host this SOF squad into the building”) through operational (“request nuclear release“) all the way to grand strategic (“The Assad regime requests assistance from the Russian Federation and makes Latakia airbase and Tartus harbor available to their forces”).
Special Actions are created and edited through ScenEdit (Editor -> Event Engine -> Special Actions) and are made available to the player in normal play mode via Game -> Special Actions (disabled actions are hidden). Such an action may be one-off or repeatable (through Lua it can also be made active for only a finite number of calls, ie. “you may request this 3 times”). From a technical standpoint, Special Actions act as containers for Lua scripts so they can be very powerful. Once an action is executed a message (generated by the script) is shown to the player as to what happened as a result of the action, so scen authors are encouraged to be elaborate in their explanations.
* You can now add a new magazine to a unit directly through the ScenEdit UI (instead of using the SBR). To do this, select the unit, bring up the “Magazines” window and click on the “Add Magazine” button.
* Major new EE feature: Lua scripting on Conditions. You can combine this with the existing event triggers to create very elaborate conditional triggers.
* The existing “Side Posture” and “Scenario has started” event conditions now have Lua counterparts: ScenEdit_GetSidePosture(SideANameOrID, SideBNameOrID) and ScenEdit_GetScenHasStarted() respectively.
* You can now order a unit to RTB via Lua: Using the existing ScenEdit_SetUnit method, use the “RTB” key (e.g. RTB=’Yes’)
* You can now host a unit to a suitable parent unit/group (e.g. aircraft to airbase, small boat to larger ship etc.) via Lua. The new method is: ScenEdit_HostUnitToParent(table). Usage example: ScenEdit_HostUnitToParent({HostedUnitNameOrID=’Eagle 1′, SelectedHostNameOrID=’Bitburg AFB’}) . The unit to be hosted is ‘snatched’ either from mid-air or from its current host.
* The editor textboxes for Lua scripts now have a much larger character limit (tens of millions).
* New EE feature: You can now clone events, triggers, conditions and actions
* New Lua method: ScenEdit_SetSpecialAction. Usage example: ScenEdit_SetSpecialAction({ActionNameOrID=”MyAction”, IsActive=”True”, IsRepeatable=”False”}). This is very handy if the scen author wants to activate/deactivate special actions depending on other events happening.
* New Lua method: ScenEdit_GetSideIsHuman(‘SideNameOrID’) . Returns ‘Yes’ if the referenced side is currently under human control, ‘No’ otherwise.
* New Lua method: ScenEdit_SetLoadout. Usage example: ScenEdit_SetLoadout({UnitNameOrID=”Viper #1″, LoadoutID=631, TimeToReady_Minutes=45, IgnoreMagazines=”False”})
* Scenario authors can now edit a unit’s fuel level through Lua. Usage examples:
a=ScenEdit_GetUnit{side=’a’,name=’test’}
print(a.fuel)
{ [3001] = { current = 240000, max = 240000 }, [4001] = { current = 3750, max = 3750 } }
fuel = a.fuel
fuel[3001].current=1000
a.fuel = fuel
* Added “Copy unit ID to clipboard” command to the ScenEdit section of the unit-context menu. This makes it much faster to grab a specific unit’s unique ID and start using it on Lua scripts (vs. getting it from the SBR template file).
* An extra criterion, “minimum classification level”, has been added to the “Unit Detected” trigger. This allows the scenario author to tailor the desired level of target classification reached (everything from simply “detected” all the way to “precise ID”) before the trigger is actually fired. For backwards compatibility, the default level is “Detected – Known Domain”.

NEW IN v1.11

* NEW: Spatial polygon validation: All windows with area editors now have a ‘Validate Area’ button that allows the player to quickly determine if the polygon used for the area (exclusion zone etc.) is valid or not. The simulator will also display the polygon in the tactical map. This includes areas used by the event engine. Furthermore, all areas in a scenario are validated on load, and the player will be presented with warnings if the scenario contains invalid polygons.

* FIXED: When cloning an EE SimEvent, the lists of Triggers/Conditions/Actions pointed to the very same instances (thus when e.g. removing a trigger, the trigger would be removed from both events).

NEW IN v1.11 SR1

* SBR/Clone tweak: The cloned unit gets the same heading as the original unit.

* You can now enable/disable non-navigation zones and exclusion zones, in two ways:
a) Through the UI, as the grids on the relevant windows have an extra “Is Active” checkbox for each zone entry.
b) Through Lua. Usage example:
mySide = VP_GetSide({Name=”US”})
myZone = mySide:getnonavzone(“AAW Zone 1”) [Alternative for excl. zone: myZone = mySide:getexclusionzone(“Forbidden Zone 1”)]
myZone.isactive = “True”/”False”

Inactive no-navigation zones are not rendered on the map at all. Inactive exclusion zones are rendered with a dash line (instead of solid).

NEW IN v1.11 SR4

* ScenEdit Tweak: The “DB Migration” window displays visual confirmation of the target DB.

 

NEW IN v1.11 SR7

Large number of new & updated Lua methods:

Updated Lua function: ScenEdit_SetUnit() – added keys: COURSE, SPEED/THROTTLE, PROFICIENCY, DEPTH, REFUEL, FUEL
Updated Lua function: ScenEdit_AddUnit() – added keys: BASE
Updated Lua function: ScenEdit_AssignUnitToMission() – added keys: ESCORT (for strike missions)
Updated Lua function: ScenEdit_SetDoctrine() – added keys: ESCORT, additional doctrines, withdraw/docking
Updated Lua function: ScenEdit_SetReferencePoint() – added keys: TYPE, RELATIVETO, LOCKED
Updated Lua function: ScenEdit_SetLoadout() – allow READYING a/c to be updated
Updated Lua function: ScenEdit_RunScript() – allow to run from attachmentRepo attached to scenario
Updated Lua function: ScenEdit_UseAttachment() – fixed to allow Lua Scripts

New Lua function: ScenEdit_AddWeaponToUnitMagazine(table) – reload magazines
New Lua function: ScenEdit_AddReloadsToUnit(table) – reload unit mounts
New Lua function: ScenEdit_GetSideOptions(table) / ScenEdit_SetSideOptions(table) – adjust side awareness, proficiency
New Lua function: ScenEdit_SetUnitDamage(table) – damage components
New Lua function: ScenEdit_AddMission(side,..) / ScenEdit_GetMission(side,mission,…) / ScenEdit_SetMission(side,mission,…)
New Lua function: ScenEdit_DeleteMission(side,mission,…)
New Lua function: ScenEdit_AssignUnitAsTarget(contact(s),mission)
New Lua function: ScenEdit_GetReferencePoints(table) – returns table of reference point details
New Lua function: VP_GetContact(table) – get table of contacts
New Lua function: ScenEdit_RefuelUnit(table) – make unit refuel as per AAR doctrine
New Lua function: ScenEdit_SetEvent(‘EventNameOrId’, table) / ScenEdit_GetEvent(‘EventNameOrId’)
New Lua function: ScenEdit_GetSpecialAction(table) / ScenEdit_ExecuteSpecialAction(‘EventNameOrId’)
New Lua function: ScenEdit_GetContacts(side) – contacts from the side’s perspective
New Lua function: ScenEdit_GetContact(table) – a contact’s details
New Lua function: ScenEdit_FillMagsForLoadout(table) – fill magazine with a number of a specific loadout
New Lua function: ScenEdit_AttackContact(attacker, contact, table) – automatic or using specific weapon
New Lua function: ScenEdit_UpdateUnit(table) – updates sensor/mounts on unit
New Lua function: ScenEdit_SetDoctrineWRA(table) / ScenEdit_GetDoctrineWRA(table) – WRA doctrine
New Lua function: ScenEdit_UpdateEvent(eventName, table) – update Lua script on selected event
New Lua function: ScenEdit_GetWeather( table ) – at scenario or unit level
New Lua function: Tool_DumpEvents() – dumps out all events to an XML file in ‘\Scenarios’; useful to examine all events without clicking-through the ScenEdit UI

New exposed Lua object: unit [ mounts, magazines, base (hosted at), proficiency, components, mission (returns mission object rather than name),group (returns mission object rather than name), fuelstate, weaponstate, manualSpeed, manualAltitude, AirborneTime, loadoutdbid, throttle, weather, method :filterOnComponent (filter components on a type eg sensor), :rangetotarget( contact id) ]
New exposed Lua object: side [ awareness, proficiency ]
New Lua object: group [ unitlist ]
New Lua object: mission [ unitlist, targetlist, starttime, endtime, active, SISH, AAR, plus ‘mission specific details’ ]
New exposed Lua object: referencePoint [ locked, relativeTo ]
New exposed Lua object: contact [ type, potentialmatches, side (contact’s), missile_defence, age, fromside (who made the contact), FilterOut, weather, method :DropContact() ]
New exposed Lua object: doctrine [ additional doctrines ]

General Lua:
* ADDED: Lua: Add plotted course when inserting unit
* ADDED: Lua Function: Return to port
* Lua commands and response (incl. errors) are now stored to text files on [CMANO]\Logs\LuaHistory_[date & time] .
* NLua library upgraded to 1.3.2 (kudos to MichaelM!)
* Improved error reporting – attempts to show which command and/or line failed
* Improved in-event error handling
* Added Lua history file in \Logs folder
* Allow true/false for boolean values
* Added executing Lua scripts to log (note that this may cause large files!)
* “Copy unit ID from editor” method can handle multiple units
* Added option on Event that can controls logging to the game log; ON by default, but useful for an event that fires quite often
* Lua: Tool_DumpEvents writes to a file (file located in \scenarios as “[scenario title] + events.xml”)
* Lua: Contact type as string and number
* Lua: Doctrine – withdraw & deploy settings
* Lua: Added event names to RunScript
* Lua: carry over event name to RunScript in Sandbox
* Lua: Fixed unitname keyword for SetLoadout()
* Lua: Added ‘unitname’ to Doctrine inline with standard naming
* Lua: Improved error handling. Errors are displayed and execution stops when running in console mode. When running from special-actions, the function returns NIL but the script continues to run. The error is shown in the Lua variable ‘_errmsg_’ and the function in ‘_errfnc_’

Refer to Command Lua (http://commandlua.github.io) for more detailed explanation of exposed objects and functions.

 

NEW IN v1.12

* Lua: Fix manual/desired speed on SetUnit()
* Lua: Enhance EndScenario trigger/action
* Lua: Enhanced “Unit Detected” event trigger

 

 

NEW IN v1.13

* MAJOR NEW: All-new Lua Console v2

* Added warning pop-up to scen authors: When activating AC damage, make sure to deep-rebuild scenario

* Lua: added OODA to unit wrapper
* Lua: SE_AddZone() for no-nav and exclusion zones
* Lua: Added Event handling through Lua
* Lua: Zone wrapper: add property .markas
* Lua: SetUnit() allow .base to be set to change assigned base (using base=nil will make it pick the closest base)
* Lua: SetUnit() – don’t add contact for own side
* Lua: Unit wrapper .autodetectable property (Added new contact code as per the SetUnit() one)
* Lua: Time triggers firing multiplle times (For specific time trigger, it needs to only fire once. If it then fails a condition or probability check, it wont fire this trigger again.)
* Lua: User-driven function checks
* Lua Event: 6,12,24 hour events
* Lua: Option to TransferCargo() (Only for crossloading to ships at the moment. Added property ‘hostedUnits’ to unit wrapper to show boat/aircraft embarked.
* Add hotkey for copying GUID on map (Ctrl+C). This is useful outside of the editor when trying to write Lua scripts.
* Lua: SE_TransferCargo handles other platforms (Improved. Now uses aircraft, facility,ship,submarine platforms. Allows multiple loads to destination unit accounting for existing space used.)
* Lua: TargetFilter() infer subtype from unitclass
* Lua: add weapon details to unit wrapper
* Lua: Contact wrapper – fix and additional properties: speed, heading, altitude, detectedBySide, BDA, emmissions, detectionBy, fixed the side returns that gave the actual object rather than the matching Lua wrapper.
* Lua: Added property firingAt, firedOn
* Lua: tweaked SetLoadout(), property readytime on unit wrapper
* Lua: TransferCargo, UnloadCargo
* Lua: added unitType filters to VP_Side() object (fixed case where weapon target is null, e.g. when weapon is a sonobouy)
* Lua: added new property to all Lua wrappers – .fields (Lists the name of all properties and methods in the wrapper. Useful for verifying names if in doubt!)
* Lua: added new mode to UpdateUnit() (Can now add/remove weapon records)
* Lua: SetUnitSide – handle changing a group unit
* Lua: add :inArea(zone) to unit and contact wrapper
* Lua: added reference to current event on condition (Should be possible to refer to event attributes when checking conditions. The current event reference is called for actions and
triggers)
-SetLoadout() to default some values if passed
-TimeToReady defaults to the loadout ready time
-IgnoreMagazines defaults to false
-unit.readytime – time for aircraft/ship to be ready
* Lua: added wrapper for events, EventX
* Lua: Fixed SE_DeleteMission causing exception
* Lua: Fixed error in XML parsing for SE_GetEvent()
* Lua: Fixed Clone of Event Condition LuaScript
* Lua: added ‘Base’ to SE_SetUnit() + added option to HostParent() to assign a base rather than ‘host’ it. [Not really needed as the new SetUnit() handles setting a base now]
* Fixed: Lua mission wrapper ‘OnStation’ missing (Added to Patrol and Support)
* Lua: SE_GetFormation() and unit/group wrapper
1. Gets info about a formation
2. unit.formation – can change info on unit station keeping
3. group.lead – change group’s lead unit
* Lua: Tool_Bearing()
* Lua: Add LUA_World_GetPointFromBearing()
* Lua: AddReferncePoint() – allow multiple points and bearing/distance
* Lua: Added Area to UnitDetected trigger
* Lua: Fix interactive console printing if old console not opened
* Lua: suppress the doubling up in the history file
* Lua: use of dynamic event for air/ship ops state changing (e.g. aircraft landing)
* Lua: ActiveUnit wrapper now also exposes a unit’s sensors (.sensors property)
* Lua: Added “isOperating” property to ActiveUnit wrapper

Countdown to War Planner: The Operations Planner and multi-missioned units

December 18, 2022 · Posted in Command · Comment 

Command’s “War Planner” update (aka “Tiny”) is set to release in less than a month. Are you ready for Command’s biggest update yet?

In this multi-part series we take a look at the various key features introduced in this massive, FREE upgrade to Command.

Today we are looking at one of the new headline features of War Planner: Multi-missioned units and the Operations Planner.

In this series:


The Operations Planner

Ever wished you had an ATO-like overview of all missions and operations planned or currently executing, their status and hierarchical priorities and dependencies? With units or even entire task forces automatically switching from one mission to the next as objectives are achieved? Wish no more. The brand-new Operations Planner makes this, and much more, a reality.

To fully comprehend this function, it is essential to have a good knowledge of the mission editor in general, and cargo missions in particular. Previously, in Command, a given unit could only be assigned to a single mission. If you wanted to assign the unit to another mission, you would have to manually unassign it from the current mission and then assign it to a new one.

Before we begin: Some nomenclature

Triggers

A trigger in the operations planner is a condition that gets checked each simulated second. If the conditions are met the trigger will execute a specific action. There are two possible actions: start a mission or tag a mission as satisfied.

Mission status

A mission’s status in Command can be either Active or Inactive.

Active means the mission is evaluated by the Command simulation, but it doesn’t necessarily mean that the mission serves a purpose or has units assigned to execute it.

Inactive means that the mission is completely ignored by the simulation until it becomes Active.

IMPORTANT: It is strongly recommended to leave all missions active, especially when working with the operations planner. Set mission as inactive only for draft missions or manually controlled missions.

Mission phases

A mission phase is a new concept introduced with the operations planner and is not related to the existing mission status:

“On Hold”:

The mission has not yet started, the units assigned to the mission won’t execute the mission.

“Satisfied”:

The mission is considered to have achieved enough of its objective for assigned units to consider other missions, but a satisfied mission does not necessarily end. This tag is used for mission triggers and for multi-mission priority.

“Running”:

A running mission will have its assigned mission to execute the mission.

“H-Hour”:

In Command, H-Hour designates the date and time at which the mission designated as the initial mission for H-Hour is to start. H-Hour in Command isn’t strictly an H-hour according military terminology as it can be customized without restriction.

“L-Hour”: 

In Command, L-Hour designates the date and time at which the mission designated as the initial mission for L-Hour is to start. L-Hour in Command isn’t strictly an L-hour according military terminology as it can be customized without restriction.

Understanding the concept of dynamic (aka. multi-missioned) units

The operations planner provides the capability for a single unit to be assigned to multiple missions. Of course, the unit can only execute one mission at a time, but you can now prioritize which mission it should execute. Mission priority is set via the operations planner.

Let’s assume we have a scenario where a group of aircrafts is assigned to a patrol mission. These aircrafts should patrol an area from a given time and then start a strike mission against a group of tanks. Without the operations planner, the player would need to track the time and then manually switch each aircraft to a new mission, at the right moment. Thanks to the operations planner such behavior can be automated, and in a more complex environment, our units could even behave like a reactive AI, aware of the simulation at the strategic level.

IMPORTANT ! A unit without “Dynamic” Checked will be ignored by the operations planner dynamic assignment, if you want a unit to work with the operations planner’s feature you MUST designate it as a dynamic unit.

Notice that since we have toggle “Showing Multi-Mission” we are now allowed to assign multiple mission to a unit, they are still shown in the “Available units” list despite having an assigned mission.

This panel on the right side of the mission editor shows all missions assigned to this unit. The mission in green in the one currently executed by the unit. Missions don’t have an order of execution, but a priority, which is set in the operations planner, as we will see later.

The “Dynamic” checkbox allows the unit to be assigned to multiple missions, units are all unchecked by default to reflect default command behavior.

Below the mission list we can see the current status and phase of the mission. We will see later in the operations planner chapter as “Phase” is a new way of managing the mission dynamically and is closely related to multi-mission:

It is on this screen that you decide to add the unit to all of the missions you want it assigned to. At this point you don’t have worry about priority or to select a current mission as the operations planner will manage this for you.

In above’s example we see that Rafale B is assigned to both the “Air Superiority Patrol” and “Light Tanks Destruction” missions, and the active mission for this unit is the one in green: “Air Superiority Patrol.” Depending on the configuration of the operation planer, this unit may automatically switch to the “Light Tanks Destruction” mission at some point in the future.

Don’t worry if the multi-mission mechanism is not entirely clear to you yet, as the mission editor is only half the story. The next chapter on operations planner will explain the other half.

Interlude: “Mobile facility” vs “Ground unit” and Split / Merge ground units

One of the most significant capabilities brought by the operations planner, is the possibility to have units dynamically change mission. But not all types of units are eligible for this kind of behavior. As part of that, It is important to understand the core difference between:

  • Ground units as facility which is a legacy implementation where ground units are represented as a moving, multi-aimpoint “facility” (see this old post explaining this concept).
  • Mobile ground units, a new implementation, which works like others active units such as aircraft, ships etc.

The first hold a group of units abstractly represented as “mounts”, while the last is a fully simulated individual unit. The core difference that interests us here is that ground units as facility are transported as cargo which doesn’t have an existence in the simulation until it has landed (and spawned).

This means that we can’t assign or queue them a mission until they have landed, and you will not be able to achieve a fully autonomous behavior for your units, in this case.

Cargo operations are now enabled for active units, meaning that all these limitations are now removed. However, you must have the right methodology to achieve this.

Unless you have to achieve backward compatibility or if a database entry is missing, you MUST use ground units, NOT mobiles facilities, to use the operations planner at its fullest.

On the new cargo edition form, note the “type”, at the moment, the database has more content for mobile facilities:

 

Ability to Split/Merge ground units (facilities)

Legacy ground units associated as “facilities” can now be rearranged through this new tool.

Select an eligible unit, such as a landed detachment, right click on it to bring the context menu and click on “Split unit”:

This brings you this menu, with the details of the detachment:

You can also break the detachment into individual units with a single click:

Two eligible units can be merged together:

 

The Operations Planner 

The operations planner adds a new level of interaction between missions and allows units to be dynamically reassigned from one mission to another.

Since the operations planner is sometimes tied to a landing plan, we have here the concepts of H-Hour and L-Hour to indicate overall operational time. These can of course be ignored, or used in a different purpose:

On the top left, one can define the H-Hour and the L-Hour values.

The H-Hour box on the left is where we can define the date and time to start the H-Hour mission. The H-Hour mission is the initial mission in the operation. L-Hour box works identically to H-Hour but they are independent.

Once an H-Hour or L-Hour is hit the respective initial mission can no longer be changed.

The checkbox in the middle ties the H-Hour to the L-Hour, meaning that the time separation will be constant between H-Hour and L-Hour when you modify the time for either.

The spreadsheet in the center lists all the side’s missions. Most columns are informational. Generally, you will be dealing with 2 columns: Priority and Phase.

Mission priority

The priority of a mission does NOT designate his supposed position in a mission execution queue. It indicates to its assigned units how important this mission is at this moment. The mission priority is used by units assigned to multiple missions to decide which mission to execute at any given time.

A unit having a mission in “On Hold” phase will not have this mission evaluated for the active mission evaluation.

Mission phases

A mission phase is a new concept introduced with the operations planner extension, it is not related to the mission status and should not be mistaken with it:

Waiting for trigger: The mission may (or may not) have already started yet but queued units won’t evaluate this mission when choosing one to be assigned to.

Satisfied: The mission is considered to have achieved enough of its objective for its current assigned dynamic units to consider other missions, but a satisfied mission does not mean its ending. This tag is used for mission triggers and for multi-mission priority.

Triggered : A running mission will become a valid candidate for multi-mission units assigned to it. Therefore, a queued unit to this mission may become assigned to it.

A unit assigned to multiple missions will pick the most appropriate mission to be assigned to, based on the priority and the phase of the mission. unless it is already active on a mission that is in “running” phase, or if all assigned missions are in “On Hold” phase.

A unit that is active in a mission in “Satisfied” phase will still evaluate the satisfied mission and may continue that mission if no other missions are available.

Name

Just like for operation, the mission’s name helps for organization. However user’s made Lua sripts might reference a mission by its name and it is recommended to be careful when changing mission’s name in such situation.

Description

This is purely an informational tag and does not affect the simulation at the moment. Use and edit this field to organize yourself.

Generated mission will usually contain some generated information

Type

This is the mission sub type as defined in Command’s simulation.

Execution Time

The time, relative to H-Hour at which the mission is estimated to begin. See the chapter “Working with estimation” for more details.

Bulk actions

Bulk action tools are located on the bottom of the operations planner. These are used to select multiple mission at once and perform simultaneous modifications on them:

Filter

The filter tool is used to do a specific term research on mission and filter the result of this search query:

Triggers 

This chapter is the core of the operations planner capabilities. It allows relationships between mission and a dynamic approach when executing missions.

A trigger is like a set of a condition and an action, if the condition is met, then we do an action.

Command evaluates all these triggers every second.

For mission, there are 2 types of actions:

  • We start a mission (we set the mission’s phase as “Running”).
  • We finish a mission (we set the mission’s phase as “Satisfied”).

It is important to understand that Command doesn’t have a concept of mission completion, when tagging a mission as satisfied, command only indicates that the mission have enough fulfilled its objective to allow its assigned units to evaluate other mission assignment options. Of course all relevant missions have already implicit mission completion mechanisms, a cargo mission will stop operation once the task is done, a strike mission won’t launch again to strike a nonexistent targets , etc…

These 2 actions are tied to a set of conditions.

Starting a mission with triggers

Select any of the mission and look on the right side of the operations planner window. Notice the main block called “Triggers to Start Mission”, and how it is separated into 3 smaller blocks:

These smaller blocks are individual conditions. Checking them means this specific condition will be evaluated.

The dropdown on the right of each smaller block is called a conditional operator.

As you can see there are 3 types of triggers that can start a missions:

  • A time based trigger
  • A mission dependency trigger
  • A Lua script trigger

 

Time-based trigger

This will be triggered when the scenario date reaches the defined H-Hour plus or minus a given duration.

Example #1 : This trigger will be true if we reach H+ 2 hours

Example #2 : This trigger will be true if we reach H- 23 hours

 

Mission dependency trigger

This will be triggered if all missions in “missions to check” are in “Satisfied” phase.

In this example, it will be triggered when “Air Superiority Patrol” mission is in “Satisfied” Phase:

Lua script trigger

This will be triggered if the Lua script contained returns TRUE as a value:

“Finishing” a mission with triggers

It was mentioned earlier that Command does not have an explicit concept of finished mission.

The triggers to tag a mission as “satisfied” work just like the one to start it.

The first trigger is a time based one, it tracks the elapsed time since the mission’s phase has been set to “Running” and will be true once the defined time elapsed.

The second one is a Lua script trigger and work identically to the one in the mission start trigger – it returns the Boolean value of the contained lua script.

Logical Operators

Triggers, in Command, can be tied with logical operators.

Take a look at the picture on the right, representing a set of triggers to start a mission:

We have set all 3 triggers to be checked. On the right of each triggers you can notice a dropdown when you can selected either the OR or AND operator.

For the triggers to return TRUE and therefore start the mission (set its phase to “Running”) each checked trigger is evaluated.

We see in this example that the first trigger has “OR” operator, the second “AND,” the third “OR.”

What it means in this situation is that the second trigger (the one with “AND”) must be true.

In addition the “AND” trigger needing to be true, either of the first or third “OR” triggers must also be true.

If all conditions are met and the current mission’s phases is “On Hold” then the mission will change it phase to “Running”.

Another example (left):

All triggers are checked (and will be evaluated), and each of them have the “AND” operator.

This means that the missions will start when all conditions are true.

 

 

Operations planner and Lua Scripting

Command has already a powerful Lua scripting framework. The operations planner allows the integration of your script as a trigger.

Clicking on “Edit Script” in either the “Triggers to Start Mission” or the “Triggers to Tag Mission as Satisfied” group will bring you to an interface where you can add your script in:

Just like the rest of the triggers, the Lua Script trigger will be executed each second for its associated mission. The Lua script must return a Boolean.

 

Working with estimation

Command is such a complex simulation that giving an accurate estimation of an operation duration could take up to hours of computation. The operations planner provides an instantaneous estimation at the price of reliability.

The operations planner estimation takes into account all the time based triggers and mission dependencies, it simulates a run and then display the estimated execution tie for each mission.

This estimation work only thanks to the user’s input on triggers.

The special case of Lua script

You may have noticed that not all triggers are time-based, some depends on lua script and cannot be reliably predicted. In this case, you will have to manually input a value into the trigger in this trigger, shown on the right.

It is not necessary to check (enable) the trigger, having an unchecked “Time Elapsed” trigger with a value basically tells the operations planner : “Only use this trigger when estimating execution time”. In this example, we assume the mission will be satisfied after 1 hour:

If everything is properly configured, clicking on the “Simulate” button will calculate the execution time, relative to H-Hour for each mission:

Triple whopper: Updated Community Scenario Pack with 28 new scenarios

October 16, 2020 · Posted in Command · Comment 

It has been a busy week, that’s for sure. Yesterday we had the release of the massive v1.02 update and the new Command-LIVE “Sahel Slugfest” scenario, and today it’s the turn of another Command stable, the Community Scenario Pack (CSP). Brandon Johnson (Kushan) has updated the pack with updates & refreshes to existing scenarios, as well as 28 brand-new creations. Let’s take a look:


Airstrikes on Zinder, 2025 – This scenario assumes that in the near future Niger will experience a civil war.  An organization known as the ZLA seeks to establish a separate country in the Nigerien territory of Zinder.  It has already occupied the largest city in the region, also known as Zinder, and is presently operating as a de facto state.

Assalto in Pakistan, 2018 – After the multiple terrorist attacks by Pakistan .. NATO has decided to teach him a lesson .. by sending the nearby Italian fleet.

Baltic Fury 2 – Borscht on Bornholm – In this scenario you are playing the Soviet side and are charged with conducting an airborne and amphibious landing on Bornholm. NATO is on the backfoot so this should be a quick and relatively simple operation, but it’s essential that the island is seized and secured rapidly to allow for future operations.

Carrier Hunt, 2024 – China’s surprise attack hit every US-alliances in North-East Asia. While major military assets in Japan and South Korea took severe damage by Chinese ballistic missile strikes, Chinese forces have captured the Japanese Okinawa Islands and seized control.
Although the United States and its allies have suffered significant losses, they are still far from beaten…
This is a medium, single-sided battleset scenario with a duration of 2 days. You have two US Carrier Strike Groups with mostly three anti-ship weaponry: AARGM, LRASM, and Multi-Mission Tomahawk. Your primary target is Chinese Carrier ‘Shandong’ around Okinawa.

Galveston Gets a Mission, 1960 – Nikita Khrushchev believed that the role of the Soviet Navy was to support the Army, and once referred to surface warships as “molten coffins.”  He did, however, believe that submarines, especially those armed with nuclear missiles, were a good idea.
During the Cold War, both the Soviets and the Americans used submarines to gather intelligence on each other and often tried to sneak submarines close to the territory of their rivals as possible.  They also used cruisers and destroyers to find those submarines and to chase them away.

Greek-Turkish EEZ Conflict, 2021 – In late November, 2019 a diplomatic crisis erupted between Greece and Turkey when Turkey announced it had signed a memorandum of understanding with Libya outlining their maritime boundaries. This particular dispute, amongst all of the other conflicts simmering between the two rivals involved an agreement between Turkey and Libya that defined oil right for a newly found oil field in an area Greece claimed as part of its Maritime Zone (MZ).

Hell of the East, 2019 – In this alternate future, the dispute and arguments between Turkey and the United States of America lead the Presidential Republic to leave NATO in favor of its alliance with Russia.
Due to growing military actions from the Turkish armed forces in the contested waters, Greece agreed to allow the Italian forces to field it’s air defense batteries and part of it’s air force in Greek territories and move it’s Ocean-Capable fleet in International waters.

Leathernecks are Watching, 2025 – This scenario assumes that Indonesia is going through a period of civil unrest.  Separatists in western New Guinea have renewed their efforts to force Indonesia to give them independence.
There is evidence that China is providing the rebels with financial and material support.
The rebels recently seized control of the town of Jayapura and nearby Sentani Airport.  They have also taken two groups of American civilians hostage.
The only American vessels in the immediate vicinity are a surface group centered on (LHA 6) and the attack submarine (SSN 766).

Nile Delta Strikeback, 2012 – Israeli-Egyptian relations, in a grudging peace for 33 years, have once again flared into war. The Israeli Navy has deployed in force off the Nile Delta. Opposing it is only a pair of old Romeo submarines. Command either side for a different experience.

Operation Cachalot, 2023 – Pakistan is in the middle of a civil war between the loyal moderate government and the islamic radicals and the latter are winning. European Union, with France on the front line, is helping the loyal and trying to defuse the situation. Radicals allied groups conduct a surprise attack to France forces in Djibouti and hijack the French research ship Cachalot with 50 sailors on board in the Gulf of Aden, asking for France disengagement and sailing toward Pakistan. The negotiations do not produce any useful results and in a few hours the French merchant Cachalot will reach the main Pakistani port of Karachi. The French carrier group centered on Charles de Gaulle just arrived in the area of operation and is ready to take the merchant back and teach the Pakistan radicals a harsh lesson.

Operation El Dorado Canyon, 1986 – A highly detailed recreation of the April 1986 US air strikes on Libya.
On the 5th of April 1986 terrorists detonated a bomb in a Berlin nightclub. The bomb killed 2 American soldiers and a Turkish woman and injured 229 others, 79 of whom were American.
In response, citing evidence that the government of Libya was responsible, US president Ronald Reagan ordered airstrikes against Libya on the night of April 14/15, codenamed OPERATION EL DORADO CANYON.

Operation Locusta, 1990 – Following the invasion and annexation of Kuwait by Iraq, on September 25, 1990, the Italian Government sent eight multi-role Panzer Tornado IDS fighters (plus two in reserve) belonging to the 6th, 36th and 50th Wing in the Persian Gulf. Operation Desert Shield, which were deployed at the Al-Dhafra air base near Abu Dhabi in the United Arab Emirates.
The use of Italian aircraft in the Desert Storm operation represented the first operational use in combat missions of Italian Air Force aircraft after the end of the Second World War.

Operation Northern Stork, 2018 – Four EuroFighter aircraft from the Italian Air Force took off yesterday from the Grosseto military airport to the airport of Keflavik, in Iceland, to launch the NATO Interim Air Policing operation, called “Northern Stork”. The aim of the operation is to preserve the integrity of NATO’s airspace by strengthening Iceland’s skies surveillance, which does not have the capability and autonomous air defense structures. Italy contributes, with periodic shifts with the other countries of the Alliance, to this NATO mission.

Putin’s War – In the Jaws of the Bear, 2022 – The time had come to take the war to Russia. MAG-31 was to launch SEAD attacks from its base in Norway attacking from the landward flank. The USAF aircraft in Iceland would fly a circular route north of Jan Mayan Island launching a SEAD attack with their decoys, jammers and JASSMs and the USN would follow up that attack with a Tomahawk strike on the major Kola Peninsula naval bases and air fields.

Putin’s War – Midnight Sun, 2022 – The Baltic Crisis finally erupted into a full-scale NATO-Russian/Belorussia conflict on the morning of June 6th. The Baltics and the Suwalki Gap were rapidly overrun by the evening of the 7th with Russian forces reaching Kaliningrad by advancing west along Highway A16/E28 from Vilnius to Kybartai. They then turned southwestward reaching Highway 63 in Poland on the 11th, where they paused.
Under the midnight sun on the 7th Russian air forces bombed the Norwegian expeditionary air base at Banak and ports near Nordkapp.   The war above the Arctic circle had begun…

Putin’s War – Operation Exodus, 2022 – After the onset of Russian military operations against Norway it was decided to move Norwegian Vessels, under maintenance or damaged, to Royal Navy ports and shipyards in the United Kingdom.  Norwegian and British yard workers worked 24/7 to get as many of the vessel’s systems up as possible, and propulsion back online. By the 14th escorts were in place and the exodus to the UK ready.

Putin’s War – The Bodo Express, 2022 – On the morning of the 7th Russian air forces bombed the Norwegian expeditionary air base and port at Banak, near the Nord Kapp. By afternoon Russian paratroopers had seized the air field with Northern Fleet’s 61st Naval Infantry Brigade conducting a follow up landing at the port that evening. The 200th Separate Motor Rifle Brigade crossed the Norway-Russian border that morning brushing aside the tripwire Norwegian outposts. More follow up forces from 80th Independent Motor Rifle Brigade follow on advancing west.

Putin’s War – Threading the Needle, 2022 – As chaos continued to descend upon the Baltic all three nations jointly invoked NATO Article Five asking Brussels for aide. Debate raged in NATO General Council during the late week (June 1st and 2nd) until it was proven on Friday (June 3rd) that “Little Green Men” were appearing more and more frequently in the growing civil unrest. To date, the crisis had been confined to the Baltic States but at 18:00 UTC a French satellite pass noted the Russian SSBNs getting underway from the Kola Peninsula and other satellite passes confirmed the rest of the Northern and Baltic Fleets getting ready to stand up…

Royal Problems, 1962 – Following the Coup of September, 26th, 1962. Egypt immediately recognized the newly declared Republic of Yemen. Supposedly concerned over a possible Saudi intervention from the north and a British move from the south from the Protectorate Aden, Egypt actively supported the new Republic of Yemen.
In October 1962 the situation escalated quickly as the pro-royalist forces gained more and more support from Saudi Arabia. Additionally the United States of America sent weapons and aircrafts to the Kingdom of Saudi Arabia.

South Atlantic War, 1982 – Sneaky Beakies in South Georgia – Following the successful Argentinian occupation of the Falklands Islands and South Georgia, the first steps in the UK military response was to start to gain ground-level intelligence on the occupying forces.
This scenario is playable by the UK side only and re-creates the covert insertion of SBS reconnaissance teams by the SSN HMS Conqueror on the night of 18/19 April 1982.

Sumatra Crisis 1 – Mayday, 2022 – Indonesia is under a civil war, facing separatist rebels in North Eastern Sumatra, getting extensive support from abroad, against the official government. To stop the foreign assistance, Indonesian Navy started to board and inspect some merchant ships passing through Strait of Malacca and along the western Sumatran coast that could provide help to the rebels. More than one time ships coming and going from Singapore port were harrassed, causing considerable concern and tension. After a few days Singapore Navy started patrols along their line of communication to ensure freedom of navigation. The next time an Indonesia patrol boat stops and inspect a friendly merchant, hopefully Singapore Navy will be in position to perform a show of force.

Sumatra Crisis 2 – Trade Paralisis, 2022 – After the strong Singapore reaction to Indonesia inspections and harassment to merchant traffic around Singapore, Indonesia government stopped using ships for the activity and resorted to submarines, sinking any vessel suspected to bring equipment to the rebels in the Strait of Malacca. This is a inacceptable limitation for Singapore lines of communication, heavily dependent on naval traffic transiting in the strait. A special task force is immediately assembled to hunt the enemy submarines.

Sumatra Crisis 3 – Singapore Surprise, 2022 – In a final step to reduce merchant traffic providing help to Sumatran rebels, Indonesian Navy started placing mines East of Palau Lingga Island in Malaccan Strait. Singapore Navy immediately moved heavily escorted mine countermeasures vessels (MCV) to remove the weapons and establish full freedom of navigation in the area. This time Indonesia forces are ready to react in force and teach Singapore a harsh lesson.

The Desperate Hours December, 1985 – World War Three is entering its third month. Amazingly neither side has yet resorted to nuclear weapons but the balance of power is gradually shifting. Younger members of the Politburo prevented the old guard from implementing the “Seven Days to the Rhine” plan with its first use of over 600 nuclear weapons, arguing the Warsaw Pact’s conventional forces can carry the day.
In Moscow, the balance of power is shifting, the ministers who opposed the “Seven Days to the Rhine” plan have now been discredited and the nuclear war hawks have neutralized them. NATO intelligence begins to pick up indications of Soviet preparations for a nuclear strike on the Continental United States (CONUS), Alaska, the UK and France. NATO navies are out of position for this with most forces involved in the Battle of the Atlantic and reinforcing Israel in the Med. USS Pharris FF-1094, charged with defending the GIUK Gap, and a few P-3s are all that stands between a Soviet Yankee reinforcing Soviet nuclear forces in the Atlantic and maybe the tipping point in the balance to nuclear war.

The Laser Dance, 2024 – A few hours ago, China declared war on the United States and its two major alliances in the Pacific. Right after the war declaration, a massive Chinese ballistic missile strike had initiated. Many air bases in Japan and South Korea have neutralized, their air forces in the region suffered critical losses.
When a large scale of Chinese naval activity is detected near Okinawa Island, the United States Pacific Command made a decision to save one of its hidden cards, a Surface Action Group which was conducting tests of new weaponry in the region.

The Missiles of October Part Deux, 2020 – During the Spring of 2020, the new Coronavirus “COVID-19” strain caused serious disruption to the world order and economic systems, diverting the West’s attention from military matters to lock downs, market crashes and sealed borders. Quietly ties between Russia’s President Putin and Partido Comunista de Cuba (PPC), First Secretary, Raúl Castro warmed over this period of disruption. By late May, Russian engineers began construction on a series of bunkers south of Habana (Havana) which bore a striking resemblance to similar bunkers recently completed in Kaliningrad.
In mid-August Russian antishipping missiles took up position along the Florida Straits. Between 15 to 25 September, as chaos reigned in American and European cities, several Russian ships docked in Cuban ports disgorging Intermediate Range Cruise Missiles and their Transporter-Erector-Launchers (TELs). Satellite imagery took several days to analyze, due to the virus, but by October 3rd it was obvious that Iskandar missiles were being positioned in Cuba. The clock had been turned back 58 years!

The Olutanga Rebellion, 2020 – The Philippines has long struggled with civil unrest.
This scenario assumes that a separatist group has seized control of much of the island of Olutanga.

Two Cutters in the Gulf of Mexico, 2020 – In war and peace, the United States Coast Guard wages an endless battle to protect America and Americans from criminals and, sometimes, their own stupidity.


The new community scenario pack is, as always, available for download at the WS site: http://www.warfaresims.com/?page_id=1876 , and also on the Steam workshop.

The CSP now proudly counts 549 scenarios in its stable!

Next Page »