Skip to content

EA GUI Overlay (Optional)

The AEGIS EA GUI Overlay is a clickable panel for Electronic Attack pilots. It replaces the nested F10 menu workflow with an always-visible overlay — one-click mode switching, pod assignment, emitter tracking, and bearing input without pausing to navigate menus mid-engagement.

The overlay is completely optional. Players without it use F10 menus. Players with it get the panel. Both interfaces stay in sync — GUI commands update F10 state and vice versa. AEGIS runs identically either way.

Panel Layout

┌─ AEGIS EA ──────────────────────────────┐
│ EA-GROWLER-1                            │
│ Mode: HALF + DIR                        │
│                                         │
│ [OMNI] [*HALF+DIR] [2xDIR]  [OFF]      │
│                                         │
│ Pod 1: OMNI HDG 270                     │
│ Pod 2: DIR -> SAM                       │
│                                         │
│ [LOCK BRG]  [UNASGN P1]  [UNASGN P2]   │
│                                         │
│ -- EMITTERS (4) --                      │
│ [ EW   |||||  REL 315       ]           │
│ [ SAM  |||..  REL 330    P2 ]           │
│ [ SAM  ||...  REL 045       ]           │
│ [ EW   |....  REL 180       ]           │
│                                         │
│         [ASGN P1]  [ASGN P2]           │
│ [CALIBRATE]  [REL]                      │
└─────────────────────────────────────────┘

Top section: Aircraft group name and current EA mode. Mode buttons switch between FULL OMNI, WIDE, 2xDIR, and OFF. Active mode marked with *.

Pod section: Shows pod assignments. For WIDE: Pod 1 shows cone bearing (heading-tracking or locked), Pod 2 shows directional target. For 2xDIR: both show directional targets.

Action buttons: LOCK BRG locks the cone bearing to current heading (WIDE mode only). UNASGN clears a pod's target assignment.

Emitter list: Up to 10 clickable emitter rows. Each shows:

  • Label — NATO radar designation (e.g., "Fan Song", "Straight Flush", "Big Bird")
  • Signal strength — 5-bar scale (||||| = very close, |.... = edge of detection)
  • Relative bearing — off the nose (REL 000 = dead ahead, REL 090 = 3 o'clock)
  • Pod tagP1 / P2 if this emitter is assigned to a pod

Click an emitter to assign it to the selected pod (toggle at bottom with ASGN P1 / ASGN P2).

Passive ESM: The emitter list populates regardless of jammer mode — including OFF. The WSO sees threats before deciding to jam.

Bearing modes: CALIBRATE sets magnetic declination (fly a known heading). After calibration, toggle REL/ABS to switch between nose-relative and magnetic absolute bearings.

How It Works

The AEGIS mission script opens a UDP socket (port 19410) in the mission scripting environment. The client hook connects to this socket, polls for state, and sends commands. Both share the same data — no relay or bridge needed.

In multiplayer, the server auto-advertises the socket address via chat message (SRS-style). Clients auto-connect with no manual configuration needed for most MP setups. Manual server address entry is available as a fallback.

F10 menus and the GUI are fully interchangeable. Commands from either interface update the same state. Players without the overlay installed use F10 menus with no loss of functionality.

Installation

Client (each player)

Copy two files from the Downloads page:

Saved Games/DCS/
  Scripts/
    Hooks/
      aegis-ea-hook.lua         <- toggle panel with Ctrl+Shift+J
    AEGIS-EA/
      aegis-ea-panel.dlg        <- panel layout
  Config/
    aegis-ea-config.lua         <- auto-created on first run

Create the Scripts/AEGIS-EA/ directory manually if it doesn't exist.

Server (admin, one-time setup)

  1. MissionScripting.lua — Desanitize require and package:

    -- In DCS World/Scripts/MissionScripting.lua, comment out:
    --sanitizeModule('require')
    --sanitizeModule('package')
    
  2. Port forwarding — Forward UDP port 19410 on your router and firewall:

    netsh advfirewall firewall add rule name="AEGIS-EA" dir=in action=allow protocol=UDP localport=19410
    
  3. LuaSocket on server — DCS Server edition may not ship LuaSocket. If the server log shows "EA socket: require('socket') not available", copy the LuaSocket/ folder from a DCS World client installation to the server's DCS install directory.

  4. Load mission — The AEGIS script includes the EA socket listener. Nothing extra to configure.

Desanitizing require is a security decision

Removing require and package from the sanitize list gives all mission scripts access to Lua's require() function — not just AEGIS. Any .miz file loaded on the server can load arbitrary Lua modules. This is the same tradeoff that DCS-gRPC, SRS, and other frameworks require. If you already run any of those, you've already made this decision.

DCS updates may re-sanitize MissionScripting.lua

DCS patches and version updates can overwrite MissionScripting.lua, reverting your changes. Check this file after every DCS update.

No overlay installed

AEGIS runs normally. F10 menus are the EA interface. Players without the hook use F10, players with the hook get the overlay. Both coexist on the same server.

Singleplayer

The EA GUI works in singleplayer. Your machine is both server and client — the hook auto-connects to localhost. You still need require and package desanitized in MissionScripting.lua because the mission script must load LuaSocket to open the UDP listener.

EA slot workaround: In singleplayer, if you start the mission already slotted into an EA aircraft, DCS creates the aircraft before the AEGIS script runs — so the script registers it as AI, not player-controlled. To get proper EA GUI control: start the mission, then slot into a different aircraft, then slot back into the EA jet. This triggers the player discovery event that AEGIS needs.

Configuration

Config file: Saved Games/DCS/Config/aegis-ea-config.lua

Auto-created on first run with defaults. Panel position auto-saved on drag.

Field Default Description
hotkey "Ctrl+Shift+J" Keyboard shortcut to toggle panel
pollInterval 1.5 Seconds between state polls
windowX 50 Panel X position (auto-saved)
windowY 200 Panel Y position (auto-saved)
serverHost nil Server IP or hostname (nil = auto-connect via chat)
serverPort 19410 UDP port for AEGIS-EA

For most multiplayer setups, leave serverHost as nil — the server auto-advertises via chat. Set it manually only if auto-connect doesn't work (firewalled chat, custom networking).

Server-side config

In the mission setup script (where you call AEGIS:New()):

Field Default Description
eaDebugLabels false true = show full group names on emitter displays instead of NATO designations

Troubleshooting

Issue Fix
Panel never appears Check hook + .dlg installed correctly. Check dcs.log for AEGIS-EA errors.
"CONNECTING..." stays Port not forwarded, serverHost not set, or require('socket') not available on server.
"NOT CONNECTED" stays Server mission not loaded, or AEGIS version too old (need v0.8.1+).
"NO EA AIRCRAFT" You're not in an EA- prefixed aircraft. Slot into one.
Commands don't work Verify mission has AEGIS v0.8.1+. Check server log for [AEGIS] lines.
Panel in wrong spot Delete Config/aegis-ea-config.lua to reset position.
Hotkey stops working Update to latest aegis-ea-hook.lua from Downloads.
SP: panel shows but no data Slot out to another aircraft, then slot back into the EA jet.