Planned_assault_text_logo

Here you'll find some examples of PlannedAssault created missions and background information for those missions.


PlannedAssault Tutorial Mission

Downloads:

The 'BMPs for breakfast' is the mission resulting from the 4 minute edit session as shown in the PlannedAssault tutorial mission (as shown on YouTube here).

To play the generated mission, a several ArmA mods need to be installed, including ACE, CWR islands, BTR-80, CH Abrams, etc. This is explained in the readme.txt file included in the mission's .zip file. This readme.txt file also includes url's to the mods required. As an alternative, the 'Planned Troubles' mission provides a similar battle requiring fewer mods.


Figure 1. Terrain analysis to determine most likely hostile avenues of approach into Lolisse, for vehicles and dismounts.

Generated plan

The plan for the Russian attacking task force is illustrated below. The first image shows 'abstract' tasks at different levels of hierarchy (mission, objective, team, tactics, and units) whereas the second image shows the resulting 'concrete' tasks for each of the eight units involved.


The top-level mission task is refined into a single 'clear objective' task. This task in turn is refined for the ground units into a formation attack, preceded by an assembly in the form-up area and a move to the assembly area. After the attack, the task force ground units regroup. Synchronized with the formation attack, planned fire-support is provided by units Igor (static artillery) and Leonid (rotary-wing CAS). As part of the move to the assembly area, the two IFV platoons D and E use their ability to transport infantry to quickly bring units A and B to the assembly area. There, units A, B, D and E each occupy a lane in task force's formation.

Figure 2. A breakdown of the mission plan into abstract tasks at different levels of hierarchy. Capital letters 'A' through 'L' refer in the task row refers to units Andrei through Leonid. (Click to see larger image.)


Figure 3. The mission plan expressed in the resulting unit tasks. (Click to see larger image.)



Tactics and Planner Methods

Planned fire support is sequential, with one unit offering fire support at the time per objective. When different fire support units are available, the order in which they are scheduled is artillery, fixed wing and rotary wing. It's bad practice to have aircraft flying around during an artillery mission...

Team defense of an objective performs terrain analysis to identify the most likely and suitable avenues of approach for the attacker, and attempts to place defensive units into sectors covering these approaches.


Low-level tactics and 3rd party scripting add-ons

Planned artillery fire is implemented by invoking a script that mimics human input for Viper's single-player artillery add-on. The great advantage of using Viper's add-on are the messages and sound bites that inform the player when the rounds are fired and when they are about to impact ('splash-splash-splash'). A problem with this add-on is that it assumes the player is actually using the artillery, so it always explicitly sends messages to the player. In PlannedAssault missions, the mission script might use artillery against the player; due to Viper mod's assumption, the player is still being informed of the opponent's artillery strike. Modifications to Viper's add-on are required to fix this.


Planned fixed-wing CAS is implemented by calling and including Mandoble's Mando Bombs ArmA scripts. These script do a great job of vectoring a CAS aircraft and having the aircraft perform multiple bomb runs on hostile units in a designated area. Downside of the scripts are (a) the inability to have aircraft return to their station, (b) the behavior to not engage strong infantry units when hostile vehicles have not be detected.


On call fire support is implemented by generating detection areas (sensors) in the mission script and by a set of home-brew functions that manage available CAS units and CAS requests upon spotting hostiles in detection areas. Typically the detection areas are placed just in front of defensive sectors.


Generated mission

Even without playing the mission, the mission and corresponding scripts can be inspected with any text editor. Here are a few interesting fragments: showing how the resulting mission is clearly commented.

    class Groups
    {
        items=17;
        // WEST / Bravo
        // 18 man USMC LAR dismounts (woodland).
        // tags: armed,infantry,light_AT,mg
        class Item0
        {
            side="WEST";
            class Vehicles
            {
                items=18;
                // 0311C Automatic Rifleman
                class Item0
                {
                    id=0;
                    lock="UNLOCKED";
                    position[]={5150.0, 0.0, 10725.0};
                    rank="PRIVATE";
                    side="WEST";
                    skill=0.6;
                    text="Bravo03";
                    vehicle="ACE_USMC0311C";
                };
Script fragment 1. Selected units are translated into groups of vehicles, with comments indicating the unit's properties and background.
            class Waypoints
            {
                items=4;
                // Bravo mount Echo (as part of MoveTeam)
                class Item0
                {
                    combat="CARELESS";
                    combatMode="BLUE";
                    expActiv="myFn = compile loadFile ""get_in_transports_distributed.sqf""; [grpBravo, grpEcho] call myFn;";
                    position[]={4987.5, 57.9, 10737.5};
                    synchronizations[]={0};
                    class Effects
                    {
                    };
                };
                // Bravo dismount Echo (as part of MoveTeam)
                class Item1
                {
                    combat="COMBAT";
                    combatMode="YELLOW";
                    position[]={5587.5, 71.6, 11187.5};
                    speed="FULL";
                    synchronizations[]={1};
                    type="GETOUT";
                    class Effects
                    {
                    };
                };
Script fragment 2. Transport of infantry is taken care of, and turned into a script. Note that instead of a traditional GET_IN a script call is used, because ArmA's GET_IN is restricted to loads a group into a single vehicle of the transporting group.
    class Sensors
    {
        items=13;
        // WEST / Hold Amy [0]: Hold this position at all cost.
        // Logic combination of obj_0_Amy_held_by_WEST, obj_0_Amy_held_by_WEST_until_mission_end, obj_0_Amy_conquered_by_EAST.
        class Item0
        {
            age="UNKNOWN";
            expActiv="obj_0_Hold_Amy=true; ""0"" objStatus ""Done"";";
            expCond="obj_0_Amy_held_by_WEST and obj_0_Amy_held_by_WEST_until_mission_end and !obj_0_Amy_conquered_by_EAST";
            expDesactiv="obj_0_Hold_Amy=false; ""0"" objStatus ""Failed"";";
            interruptable=1;
            name="s_obj_0_Hold_Amy";
            position[]={5568.8, 0.0, 11212.5};
            repeating=1;
        };
        // WEST / obj_0_Amy_held_by_WEST: WEST seizes objective (WEST success)
        class Item1
        {
            a=100;
            activationBy="WEST SEIZED";
            age="UNKNOWN";
            b=100;
            expActiv="obj_0_Amy_held_by_WEST=true;";
            expDesactiv="obj_0_Amy_held_by_WEST=false;";
            interruptable=1;
            name="s_obj_0_Amy_held_by_WEST";
            position[]={5568.8, 0.0, 11212.5};
            repeating=1;
            timeoutMax=60;
            timeoutMid=60;
            timeoutMin=60;
        };

Script fragment 3. Objectives are translated into a combination of sensorts.