Skip to content

A first mission step by step

Here a simple mission is built whole and in order: the addon, the world, characters, groups, vehicles, zones, markers, the description. The result is a working TvT mission for two sides — no spawn selection, no elaborate mapping — but one that can already be started and played. If you only need the short list of steps, it is on the Quick start page.

In the example: Cain (the Kolguev map), two sides — the US (Delta Force) and the USSR, the US task is to capture a Soviet base. The finished result is published on the Workshop — ECHOLobby SupercoolMissions: download it and see how it is put together.

Create a project in the Workbench launcher and tick EchoLobby in the dependencies. Without it the Resource Browser has no gamemode, no zones and no lobby tools.

A new project with the EchoLobby dependency

A mission is a sub-scene over the terrain’s world: you don’t change the terrain itself, everything of yours goes into a separate file.

  1. Find the world of the terrain you need in the Resource Browser, for example ArmaReforger/worlds/Cain/Cain.ent — that is the Kolguev map, and open it in World Editor.

    Finding the base world in the Resource Browser

  2. Create new World (Ctrl+N).

    The Create new World button

  3. Choose Sub-scene (of current world).

    Choosing the world type: Sub-scene

  4. Save the sub-scene into your addon — create a worlds/ folder in it and name the file after the mission.

    Saving the sub-scene into the addon’s worlds folder

Everything else goes into this sub-scene.

Place the Prefabs/MP/Modes/EH_GameMode_Lobby.et prefab in the world. All lobby settings live on it — see Gamemode settings; for now they can be left alone.

The lobby gamemode in the world and its parameters

Next to it place Prefabs/AI/SCR_AIWorld.et or the variant for your terrain, for example SCR_AIWorld_Cain.et. Without it groups don’t show up in the lobby.

SCR_AIWorld in the world

A lobby slot is a character placed in the world. The easiest way is to take vanilla ones, already dressed and armed, and duplicate them into your addon.

A faction’s characters live in ArmaReforger/Prefabs/Characters/Factions/…, for example BLUFOR/US_Army/GreenBerets/Suppressed.

Vanilla faction characters in the Resource Browser

Select the roles you need, right-click — Duplicate to → your addon.

The prefab context menu: Duplicate to

Give the copies a prefix of your own so they aren’t mixed up with the vanilla ones.

The Duplicate File dialog with a new name

The duplicated characters in the addon

Open the character’s prefab and press Edit Prefab — it opens in prefab edit mode.

The Edit Prefab button of a character prefab

Add the EH_LobbyCharacterComponent component, enable Is Playable and fill in Name — the role the player sees in slotting.

EH_LobbyCharacterComponent with Is Playable and the role name

Repeat for every role of both sides.

The same for the USSR characters

More on the fields: Groups and slots.

A group is an SCR_AIGroup with a list of characters. Take the faction’s base group (Group_US_Base.et) and Inherit in → your addon: the group inherits the faction’s settings and you only change its contents.

The group prefab context menu: Inherit in

In the inherited group:

  • put your prefabs into the list of characters — the order in the list is the order of slots in the lobby;
  • fill in Group Name in the Lobby category — the squad’s name in slotting.

The group’s contents and Group Name in the Lobby category

A recommendation: set Default Formation to Row in AIFormationComponent. Then the characters stand in a line in the editor, and the group is easier to place and look over.

Default Formation = Row in AIFormationComponent

Do the same for the other side.

The USSR group is set up the same way

Everything of yours is better kept in layers — one layer per kind of object for each side. Right-click the mission in the Hierarchy — Create layer.

Creating the US_G layer

Make the layer active (double-click it) — new objects go into it.

The active US_G layer

Place the groups around the world.

The groups placed in the world

Create the layers for markers and vehicles, and make the vehicle layer active.

The US_M and US_V layers

Place the vehicles.

Vehicles placed next to the groups

The layer scheme ECHO missions follow: US_G — groups, US_M — markers, US_V — vehicles, US_Z — zones, Mapping — objects placed in the world. And the same for the other side.

