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

December 18, 2022 · Posted in Command 

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


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.


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.


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


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.


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.


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.


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


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:


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


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:


Leave a Reply

You must be logged in to post a comment.