Quick Start
Get AI Zeus running in your mission in under 5 minutes.
Install the Mod
Subscribe to AI Zeus on Steam Workshop. For dedicated servers, use SteamCMD (workshop_download_item 107410 3623550024) or copy the subscribed folder to your server and rename it to @AIZeus.
Load the Mod
Add -serverMod=@AIZeus to your server startup parameters, or load it via the ArmA 3 launcher.
Add to Your Mission
Add the following to your init.sqf:
// Configure AI Zeus
AIZEUS_controlledSide = east; // Side to control
AIZEUS_enabled = true;
// Initialize (server only)
if (isServer) then {
[] spawn {
sleep 5;
[] call AIZEUS_fnc_init;
};
};
Play!
AI Zeus will automatically take command of all units on the configured side and begin coordinating their behavior.
Requirements
| Requirement | Version | Notes |
|---|---|---|
| ArmA 3 | 2.00+ | Required |
| CBA_A3 | Latest | Optional - enables settings menu |
| ACE3 | Latest | Optional - medical integration |
Players connecting to your server do not need AI Zeus installed. The mod runs entirely server-side.
Basic Setup
Minimal Configuration
The simplest possible setup:
// init.sqf
AIZEUS_controlledSide = east;
[] call AIZEUS_fnc_init;
Recommended Configuration
A more complete setup with common options:
// init.sqf
// ============================================
// AI ZEUS CONFIGURATION
// ============================================
// Core Settings
AIZEUS_controlledSide = east;
AIZEUS_enemySide = west;
AIZEUS_enabled = true;
AIZEUS_debug = true; // Show debug markers
// Timing
AIZEUS_updateInterval = 4; // Seconds between updates
AIZEUS_decisionInterval = 12; // Seconds between decisions
// Combat Systems
AIZEUS_garrison_enabled = true;
AIZEUS_medic_enabled = true;
AIZEUS_cqb_enabled = true;
AIZEUS_ambush_enabled = true;
// Support Systems
AIZEUS_casAvailable = true;
AIZEUS_artyAvailable = true;
AIZEUS_reinforcementsAvailable = true;
// Initialize
if (isServer) then {
[] spawn {
sleep 5;
[] call AIZEUS_fnc_init;
};
};
Global Variables
All AI Zeus configuration is done through global variables set before initialization.
Variables must be set before calling AIZEUS_fnc_init. Changes after initialization may not take effect.
Core Settings
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_controlledSide |
Side | east |
Side that AI Zeus will command |
AIZEUS_enemySide |
Side | west |
Side considered hostile |
AIZEUS_enabled |
Boolean | true |
Master enable/disable switch |
AIZEUS_debug |
Boolean | false |
Show debug markers on map |
AIZEUS_debug_adminOnly |
Boolean | true |
Restrict debug to admins only |
AIZEUS_updateInterval |
Number | 4 |
Seconds between AI updates |
AIZEUS_decisionInterval |
Number | 12 |
Seconds between tactical decisions |
Combat Systems
Garrison System
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_garrison_enabled |
Boolean | true |
Enable building garrison behavior |
AIZEUS_garrison_radius |
Number | 200 |
Search radius for buildings |
AIZEUS_garrison_maxUnits |
Number | 12 |
Max units per building |
Medic System
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_medic_enabled |
Boolean | true |
Enable medic healing system |
AIZEUS_medic_woundThreshold |
Number | 0.3 |
Damage level to trigger healing |
AIZEUS_medic_healAmount |
Number | 0.5 |
Amount of damage healed |
AIZEUS_medic_healTime |
Number | 10 |
Seconds to complete healing |
AIZEUS_medic_buddyAid |
Boolean | true |
Non-medics can also heal |
Building Assault System
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_buildingAssault_enabled |
Boolean | true |
Enable heavy weapons assault on fortified buildings |
AIZEUS_buildingAssault_cooldown |
Number | 60 |
Seconds cooldown between building assaults |
Armor within 400m and AT infantry within 300m will engage occupied buildings before infantry clearing begins.
Other Combat Systems
| Variable | Default | Description |
|---|---|---|
AIZEUS_cqb_enabled |
true |
CQB building clearing |
AIZEUS_ambush_enabled |
true |
Ambush tactics |
AIZEUS_suppression_enabled |
true |
Suppression response |
AIZEUS_night_enabled |
true |
Night operations adaptation |
AIZEUS_patrol_enabled |
true |
Patrol behavior |
Support Systems
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_casAvailable |
Boolean | true |
Enable CAS strikes |
AIZEUS_artyAvailable |
Boolean | true |
Enable artillery barrages |
AIZEUS_reinforcementsAvailable |
Boolean | true |
Enable reinforcement spawning |
AIZEUS_supportCooldown |
Number | 120 |
Seconds between support calls |
AIZEUS_resupply_enabled |
Boolean | true |
Enable ammo resupply system |
AIZEUS_counterBatteryEnabled |
Boolean | true |
Enable counter-battery fire |
Self-Preservation
Since v1.7.5, AI Zeus runs four self-preservation systems that make units react realistically to losses instead of fighting to the last man. All four share a single master toggle and can be tuned via CBA settings or config variables.
Systems
- Vehicle Preservation — Four-tier reaction: damage-based withdrawal, crew bailout, immobilized static defense, and low-fuel RTB.
- Per-Group Casualty Retreat — Individual groups fall back independently when they cross a casualty threshold, regardless of the global tactical state.
- Remnant Regrouping — Groups with very few survivors merge into nearby friendly groups instead of continuing suicidal missions.
- Ambush Break-Contact — Ambushes break off early when the enemy counter-attacks in force or the ambushers take heavy hits.
Configuration
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_preservation_enabled |
Boolean | true |
Master toggle for all four self-preservation systems |
AIZEUS_veh_damageRetreat |
Number | 0.5 |
Damage threshold (0-1) for vehicles to withdraw from contact |
AIZEUS_veh_damageBailout |
Number | 0.8 |
Damage threshold (0-1) to force cargo and crew to bail out |
AIZEUS_veh_fuelRetreat |
Number | 0.2 |
Fuel threshold (0-1) to return to rear |
AIZEUS_veh_retreatDistance |
Number | 300 |
Vehicle withdrawal distance (meters) |
AIZEUS_remnant_threshold |
Number | 2 |
Maximum survivors before a group is flagged as a remnant |
AIZEUS_remnant_mergeRange |
Number | 300 |
Maximum range to find a merge target (meters) |
AIZEUS_groupRetreat_threshold |
Number | 0.5 |
Casualty fraction (of original strength) that triggers group fallback |
AIZEUS_groupRetreat_cooldown |
Number | 60 |
Seconds before a retreated group accepts new orders |
AIZEUS_groupRetreat_distance |
Number | 200 |
Fallback distance from nearest enemy (meters) |
AIZEUS_ambush_breakCasualty |
Number | 0.3 |
Ambush casualty fraction that triggers break-contact |
AIZEUS_ambush_breakReinforcement |
Number | 2.0 |
Enemy-count multiplier that triggers break-contact |
Per-Side Doctrine
Since v1.8.1, AI Zeus runs three distinct tactical playbooks instead of using one Western combined-arms doctrine for all sides. Doctrine selects automatically from AIZEUS_controlledSide and is overridable. It composes cleanly with baseline stance — doctrine controls how AI fights; stance controls whether it initiates contact without explicit objectives.
A fresh install commanding OPFOR (east) now uses Eastern Bloc doctrine instead of NATO. If your mission depends on v1.7.9 NATO-flavored behavior on an East-side mission, set AIZEUS_doctrineStr = "NATO" in the Init module or CBA Settings. Missions on WEST or INDEPENDENT continue with their previously-implicit doctrine (NATO / Guerrilla).
Doctrines
| Doctrine | Default Side | Real-World Grounding |
|---|---|---|
NATO |
west |
Combined-arms, AirLand Battle. Values bit-for-bit identical to v1.7.9 hardcoded constants. |
EASTERN_BLOC |
east |
Soviet motor-rifle (FM 100-2.1, Grau & Bartles "Russian Way of War"). Echeloned attack with tanks forward, 30s artillery preparation, dismount 400m, wider frontages, reverse-slope garrisons, sticky commitment. |
GUERRILLA |
independent |
Mao's axiom + Giap's protracted-harassment + modern insurgent practice. Never assaults — brief suppress from 300m standoff, immediate fall-back. Ambushes break on first volley. No CAS / no organic arty / no idle helicopter patrols. |
Configuration
Set the doctrine in any of four ways:
- Eden Init module — "Doctrine" Combo attribute (AUTO / NATO / EASTERN_BLOC / GUERRILLA) on the AI Zeus Init module.
- CBA Settings — AI Zeus › Sides › Doctrine list.
onChangere-resolves doctrine without restart. - Direct global override —
AIZEUS_doctrineStr = "NATO";ininitServer.sqfbefore callingAIZEUS_fnc_init. - Admin commands —
#aizeus doctrine_nato,#aizeus doctrine_east(ordoctrine_soviet/doctrine_eastern_bloc),#aizeus doctrine_guerrilla,#aizeus doctrine_auto. Existingside_*commands also re-resolve doctrine since AUTO mapping changes with side.
Tactical Wiring
The doctrine profile drives 25 parameters across the tactical loop. Highlights:
| System | NATO | Eastern Bloc | Guerrilla |
|---|---|---|---|
| Assault pattern | PINCER | ECHELON (2 waves, tanks forward) | HARASS (300m standoff, 10-15s) |
| Flank geometry | 90° / 0.7 ratio | 70° / 0.9 (deep envelopment) | 45° / 0.5 (escape preserving) |
| Dismount distance | 200m | 400m (foot the last leg) | 50m (technicals to target) |
| Garrison floor | Upper (overwatch) | Lower (reverse-slope) | Ground only (quick egress) |
| Artillery | 3 rounds precision | 6 rounds mass fires + 30s prep | Never |
| CAS | Allowed | Allowed | Never |
| Idle helicopter patrol | Yes | Yes | Disabled |
| Retreat smoke | Allowed | Allowed | Never (signature discipline) |
| Ambush break | 30% casualty / hold combat phase | 30% casualty / hold combat phase | After first volley |
| Skill bias (aim / courage / spot) | 1.00 / 1.00 / 1.00 | 0.95 / 1.05 / 1.00 | 0.85 / 1.15 / 1.10 |
Global Variables
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_doctrineStr |
String | "AUTO" |
Override setting. "AUTO", "NATO", "EASTERN_BLOC", or "GUERRILLA" |
AIZEUS_doctrineActive |
String (broadcast) | Resolved | Currently active doctrine name. Resolved from AIZEUS_doctrineStr + AIZEUS_controlledSide |
AIZEUS_doctrineProfiles |
Hashmap (broadcast) | Built at init | Three profile hashmaps containing all 25 parameters per doctrine |
HC-Safe Lookups
Doctrine state is broadcast via publicVariable on every resolve so client and headless decision code see the same values. For one-off lookups from client / HC contexts use AIZEUS_fnc_getDoctrineActive — whitelisted in CfgRemoteExec with allowedTargets = 0 so it can be called over the network without inline anonymous code blocks.
Backward Compatibility
- NATO doctrine values are bit-for-bit equal to v1.7.9's hardcoded constants. Missions on WEST keep their v1.7.9 behavior.
- Legacy
AIZEUS_DOCTRINEhashmap (TACTICS / FOG_OF_WAR / LOGISTICS) preserved. - No existing CBA settings renamed or removed. Only
AIZEUS_doctrineStris added. - Saved games and HC distribution work without explicit save / load hooks — doctrine state is recomputed at postInit and
publicVariable'd on every resolve.
Baseline Stance
Since v1.7.9, AI Zeus has a per-side baseline stance setting that controls behavior when no explicit objectives (markers or modules) exist. Three values:
- DEFENSIVE — Hold ground. No auto-attack. Tactical evaluator biases toward DEFENSIVE state (needs 3.5:1 force ratio to go OFFENSIVE; tilts to DEFENSIVE at 1.2:1).
- PROBING (default) — Investigate contacts via the existing escalation system. Standard tactical evaluator thresholds.
- OFFENSIVE — Auto-generate ephemeral ATTACK directives at known threat clusters. "Just go find them" mode — no module or marker placement required. Tactical evaluator goes to OFFENSIVE state at force ratio 1.4 (vs default 2.0).
Configuration
Set the stance in any of three ways:
- AI Zeus Init module — "Baseline Stance" Combo attribute on the Eden Editor Init module.
- CBA Settings — AI Zeus › Sides › Baseline Stance.
- Direct global override —
AIZEUS_baselineStance = "OFFENSIVE";ininitServer.sqfbefore callingAIZEUS_fnc_init.
Auto-Attack Generation (OFFENSIVE only)
When stance is OFFENSIVE, fn_baselineStanceLoop runs every 30s and walks AIZEUS_threatClusters (the awareness module's intel cluster output). For each cluster it registers an ephemeral AIZEUS_MOD_ATTACK_* directive at the cluster center. Capped at 3 simultaneous (configurable). Skips clusters within 250m of an existing designer marker / module so auto-attacks never double up on areas you already configured.
Ephemerals expire after 300s OR when their threat cluster vanishes. Designer-placed directives are never pruned — only ephemerals are cleaned up by this loop. Ephemerals get priority 60; designer modules default to 50, so explicit objectives always win group-assignment priority.
| Variable | Type | Default | Description |
|---|---|---|---|
AIZEUS_baselineStance |
String | "PROBING" |
"DEFENSIVE", "PROBING", or "OFFENSIVE" |
AIZEUS_baselineStance_ephemeralTTL |
Number | 300 |
Seconds before an auto-generated ATTACK expires |
AIZEUS_baselineStance_maxEphemeral |
Number | 3 |
Cap on simultaneous auto-attacks |
AIZEUS_baselineStance_coverRadius |
Number | 250 |
Designer-objective overlap threshold (meters) |
AIZEUS_baselineStance_loopInterval |
Number | 30 |
Seconds between stance evaluations |
Live Assignment Overlay
Since v1.7.9, AI Zeus ships a toggleable in-game status panel that shows every group AI Zeus is managing — its current directive, state classification, and strength. Useful for admins and Zeus curators monitoring an autonomous battlefield in real time.
Access
The overlay is restricted to admins (serverCommandAvailable "#kick") and Zeus curators (getAssignedCuratorLogic player). It is bound to a CBA keybind:
- Open CBA Settings › Addons in the pause menu
- Find the AIZeus category
- Bind Toggle Status Panel to a key of your choice (no default to avoid collisions)
State Classification
fn_classifyGroupState resolves each group based on AIZEUS group flags, behavior, and waypoint state. Priority order:
- ROUTED (orange) —
AIZEUS_groupRetreatingflag set; group is in self-preservation fallback - TRANSPORT (purple) — Boarding or being transported
- ENGAGING (red) — Group is in COMBAT behavior or has a live enemy within range with
knowsAbout > 1.5 - HOLDING (green) — Garrisoned, manning emplacement, or a stationary defender
- EN_ROUTE (blue) — Has waypoints pointing toward an objective
- IDLE (gray) — No directive assigned
Server-Render Architecture
The overlay deliberately runs all classification and string-building on the authoritative server every 3s, then broadcasts a single structured-text string as AIZEUS_overlayContent. Clients with the overlay open just read the broadcast and write it into their RscStructuredText control. This avoids per-client duplication of state inspection across Headless Client boundaries (where group flags can be locality-bound).
Eden & Zeus Modules
Since v1.7.4, AI Zeus ships as a full set of Eden Editor and Zeus curator modules for drag-and-drop configuration and directive placement. Modules are now the primary UX for mission makers — marker directives remain as a parallel alternative. Both paths feed into the same underlying directive system, so priority sorting and multi-group assignment apply across the combined set.
A Zeus operator can also place the vanilla "Search and Destroy" module from the standard Zeus module tree — AI Zeus intercepts it via a CuratorObjectPlaced event handler and translates it into an AIZEUS_ATTACK directive at the same position. No need to know about the bundled AIZEUS_ModuleZeusAttack. The intercepted module is deleted; the directive is registered at priority 50. Configurable via AIZEUS_zeusAttackHook_classes (default ["ModuleSearchAndDestroy_F"]) to extend the list of intercepted classes.
Eden and Zeus modules require -mod=@AIZeus on clients (not just -serverMod=@AIZeus) so clients can render the module classes in the F5 panel and the Zeus module tree. Marker directives still work on server-only installs.
Eden Modules
- AI Zeus - Init Settings — Singleton configuration module. Sets the controlled and enemy sides, skill preset, and 12 subsystem toggles. Auto-starts AI Zeus, so you can skip
initServer.sqfentirely if you prefer. - AI Zeus - Attack — Directive module placed at a position. Syncing groups gives a direct assignment; leaving it unsynced registers the directive for automatic range-based pickup. Priority 1-99.
- AI Zeus - Defend — Up to 3 groups assigned, with optional radius override and support for counter-attack sorties.
- AI Zeus - Defend Object — Sync to a building, vehicle, or crate. Adaptive defense style, dynamic tracking if the object moves.
- AI Zeus - Defend Area — Distributes groups ~40% garrison, ~30% threat-oriented perimeter, ~30% patrol. Auto-detects town boundaries or uses an explicit radius.
Zeus Curator Modules
Placed live during gameplay from the Zeus module tree:
- AI Zeus - Attack Position — Create a live attack directive
- AI Zeus - Defend Position — Create a live defend directive with optional radius
- AI Zeus - Defend Object — Attach to an object for adaptive defense
- AI Zeus - Patrol Area — Assign patrol behavior to the attached or nearest group
Deleting a Zeus module automatically releases its assigned groups through the Deleted event handler.
Custom Waypoint Types
Right-click a group in Eden and choose Add Waypoint:
- AI Zeus: Patrol Area — Patrol the area around the waypoint with a configurable radius
- AI Zeus: Garrison Buildings — Garrison nearby buildings, then continue to the next waypoint
- AI Zeus: Garrison & Hold — Garrison permanently with PATH AI disabled
Marker Directives
Mission makers can direct AI Zeus using specially named map markers. This is an alternative to the Eden/Zeus module workflow above and is useful when you don't want clients to load the full mod (markers work with -serverMod=@AIZeus only).
Marker Naming
| Marker Name Pattern | Effect |
|---|---|
AIZEUS_ATTACK_* |
Assign nearby group to attack this position |
AIZEUS_DEFEND_* |
Assign nearby group to hold this position |
AIZEUS_DEFEND_OBJ_* |
Assign nearby group to defend a specific object (building, vehicle, crate) |
AIZEUS_DEFEND_AREA_* |
Defend an entire town/village with garrison, patrol, and perimeter roles (up to 8 groups) |
Priority System
Add a priority number (1-99) to control execution order. Lower numbers are processed first:
// Examples
AIZEUS_ATTACK_1_hillside // Priority 1 (highest)
AIZEUS_DEFEND_2_base // Priority 2
AIZEUS_DEFEND_OBJ_1_ammoCache // Priority 1, defend object named "ammoCache"
AIZEUS_ATTACK_objective // Priority 99 (default)
Defend Object Markers
AIZEUS_DEFEND_OBJ_* markers make groups defend a specific object rather than just a position. The behavior adapts to the object type:
| Object Type | Defensive Behavior |
|---|---|
| Buildings / Structures | Garrison nearby buildings + establish defensive perimeter |
| Vehicles / Crates / Other | Close guard formation in a tight ring around the object |
Object Resolution
Objects are resolved in two ways:
- Named variable — The marker name references an editor variable name. For example,
AIZEUS_DEFEND_OBJ_ammoCache1looks up the object with variable nameammoCache1. - Nearest object — If no named variable is found, AI Zeus auto-detects the nearest significant object (vehicle, building, ammo crate) within 25m of the marker position.
If no object is found by either method, the marker falls back to a standard defend order.
// Named object (set variable name in Eden Editor)
AIZEUS_DEFEND_OBJ_ammoCache // Defend object named "ammoCache"
AIZEUS_DEFEND_OBJ_1_radarTower // Priority 1, defend "radarTower"
AIZEUS_DEFEND_OBJ_my_ammo_cache // Underscores in name: "my_ammo_cache"
// Nearest object (place marker near the object)
AIZEUS_DEFEND_OBJ_vehicle1 // If no variable found, defends nearest object
Dynamic Tracking
Groups defending mobile objects (e.g., a parked vehicle that gets driven away) will automatically reposition when the object moves more than 30m from its last known position. Groups are also automatically released when their defended object is destroyed.
Multi-Group Assignment
DEFEND and DEFEND_OBJ markers can be assigned up to AIZEUS_markers_maxGroupsPerMarker groups (default: 3). Groups are assigned over successive scan cycles as they move within range. ATTACK markers still receive 1 group each.
Counter-Attack Sorties
When a defended marker has more groups than needed, surplus defenders will automatically assault nearby threats. After the threat is eliminated or a timeout expires, the groups return to their defensive positions.
How It Works
- A DEFEND/DEFEND_OBJ marker accumulates multiple groups over time (up to 3 by default)
- AI Zeus detects a threat cluster within range (default: 500m) of the defended position
- Surplus groups beyond
AIZEUS_counterAttack_minDefenders(default: 1) are sent to attack the threat - The farthest groups from the marker are sent first (least useful as close defenders)
- When the threat is eliminated or the timeout (default: 180s) expires, groups return to defense
3 groups defending a marker, enemy detected 400m away: 2 groups counter-attack while 1 stays defending. After the enemy is destroyed, both groups return to the marker.
Area Defense Markers
AIZEUS_DEFEND_AREA_* markers defend an entire town, village, or settlement. Groups are distributed across three roles as they arrive:
| Role | Allocation | Behavior |
|---|---|---|
| Garrison | ~40% (first groups) | Occupy buildings via garrison system |
| Perimeter | ~30% | Hold positions oriented toward nearest threat (120° arc), or evenly spaced if no threats |
| Patrol | ~30% | Patrol within area bounds |
Area Detection
AI Zeus uses ArmA 3's nearestLocations to find town/village boundaries. If no named location is found within 300m of the marker, a default radius of 200m is used.
Threat-Oriented Perimeter
Based on US Army defensive doctrine (FM 3-90), perimeter groups concentrate in a 120-degree arc facing the nearest threat cluster instead of spreading evenly around 360 degrees. This creates an engagement area with massed fires and mutual support between positions. When no threats are detected, groups distribute evenly for all-around defense.
Fallback Mechanism
When surviving groups drop below 40% of the peak assigned (and the peak was at least 3 groups), remaining groups automatically fall back to a linked AIZEUS_DEFEND_* marker. The link is derived from the marker suffix:
AIZEUS_DEFEND_AREA_Alpha // Falls back to AIZEUS_DEFEND_Alpha
AIZEUS_DEFEND_AREA_1_Bravo // Falls back to AIZEUS_DEFEND_1_Bravo
If the fallback marker doesn't exist, groups are released as free units.
Configuration
| Variable | Default | Description |
|---|---|---|
AIZEUS_markers_enabled |
true |
Enable marker directive system |
AIZEUS_markers_range |
500 |
Max distance for group assignment (meters) |
AIZEUS_markers_scanInterval |
15 |
Seconds between marker scans |
AIZEUS_defendObj_closeGuardRadius |
25 |
Guard radius for vehicles/crates (meters) |
AIZEUS_defendObj_buildingDefendRadius |
100 |
Defense radius for structures (meters) |
AIZEUS_defendObj_trackingThreshold |
30 |
Distance object must move before group repositions (meters) |
AIZEUS_markers_maxGroupsPerMarker |
3 |
Max groups assigned to a single DEFEND/DEFEND_OBJ marker |
AIZEUS_counterAttack_enabled |
true |
Enable counter-attack sorties from defended positions |
AIZEUS_counterAttack_minDefenders |
1 |
Minimum groups to keep defending each marker |
AIZEUS_counterAttack_range |
500 |
Max distance to detect and engage threats (meters) |
AIZEUS_counterAttack_timeout |
180 |
Max seconds before forced return to defense |
AIZEUS_defendArea_maxGroups |
8 |
Max groups assigned to a single DEFEND_AREA marker |
AIZEUS_defendArea_defaultRadius |
200 |
Default area radius if no location found (meters) |
AIZEUS_defendArea_fallbackThreshold |
0.4 |
Surviving ratio below which groups fall back to linked DEFEND marker |
Groups are automatically released when markers are deleted or defended objects are destroyed. You can move markers to redirect groups in real-time.
Environment Tactics
AI Zeus automatically detects terrain type and adapts group behavior accordingly.
Terrain Types
| Environment | Detection | Behavior |
|---|---|---|
| FOREST | 25+ trees within 100m | FILE formation, LIMITED speed, reduced spot distance |
| URBAN | 3+ buildings within 100m | COLUMN formation, quick reactions, CQB ready |
| HILLS | 15m+ elevation variance | STAG COLUMN, seeks high ground |
| OPEN | Default (low trees/buildings) | WEDGE formation, spread out, long range engagement |
Configuration
| Variable | Default | Description |
|---|---|---|
AIZEUS_environmentEnabled |
true |
Enable environment detection |
AIZEUS_environmentUpdateInterval |
30 |
Seconds between environment checks per group |
AIZEUS_environmentCacheTime |
60 |
Seconds to cache terrain detection results |
API Reference
AIZEUS_fnc_init
Initialize AI Zeus system. Must be called on server.
// Syntax
[] call AIZEUS_fnc_init;
// Example
if (isServer) then {
[] call AIZEUS_fnc_init;
};
AIZEUS_fnc_enable
Enable or disable AI Zeus at runtime.
// Syntax
[enabled] call AIZEUS_fnc_enable;
// Examples
[true] call AIZEUS_fnc_enable; // Enable
[false] call AIZEUS_fnc_enable; // Disable
AIZEUS_fnc_getStatus
Get current AI Zeus status information.
// Syntax
_status = [] call AIZEUS_fnc_getStatus;
// Returns: [enabled, tacticalState, unitCount, knownEnemies]
// Example: [true, "DEFENSIVE", 45, 12]
AIZEUS_fnc_applySkill
Apply AI Zeus skill settings to a unit.
// Syntax
[unit] call AIZEUS_fnc_applySkill;
// Example
[_newUnit] call AIZEUS_fnc_applySkill;
AIZEUS_fnc_registerGroup
Register a group for AI Zeus control.
// Syntax
[group] call AIZEUS_fnc_registerGroup;
// Example - register spawned reinforcements
_grp = [getMarkerPos "spawn_east", east, ["O_Soldier_F"]] call BIS_fnc_spawnGroup;
[_grp] call AIZEUS_fnc_registerGroup;
Events
AI Zeus fires mission event handlers that you can listen to:
| Event | Parameters | Description |
|---|---|---|
AIZEUS_StateChanged |
[oldState, newState] | Tactical state changed |
AIZEUS_SupportCalled |
[type, position] | Fire support requested |
AIZEUS_ReinforcementsSpawned |
[group, position] | Reinforcements arrived |
// Example: Listen for state changes
["AIZEUS_StateChanged", {
params ["_oldState", "_newState"];
systemChat format ["AI Zeus: %1 -> %2", _oldState, _newState];
}] call CBA_fnc_addEventHandler;
Headless Client
AI Zeus fully supports headless client for improved performance.
| Variable | Default | Description |
|---|---|---|
AIZEUS_hc_enabled |
true |
Enable HC support |
AIZEUS_hc_transferUnits |
true |
Auto-transfer AI to HC |
AIZEUS_hc_loadBalance |
true |
Balance across multiple HCs |
CBA Settings
When CBA_A3 is installed, AI Zeus integrates with the CBA Settings framework for in-game configuration.
Accessing Settings
- Open the Configure Addons menu from the main menu or pause menu
- Select AI Zeus from the addon list
- Adjust settings as needed
- Settings are automatically saved and synced
Available Settings Categories
- Core — Enable/disable, controlled side, debug mode
- Timing — Update intervals, decision frequency
- Combat — Garrison, CQB, ambush, suppression behaviors
- Support — CAS, artillery, reinforcements, resupply
- Movement — Vehicles, patrols, night operations
- AI Skill — Skill presets, accuracy ranges
CBA settings are server-authoritative. Only server admins can change settings during a mission. Changes sync to all clients automatically.
Debugging
Enable debug mode to visualize AI Zeus decision making.
// Enable debug markers
AIZEUS_debug = true;
AIZEUS_debug_adminOnly = false; // Show to all players
Debug Marker Colors
- Red - Confirmed enemy (fresh intel)
- Orange - Stale intel (older than threshold)
- Yellow - Unconfirmed contact
- Green - Friendly units
- Blue - Objectives/waypoints