IASER INITIALIZING...
DCS WORLD EXTERNAL AI

Intelligent. Autonomous. Lethal.

A multi-layered AI system operating at 3 decision frequencies — from strategic campaign management down to individual missile shots at 60 Hz — fully synchronized with DCS World in real-time.

0 Units tracked
0 Hz tactical rate
0 AI layers
SCROLL
Real-time 60 Hz tactical AI
🛡 Integrated Air Defense (IADS)
10 000+ units via ECS registry
📡 gRPC + Shared Memory IPC
🎯 JTAC 9-Line auto-generation
🗺 Dynamic frontline calculator
C++ + Lua API
🌍 WW2 theater extension
💾 Campaign persistence & replay
🌦 Weather & environment engine
Real-time 60 Hz tactical AI
🛡 Integrated Air Defense (IADS)
10 000+ units via ECS registry
📡 gRPC + Shared Memory IPC
🎯 JTAC 9-Line auto-generation
🗺 Dynamic frontline calculator
C++ + Lua API
🌍 WW2 theater extension
💾 Campaign persistence & replay
🌦 Weather & environment engine

Three-Layer AI Architecture

Inspired by real military command structures — IASER mirrors the strategic, operational, and tactical decision levels of modern armed forces, each running at its own dedicated frequency.

DCS WORLD
Lua VM
Hook Scripts
DCS-gRPC
Shared Memory
gRPC / protobuf3
IASER ENGINE
IPC Manager
EventBus (SPSC)
Unit Registry ECS
≈ 1 Hz
01

Strategic Layer

Campaign-level decision making. Manages objectives, resource allocation and threat assessment across the entire battlefield.

  • StrategicDirector — campaign brain
  • ResourceAllocator — aircraft, armor, ships
  • ThreatAssessment — global threat scoring
  • VictoryConditionEvaluator
≈ 5 Hz
02

Operational Layer

Mission planning and package composition. Coordinates air, ground, and naval forces across operational zones.

  • OperationalPlanner
  • PackageBuilder — air package composer
  • GroundOffensivePlanner
  • NavalPlanner + AirDefensePlanner
≈ 30–60 Hz
03

Tactical Layer

Real-time engagement decisions — BVR/WVR combat, SAM fire control, electronic warfare, unit maneuvering at 60 frames per second.

  • TacticalController — master engagement
  • BVREngagement + WVREngagement
  • SAMController — SAM fire control
  • EWController — electronic warfare

Thread Architecture

ThreadRoleRate
T_IPC_ReadDCS data ingestion10 ms poll
T_TacticalTactical AI controller30–60 Hz
T_OperationalMission planner5 Hz
T_StrategicCampaign director1 Hz
T_LogisticsSupply & resupply0.5 Hz
T_PersistCampaign save0.1 Hz

Combat Modules

IASER manages the full spectrum of modern and legacy military assets across air, ground, and naval domains.

BLUE FORCE

Air Combat

Full-spectrum air asset management for NATO coalition forces — CAP, STRIKE, SEAD/DEAD, CAS, and FAC(A) missions with authentic weapon loadouts.

  • F/A-18C Hornet — Multirole (AIM-120C, HARM)
  • F-16C Block 50 — SEAD specialist
  • F-15C Eagle — Air superiority
  • F-15E Strike Eagle — All-weather strike
  • A-10C II Thunderbolt — Dedicated CAS
IADS NETWORK

Air Defense

Integrated Air Defense System with dynamic threat propagation — EWR, SAM batteries, interceptors linked via datalink with EMCON behavior.

  • EarlyWarningRadar — 300–400 km detection
  • SA-10 Grumble / SA-11 Gadfly / SA-6
  • Command & Control Node (BFS propagation)
  • EMCON — silent when ARM detected
  • MiG-29/31, Su-27/30 interceptors
CAS SYSTEM

JTAC Controller

Full 9-Line CAS coordination between ground JTAC players, human pilots, and IASER AI — with automatic laser code assignment and contact lifecycle management.

  • Auto laser code & FM/UHF frequency assignment
  • 9-Line briefing auto-generation
  • IDENTIFIED → CLEARED HOT → SPLASH cycle
  • ABORT at any stage
  • Multi-pilot / multi-JTAC support
GROUND FORCES

Ground & Naval

Dynamic ground offense and naval deployment planning with logistics chains, frontline calculation, and combined-arms maneuvering.

  • T-72B3, T-80UD, M1A2 Abrams, Bradley
  • FrontLineCalculator — real-time FLOT
  • GroundOffensivePlanner — maneuver AI
  • Naval task forces — carrier groups, escorts
  • Logistics supply chains — fuel, ammo, repair
INTELLIGENCE

ISR Manager

Intelligence, Surveillance, and Reconnaissance feeding real-time enemy positions into all three AI layers via the EventBus.

  • Radar ISR — AWACS, ground radar stations
  • ELINT — electronic order of battle
  • Sensor fusion — multi-source track correlation
  • Confidence scoring per contact
  • Feeds ThreatAssessment + PackageBuilder
CAMPAIGN

Campaign Engine

