Configuration Reference
Set MEDUSA_CONFIG as a global Lua table before loading Medusa. All fields are optional - omit any field to use its default.
MEDUSA_CONFIG = {
-- Logging LogLevel = "INFO", -- NONE | ERROR | INFO | DEBUG | TRACE (default: INFO)
-- Group name tokens that identify special roles Roles = { HQ = "hq", -- Token in group name that marks a unit as HQ (default: "hq") GCI = "gci", -- Token for GCI sites (default: "gci") EWR = "ewr", -- Token for EWR sites (default: "ewr") },
-- Network definitions - one IADS instance per entry -- Each network scans for groups matching its prefix on its coalition Networks = { { name = "RED", -- Network identifier (logged in output) coalition = "red", -- "red" | "blue" | "neutral" | 1 | 2 | 0 prefix = "iads", -- Group name prefix to scan for doctrine = "Medusa_MM_Doctrine", -- Global table name or inline table borderZones = { "border-north", "border-south" }, -- List of ME trigger zone or drawing names -- that define this IADS's service area boundary -- (optional, omit for no border enforcement) }, },
-- Track management TrackMemorySec = 30, -- Seconds before a stale track is pruned (default: 30) VelocityWindowSec = 60, -- EMA window for velocity smoothing (default: 60)
-- HARM detection HarmCapableSystems = {}, -- Unit type substrings identifying HARM-capable systems -- (default: built-in list including "Tor", "Pantsir", etc.)
-- Weapon range overrides (per unit type name) WeaponRangeOverrides = {}, -- Override engagement ranges for specific unit types -- e.g. { ["SA-10"] = { RangeMax = 120000 } }
-- Pipeline chunk budgets (items processed per phase tick) ChunkBudgetTracks = 20, -- Track classification + aircraft type (default: 20) ChunkBudgetHarm = 15, -- HARM detection (default: 15) ChunkBudgetBatteries = 20, -- Handoff eval + deactivation checks (default: 20)
-- Dynamic unit support AllowDynamicProbing = false, -- Probe spawned unit types not seen at mission start (default: false) -- Caution: probing spawns and destroys temporary units at runtime. -- In multiplayer this may cause brief freezes, stutters, or desyncs.
-- Metrics / Observability PrometheusEnabled = false, -- Enable Prometheus metrics endpoint (default: false) PrometheusExtendEnabled = false, -- Enable extended metrics (per-battery detail) (default: false)}Field Reference
Section titled “Field Reference”| Field | Type | Default | Description |
|---|---|---|---|
AllowDynamicProbing | boolean | false | Probe unit types not seen at mission start when they spawn mid-mission. Extracts detection ranges for accurate engagement calculations. Multiplayer caution: spawns and destroys temporary units, which may cause brief freezes or desyncs. |
ChunkBudgetBatteries | number | 20 | Items per chunk for handoff evaluation and deactivation checks. Min: 1, Max: 200 |
ChunkBudgetHarm | number | 15 | Items per chunk for HARM detection. Min: 1, Max: 200 |
ChunkBudgetTracks | number | 20 | Items per chunk for track classification and aircraft type assessment. Min: 1, Max: 200 |
HarmCapableSystems | table | built-in list | Unit type substrings identifying HARM-capable systems |
LogLevel | string | "INFO" | Logging verbosity: NONE, ERROR, INFO, DEBUG, TRACE |
Networks | table | (single RED network, prefix “iads”) | Array of network definitions |
Networks[].coalition | string/number | required | Coalition: "red", "blue", "neutral", or 1, 2, 0 |
Networks[].doctrine | string | nil | Global table name for per-network doctrine |
Networks[].name | string | required | Network identifier for logging |
Networks[].prefix | string | required | Group name prefix to scan for |
PrometheusEnabled | boolean | false | Enable Prometheus metrics endpoint for Grafana dashboards |
PrometheusExtendEnabled | boolean | false | Enable extended per-battery metrics (higher overhead) |
Roles.AWACS | string | "awacs" | Token for AWACS aircraft |
Roles.EWR | string | "ewr" | Token for EWR sites |
Roles.GCI | string | "gci" | Token for GCI sites |
Roles.HQ | string | "hq" | Token in group name that marks HQ role |
TrackMemorySec | number | 30 | Seconds before a stale track is pruned |
VelocityWindowSec | number | 60 | EMA window for velocity smoothing (seconds) |
WeaponRangeOverrides | table | nil | Per-unit-type weapon range overrides |