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).
Format
Section titled “Format”{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)+-- PrefixRead 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 echelonred.1bde.1bn.sa10 - Two echelonsred.southern_cmd.1div.1bde.1bn.sa10 - Four echelonsFlat naming
Section titled “Flat naming”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 BandarRED SA-6 North --> red.SA-6 NorthRED EWR Bigbird --> red.EWR BigbirdRED Tor Point Defense --> red.Tor Point DefenseThis 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.
Role tokens
Section titled “Role tokens”Special tokens anywhere in the group name identify non-battery roles:
| Token | Role | Entity Created |
|---|---|---|
ewr | Early Warning Radar | SensorUnit |
gci | Ground Controlled Intercept | SensorUnit |
awacs | Airborne Early Warning | SensorUnit (airborne) |
hq | Headquarters | C2Node |
| (none) | SAM / AAA battery | Battery |
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 segmentopfor.EWR North - "ewr" at start of segment, followed by spacered.EWR-1.1div - "ewr" at start of segment, followed by hypheniads.newer_radar.1div - "newer" does not start with "ewr", no matchred.ewrything.1div - "ewr" followed by "y" (alphanumeric), rejectedWhen a role token is found, echelon parsing starts from the segment immediately right of the rightmost role token.
Examples
Section titled “Examples”Flat naming (no hierarchy):
pvo SA-10 Bandar - lowercase prefix, space separatedOPFOR SA-6 North - uppercase prefixRed EWR Bigbird - pascal prefixredFor EWR-1 - camelCase prefixRED IADS HQ Main - multi-word prefixred.SA-15 Point Defense - dot-separated prefixred.1div.EWR South - dot-echelon with hierarchyWith hierarchy:
pvo.1Div.EWR.North - EWR under 1DivOPFOR.1BDE.1BN.GCI.Cairo - GCI under 1BN under 1BDEredFor.1Div.HQ.CommandPost - HQ for 1DivRed.1Div.1BDE.1BN.SA10 - Battery under 1BN under 1BDE under 1DivEWR aliases
Section titled “EWR aliases”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.
Auto-discovery of EWR groups
Section titled “Auto-discovery of EWR groups”Medusa also auto-discovers EWR groups: any group with a search radar but no launchers is automatically classified as a sensor, even without an explicit role token. This can be disabled via doctrine:
Medusa_MM_Doctrine = { AutoDiscoverEwrs = false,}Custom prefix and role tokens
Section titled “Custom prefix and role tokens”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. },}