Skip to content
Changelog Config Builder

Naming Conventions

Medusa uses Dot-Echelon notation to discover assets and infer command hierarchy from DCS group names. The system is derived from how internet domain names work - dot-separated segments read from left to right, where each segment places the group one level deeper into an organizational hierarchy.

The sole purpose of Dot-Echelon notation is to confer command hierarchy. You can use as many or as few echelon levels as you want - from zero (flat network) to as many as you can dream up (I’m sure at some point DCS will crash, but go off).

{prefix}.{echelon}.{echelon}.{echelon}...

Segments after the prefix read left-to-right, top-down - highest echelon first, unit last:

red.1div.1bde.1bn.sa10_battery
| | | | +-- Unit (sa10_battery)
| | | +-- Battalion
| | +-- Brigade
| +-- Division (highest echelon)
+-- Prefix

Read left to right, top down - just like a military mailing address. Division, brigade, battalion, unit. The opposite of how domain names work.

There is no limit to the number of echelon levels. These are all valid:

red.sa10 - No hierarchy (flat)
red.north.sa10 - One echelon
red.1bde.1bn.sa10 - Two echelons
red.southern_cmd.1div.1bde.1bn.sa10 - Four echelons

If you don’t need hierarchy, just use the prefix and a label. If you’re migrating from another IADS script, you just need to add the prefix to your existing group names:

RED SA-10 Bandar --> red.SA-10 Bandar
RED SA-6 North --> red.SA-6 North
RED EWR Bigbird --> red.EWR Bigbird
RED Tor Point Defense --> red.Tor Point Defense

This creates a flat network with no command hierarchy - every group reports directly to the network. You can migrate to Dot-Echelon hierarchy later by renaming groups.

Special tokens anywhere in the group name identify non-battery roles:

TokenRoleEntity Created
ewrEarly Warning RadarSensorUnit
gciGround Controlled InterceptSensorUnit
awacsAirborne Early WarningSensorUnit (airborne)
hqHeadquartersC2Node
(none)Attribute-classified groupBattery, SensorUnit, or MANPAD group

AWACS groups must contain an aircraft with the DCS AWACS attribute (E-2, E-3, A-50, KJ-2000). Medusa validates this on discovery and rejects groups without it. Place each AWACS aircraft in its own group to avoid the DCS getSensors() bug that returns incorrect data for multi-unit groups. AWACS are exempt from EMCON policies and always emit.

Role tokens are case-insensitive and matched using word boundary rules - they match at the start of any segment (dot-separated or space-separated), either as the whole segment or followed by a non-alphanumeric character. This means EWR, ewr, Ewr all work, and both Dot-Echelon style and flat naming are recognized out of the box:

pvo.north.ewr.1div - "ewr" is the entire segment
opfor.EWR North - "ewr" at start of segment, followed by space
red.EWR-1.1div - "ewr" at start of segment, followed by hyphen
iads.newer_radar.1div - "newer" does not start with "ewr", no match
red.ewrything.1div - "ewr" followed by "y" (alphanumeric), rejected

When a role token is found, echelon parsing starts from the segment immediately right of the rightmost role token.

Flat naming (no hierarchy):

pvo SA-10 Bandar - lowercase prefix, space separated
OPFOR SA-6 North - uppercase prefix
Red EWR Bigbird - pascal prefix
redFor EWR-1 - camelCase prefix
RED IADS HQ Main - multi-word prefix
red.SA-15 Point Defense - dot-separated prefix
red.1div.EWR South - dot-echelon with hierarchy

With hierarchy:

pvo.1Div.EWR.North - EWR under 1Div
OPFOR.1BDE.1BN.GCI.Cairo - GCI under 1BN under 1BDE
redFor.1Div.HQ.CommandPost - HQ for 1Div
Red.1Div.1BDE.1BN.SA10 - Battery under 1BN under 1BDE under 1Div

The following tokens are all recognized as EWR roles: ewr, radar, sensor. This means red.north.radar.1div and red.north.ewr.1div produce the same result.

MANPAD groups need the normal network prefix but no role token. Medusa recognizes them automatically from their DCS unit attributes. See MANPAD Groups for behavior and configuration.

AAA groups also need no role token. Medusa classifies mixed MANPAD, AAA, radar, and launcher groups from their DCS attributes. See AAA Groups for the precedence and count rules.

Medusa also auto-discovers qualifying search-radar groups as sensors, even without an explicit role token. Launcher precedence and the MANPAD/AAA count rules apply first. This can be disabled via doctrine:

Medusa_MM_Doctrine = {
AutoDiscoverEwrs = false,
}

Override the defaults via MEDUSA_CONFIG:

MEDUSA_CONFIG = {
Networks = {
{
name = "RED",
coalition = "red",
prefix = "red",
},
},
Roles = {
HQ = "command", -- Use .command. instead of .hq.
GCI = "gci",
EWR = "radar", -- Use .radar. instead of .ewr.
},
}