Dynamic campaign state machine — from INIT to END, managing escalation phases, dynamic objectives, and victory condition evaluation.

  • States: INIT → CONVENTIONAL → ESCALATION
  • → CRITICAL → CEASEFIRE → END
  • Dynamic objectives (DESTROY, CAPTURE, INTERDICT)
  • VictoryConditionEvaluator — real-time scoring
  • Persistence — save/load/replay

Campaign Lifecycle

IASER's campaign engine transitions through six distinct phases, automatically adapting strategy based on battlefield outcomes.

00

INIT

State loading, unit validation, AI warm-up

01

CONVENTIONAL

Initial phase — balanced engagements

02
🔺

ESCALATION

Reinforcements, expanded zones, new weapons

03

CRITICAL

Decisive engagements or fallback to DEFENSIVE

04
🕊

CEASEFIRE

Tactical pause — negotiations

05
🏁

END

Campaign conclusion, results saved

World War II Theater

IASER extends seamlessly into the WWII era. Switch coalition, swap SAM networks for Flak batteries, and deploy the full Eagle Dynamics WWII asset catalog.

Spitfire Mk IX

Air Superiority Fighter

Merlin 66 engine 2× 20mm Hispano CAP / Air Superiority

P-51D Mustang

Long-Range Escort Fighter

Merlin V-1650-7 6× .50 cal M2 Escort / Strike

P-47D Thunderbolt

Fighter-Bomber

R-2800 Double Wasp 8× .50 cal + bombs CAS / Ground Strike

Bf 109 K-4 Kurfürst

Air Superiority Fighter

DB 605 DCM/L 30mm MK 108 cannon Intercept / CAP

Fw 190 D-9 Dora

High-Altitude Fighter

Jumo 213A-1 2× 20mm MG 151 CAP / Escort

Fw 190 A-8 Anton

Fighter-Bomber

BMW 801D-2 4× 20mm + bomb Ground Attack / CAS
1940

Battle of Britain

Channel / Southern England

Summer 1940 — Luftwaffe offensive against RAF airfields and radar stations. Spitfire Mk IX and Hurricane vs Bf 109 / Bf 110.

channel_1940
1944

Normandy Invasion

Normandy, France

June–August 1944 — D-Day landings through the Falaise pocket. Full combined-arms AI including naval fire support.

normandy_1944
1944

Battle of the Bulge

Ardennes, Belgium

December 1944 — German winter offensive. Difficult weather conditions with limited ISR and degraded air operations.

ardennes_1944

Modern vs WW2 Capabilities

Capability 🛩 Modern ✈ WW2
Missile Guidance BVR — AIM-120, R-77 None — guns & rockets
Onboard Radar APG-63, N001 Optical only
Air Defense SAM networks Flak (88mm, Flak38)
ISR Radar, ELINT Visual recon, HUMINT
Navigation INS, GPS Radio-nav, dead reckoning
Fuel JP-8 AvGas 100/130

API Reference

IASER exposes clean C++ interfaces and Lua export hooks for full integration with DCS World scripting and external tools.

include/ipc/IIpcChannel.h
// include/ipc/IIpcChannel.h
namespace iaser::ipc {

class IIpcChannel {
public:
    virtual ~IIpcChannel() = default;

    virtual bool connect()                           = 0;
    virtual void disconnect()                        = 0;
    virtual bool isConnected()             const     = 0;

    virtual void sendCommand(const IpcCommand& cmd)  = 0;
    virtual std::optional<IpcEvent> pollEvent()      = 0;

    virtual ChannelType  type()            const     = 0;
    virtual ChannelStats getStats()        const     = 0;
};

} // namespace iaser::ipc
include/units/IUnit.h
// include/units/IUnit.h
namespace iaser::units {

class IUnit {
public:
    virtual ~IUnit() = default;

    virtual uint32_t         id()          const = 0;
    virtual std::string_view typeName()    const = 0;
    virtual Coalition        coalition()   const = 0;
    virtual UnitCategory     category()    const = 0;
    virtual Position3D       position()    const = 0;
    virtual Velocity3D       velocity()    const = 0;
    virtual float            heading()     const = 0;
    virtual float            health()      const = 0;
    virtual bool             isAlive()     const = 0;
};

} // namespace iaser::units
scripts/HookExport.lua
-- DCS Export Hook — IASER bridge
local iaser = {}

function iaser.onSimulationStart()
    log.write("IASER", log.INFO, "Simulation started")
    iaser_shm.connect()
end

function iaser.onPlayerTryChangeSlot(playerID, side, slotID)
    return iaser_rpc.isSlotAllowed(playerID, slotID)
end

function Export.LuaExportActivityNextEvent(t)
    local objects = LoGetWorldObjects("all")
    iaser_shm.writeFrame(objects, t)
    return t + 0.01  -- 100 Hz update loop
end
📁
Header location

All public headers are in include/ — interfaces prefixed with I

🔢
Entity IDs

All entity IDs are uint32_t — matching DCS World unit IDs directly

🌐
Coordinates

All geographic coordinates in decimal degrees WGS84

Time

All timestamps in seconds since mission start (DCS mission time)

🧵
Thread Safety

All public interfaces are thread-safe. Internal state protected by std::shared_mutex