A group’s callsign is made of a company, a platoon and a squad. It is set for one group at a time, in either of two ways:

  • in the group’s SCR_CallsignGroupComponent — the Company, Platoon and Squad Callsign Custom fields;
  • in ECHO Missions Tool on the top panel of World Editor: select the group, put the same three numbers into the Callsigns fields and press Assign callsigns.

A group’s callsign in SCR_CallsignGroupComponent

This is already done for all of the side’s groups at once. Select them and open the tool.

ECHO Missions Tool with the groups selected

Press Rename groups — the groups get entity names after their callsigns, like US_0_0_0. Then make the marker layer active and, with the groups still selected, press Spawn Marker.

The renamed groups and the created markers

The entity names are later needed by vehicles and spawns, so rename the groups before anything else.

Assign a vehicle to a group: the Assigned Group Entity Name field takes the group’s entity name. Then the squad’s vehicles are shown in slotting, and on a chosen spawn they move together with the group.

Assigned Group Entity Name on a vehicle

Select the vehicles and press Spawn Marker — their icons appear on the map.

Vehicle markers created by the tool

Repeat steps 6–9 for the other side.

The groups, vehicles and markers of the USSR side

All zones are polylines: place the prefab, select Vector Tool on the top panel and, holding Alt, click in the world — every click adds a point of the outline.

Place Prefabs/Zones/EH_Polyline_FreezeZone.et and draw the side’s starting area.

The freeze zone in the world

In EH_FreezeZoneComponent set Target Factions to your side and Countdown Seconds to the length of the freezetime; if you like, forbid shooting and vehicles inside.

The EH_FreezeZoneComponent settings

The same entity has EH_MapOverlayComponent — how the zone looks on the map: fill, hatching, outline, who sees it and in which states.

How the freeze zone is drawn on the map

In detail: Freezetime and Zones.

To simply draw something on the map — the enemy base as an objective, say — place EH_Polyline_Zone.et and outline the area.

A polyzone around the Soviet base

In EH_MapOverlayComponent set the fill and outline colors and who sees the zone.

The settings of the objective polyzone

A boundary you may not leave is made by EH_Polyline_KillZone.et. Outline the whole area of operations and put both sides into Target Factions in EH_KillZoneComponent.

A kill zone along the area boundary

In its EH_MapOverlayComponent enable Fill Outside — everything outside the area is then darkened on the map.

Fill Outside on the area boundary

Place two Prefabs/Editor/MapMarker/MapMarkerDefault.et prefabs — one marker per side.

Two markers in the world

The icons are conveniently taken from the vanilla UI/Imagesets/Conflict/ConflictIconsSet.imageset: Task_Attack for the attackers and Task_Defend for the defenders.

The ConflictIconsSet imageset and its quad names

In EH_MapIconComponent put the imageset into Icon Texture, the icon’s name into Icon Name, the label into Marker Text, your side into Target Factions, and the states the marker is shown in.

The US task marker

The USSR task marker

In detail: Map icons.

Fill in the Mission Descriptions list on the gamemode: a common section for everyone and a section of tasks for each side, through Target Factions.

The mission description sections on the gamemode

In detail: Mission descriptions.

The last step is the mission file. It sets the name, the author and the player count, and it is what the server starts.

Create a Missions/ folder in your addon, right-click inside it and choose Create Resource → Config file. In the dialog pick the SCR_MissionHeader class.

Creating the mission config in the Missions folder

Fill in the fields: World — your sub-scene, Name and Author — they go into the lobby header, Game Mode and Player Count — the label of the mode and the number of players. The file name usually carries the number of slots, for example helloworldmission_48.conf.

The filled in mission header

The Systems Config field belongs to restoring a mission after a server restart — that feature is still in development, see Mission header.

Start the mission and go through its states: waiting, slotting, briefing, the game.

Waiting: the map and the mission description

Slotting: the groups and slots of the US side

The US briefing: the task and the area

The US briefing: zones and markers on the map

The USSR briefing

The USSR briefing: zones and markers

The start of the game

What should match: the groups and slots are there, the vehicles are shown in the group’s row, the zones and markers are shown to the right side in the right state, the freezetime ends. What it all looks like: Mission states.

Before releasing a mission, run World Editor → Plugins → ECHO Mission Validator and fix everything marked ERROR.