Skip to content

AI Runtime HC Loop Map

rayswaynl edited this page Jul 2, 2026 · 25 revisions

AI Runtime And HC Loop Map

This page is a focused runtime map for server loops, town AI, headless-client delegation and AI/autonomy edges. Use it with AI/headless/performance, Server runtime atlas, HC delegation/failover, AI commander autonomy audit and Performance opportunity sweep.

SRC below means Missions/[55-2hc]warfarev2_073v48co.chernarus.

How To Use This Page

Need Go here
Server/HC loop orientation Use the runtime loop table, then follow owner pages for branch-sensitive details.
AI commander and autonomous logistics Use AI commander autonomy audit; it owns the AI supply-truck and AI commander branch matrices.
Town AI vehicle cleanup safety Use Town AI vehicle despawn safety for the DR-45 player-occupancy guard route.
Patrols v2 Use Towns/camps/capture for the current side-upgrade patrol path and historical DR-57 branch matrix.
HC lifecycle/failback Use Headless delegation/failover for payloads, callbacks, disconnect behavior and smoke gates.

Current Branch Scope

Rows in this map name the exact branch refs and line anchors they were proven against. The Town AI tracked-vehicle cleanup route was refreshed on 2026-06-24 after B74.2 advanced from origin/claude/b74.2-aicom@d472da6a to current origin/claude/b74.2-aicom@21b62b04; the scoped d472da6a..21b62b04 diff is empty for both maintained-root server_town_ai.sqf files, so the branch advance does not change DR-45 status. Older rows preserve their cited branch-specific anchors until a dedicated refresh.

Surface Current branch truth Route
AI supply-truck logistics Docs head 4b6f5ca9 remains old-shape for checked source paths: the compile is commented at Init_Server.sqf:36, but the truck-supply + AI-commander branch still raw-spawns UpdateSupplyTruck at :382-383. Direct Miksuu b8389e748243 matches the raw-spawn shape at :36,383; perf 0076040f raw-spawns at :36,378. Current stable origin/master@0139a346 comments the compile at :43, initializes wfbe_ai_supplytrucks and warning-disables legacy logistics at :461-463 in both maintained roots. Historical a96fdda2 also warning-disables (Init_Server.sqf:37,384). AI_UpdateSupplyTruck.sqf:17 still points at missing Server\FSM\supplytruck.fsm in checked refs. AI commander autonomy audit
Town AI tracked-vehicle cleanup Repo docs branch HEAD@6ee7c754abb6 remains source-unchanged from ce3cf871e1e7 for both maintained-root server_town_ai.sqf files and deletes tracked inactive vehicles with only !(isPlayer leader group _x) at :214 in both roots. Current stable/B74.1 origin/master@f8a76de34, B69 8d465fce and adjacent B74 b23f557f protect source Chernarus at :312/:325, but maintained Vanilla remains unsafe at :319. Current B74.2 origin/claude/b74.2-aicom@21b62b04 keeps the previous B74.2 route: source Chernarus line-drifts to :324/:337, maintained Vanilla remains leader-only at :319, and origin/master..origin/claude/b74.2-aicom changes source Chernarus only for pop-tier active-town budget logic. Direct Miksuu b8389e748243 is old-shape at :195, perf 0076040f at :219 and historical a96fdda2 at :200 in both maintained roots. origin/claude/upstream-town-defense-diag-sync@cde1f1fc is delegated-cleanup diagnostics evidence and does not close DR-45. No checked current ref contains Server_CleanupExpiredTownDefenseAssets.sqf; older 89ae9dad helper evidence is historical, not current branch truth. Town AI vehicle despawn safety
Patrols v2 Current stable origin/master@0139a346 carries the side-upgrade patrol driver, HC/local dispatch, WFBE_ACTIVE_PATROLS marker state, level-aware cap, level-4 convoy/camp-sweep hooks and && patrol worker exit in both maintained roots. It starts server_side_patrols.sqf at Init_Server.sqf:690, dispatches HC/local at server_side_patrols.sqf:64-69, receives delegate-sidepatrol at Client/PVFunctions/HandleSpecial.sqf:50, and reports slot/marker events through Common_RunSidePatrol.sqf:54-56,82-84,245-247,264-266, Server_HandleSpecial.sqf:345-372 and updatepatrolmarkers.sqf:3,19. Docs head, direct Miksuu, perf and historical a96fdda2 lack the Patrols v2 files in checked maintained roots; cf2a6d6a is historical stable evidence only. Runtime smoke remains pending. Towns/camps/capture

Runtime Loop Table

Loop / handler Source refs Role Cadence / exit Risk
Role split / init chain SRC/initJIPCompatible.sqf:55-57, :214-239 Common, server, client, HC Once, with waits HC is `!(hasInterface
HC support gate SRC/initJIPCompatible.sqf:164-170 Common Once AI delegation mode 2 is disabled below OA 1.62 build gate.
HC boot / registration Docs source SRC/Headless/Init/Init_HC.sqf:4-15; current stable origin/master@0139a346 Headless/Init/Init_HC.sqf:94-129, Server_HandleSpecial.sqf:406-431 HC Docs source fixed sleep 20 then fire-once PVF; current stable adds reseat/park plus 15s rewatch re-announce after mission-restart re-grabs Current stable registration is idempotent and prunes dead HC entries, but still has no delegated-work failback or work records.
Server init waits SRC/Server/Init/Init_Server.sqf:1, :126-127, :507, :583 Dedicated/hosted server Waits for common/town/time gates Stalls if common/town init never completes.
Client init waits/JIP fanout SRC/Client/Init/Init_Client.sqf:164-165, :594-596, :757-770, :960-962 Client/hosted player Waits, then JIP queries Heavy town-wide query fanout on join.
Town state loop SRC/Server/FSM/server_town.sqf:34, :57, :259-270 Server Per-town sleep 0.05, outer sleep 5; exits on WFBE_GameOver Core scan/capture/supply loop.
Town AI activation loop SRC/Server/FSM/server_town_ai.sqf:35, :84-121, :157-185, :191-251 Server Per-town sleep 0.05, outer sleep 5; exits on WFBE_GameOver Drives AI spawn/despawn and HC delegation. This is an intentionally throttled scheduled loop, not a per-frame target.
Camp capture manager SRC/Server/FSM/server_town_camp.sqf:8-13, :25, :91-93 Server Per-camp sleep 0.01 (10 ms inner), outer sleep 0.1 (~100 ms cycle); exits on WFBE_GameOver Continuous camp scan.
Town patrol workers SRC/Common/Functions/Common_CreateTownUnits.sqf:42-63; SRC/Server/FSM/server_town_patrol.sqf:18, :47-53 Server or delegated locality sleep 30; !WFBE_GameOver && _aliveTeam Workers exit as soon as WFBE_GameOver is true OR the team dies; there is no cross-condition survivor risk.
Patrols v2 side patrol driver Branch-sensitive source: current stable origin/master@0139a346 has Init_Server.sqf:690, Server/FSM/server_side_patrols.sqf:64-69,72, Client/PVFunctions/HandleSpecial.sqf:50, Common/Functions/Common_RunSidePatrol.sqf:5-8,54-56,82-84,245-247,264-266, Server/Functions/Server_HandleSpecial.sqf:345-372 and Client/FSM/updatepatrolmarkers.sqf:3,19. These files are absent from docs head, direct Miksuu, perf and historical a96fdda2 checked maintained roots. Server or HC on stable master Driver sleeps 20; patrol runner sleeps 30; both exit on WFBE_GameOver; current runner uses && Current stable origin/master@0139a346 supersedes the old server_town_ai random-town patrol launch. Smoke upgrade levels 1/2/3, level-4 convoy/camp-sweep hooks, HC delegate-sidepatrol, friendly markers and side-slot/cooldown release. Historical DR-57/AI1 and release older loop-exit evidence live in Towns/camps/capture.
Static defense manage/operate Docs source SRC/Server/Functions/Server_ManageTownDefenses.sqf:15-32, Server_OperateTownDefensesUnits.sqf:24-85; current stable origin/master@0139a346 server_town.sqf:290, server_town_ai.sqf:262, Server_OperateTownDefensesUnits.sqf:55-67 Server with optional HC creation Event-like on town activation/capture Current stable calls the active town side and has no west/east/resistance side gate in the HC delegate branch. HC static gunners are still effectively fire-and-forget because update-back/accounting is absent.
Base defense remanning SRC/Server/Functions/Server_HandleDefense.sqf:7-42; SRC/Server/Construction/Construction_StationaryDefense.sqf:90-99 Server with optional HC creation Missing gunner sleep 7, normal sleep 420; exits when defense dies No explicit game-over exit.
Resource/income loop SRC/Server/FSM/updateresources.sqf:20, :67, :74-75 Server FPS-adjusted sleep; exits on gameOver Uses inverse GetSleepFPS; low FPS shortens sleeps.
FPS sleep helper SRC/Common/Functions/Common_GetSleepFPS.sqf:5-9 Common helper Called by loops Scaling may be inverted depending on intended semantics.
Performance audit loop SRC/Common/Functions/Common_PerformanceAudit.sqf:221-240; SRC/Server/Init/Init_Server.sqf:586-589 Server audit runner Default flush sleep 60; exits on gameOver if set Good observability hook but only as complete as callers.
Cleanup/restorer set SRC/Server/Init/Init_Server.sqf:535-560; cleaners such as droppeditems_cleaner.sqf:4, :19, :42 Server Timer plus per-item sleeps; mostly WFBE_GameOver Always-on cleanup pressure.
Global stats extension SRC/Server/CallExtensions/GlobalGameStats.sqf:5, :24 Server sleep 60; no explicit exit Always-on extension loop; player-count heuristics exclude HC.
AI supply truck loop SRC/Server/AI/AI_UpdateSupplyTruck.sqf:5-17; docs head SRC/Server/Init/Init_Server.sqf:36,382-383; current stable origin/master@0139a346 Init_Server.sqf:43,461-463 Intended server sleep 60; exits on gameOver if spawned Branch-sensitive legacy path: docs head/Miksuu/perf raw-spawn a commented/missing worker; current stable and historical a96fdda2 warning-disable it instead. Keep details on AI commander autonomy audit.
Commander map-order executor SRC/Client/GUI/GUI_Menu_Command.sqf:252-306; SRC/Common/Functions/Common_SetTeamMoveMode.sqf:8; SRC/Common/Functions/Common_SetTeamMovePos.sqf:8; SRC/Server/AI/AI_SquadRespawn.sqf:105-109; SRC/Server/AI/AI_AdvancedRespawn.sqf:120-124 UI writes replicated group vars; static server reads found only respawn reset No general loop found wfbe_teammode / wfbe_teamgoto are not proof of a server-owned waypoint executor.
AI town attack-path helper SRC/Server/Init/Init_Server.sqf:45-47; SRC/Server/Functions/Server_AI_SetTownAttackPath.sqf:18,41,80-109 Compiled server helper for arced town attack waypoints No static caller found in stable master scan Helper clears existing waypoints before path generation; if a future caller revives it, smoke the early-exit branches before relying on generated attack routes.
Spawned-unit follow-up SRC/Client/Functions/Client_BuildUnit.sqf:463-465; SRC/Client/Functions/Client_SendSpawnedUnitsToLeaderWaypoint.sqf:13-94 Client-side helper for newly bought AI On spawn/build completion only Runs only when AUTO_SEND_SPAWNED_UNITS_TO_WAYPOINT is enabled (:13). It purges stale stored map orders within 25m (:24-34), falls back through current waypoint / expectedDestination (:37-65), then commandMoves units or vehicle drivers (:80-92). This is not a general commander AI scheduler.
Player AI watchdog/recovery SRC/Client/Init/Init_Client.sqf:515; SRC/Client/Functions/Client_WatchdogPlayerAI.sqf:147-333; SRC/Client/Functions/Client_RecoverPlayerAI.sqf:1-1000 Client-side stuck-AI recovery Client loop/action path Automatic recovery has a 120s cooldown and 50m destination threshold (Client_WatchdogPlayerAI.sqf:69-70), skips deliberate STOP orders (:203-207) and updates the last-recovery marker at :308. Manual recovery can use a 2m threshold (Client_RecoverPlayerAI.sqf:104-112) and treats DoNotPlan as usable when a destination exists and is far enough (:12-14, :224-225).
AI leader respawn hooks SRC/Server/Init/Init_Server.sqf:10-12; SRC/Server/AI/AI_AddMultiplayerRespawnEH.sqf:1; SRC/Server/AI/AI_AdvancedRespawn.sqf:25-124; SRC/Server/AI/AI_SquadRespawn.sqf:14-111 Server-owned AI leader respawn Branch differs by WF_A2_Vanilla Non-vanilla rebinds the killed/MPRespawn path (AI_AdvancedRespawn.sqf:25-26, :55-65); vanilla uses the squad-respawn loop and bails if a player has taken the leader slot (AI_SquadRespawn.sqf:15, :21, :29). Both reset non-autonomous move state (AI_SquadRespawn.sqf:103-109; AI_AdvancedRespawn.sqf:118-124).

Non-AI runtime surfaces such as server-FPS publishers and AntiStack database loops are intentionally routed to Server gameplay runtime atlas, Hosted server FPS loop sleep, External integrations and AntiStack database extension audit. Keep this page focused on AI, HC and player-AI lifecycle when adding new rows.

HC Delegation Map

HC delegation creates units on another machine through request/response helpers; it does not magically transfer already-created unit locality. The docs-source HC boot path in SRC/Headless/Init/Init_HC.sqf:12-15 uses a fixed sleep 20 before connected-hc. Current stable adds HC reseat/deadspawn parking plus a persistent rewatch that re-announces connected-hc after mission-restart re-grabs (Headless/Init/Init_HC.sqf:94-129) and idempotent server registration (Server_HandleSpecial.sqf:406-431), but it still has no delegated-work failback.

Flow Evidence Completeness
HC detection SRC/Headless/Functions/HC_IsHeadlessClient.sqf:5; SRC/initJIPCompatible.sqf:55-57 Complete for OA HC identity assumption.
HC registration Docs source SRC/Headless/Init/Init_HC.sqf:12-15, Server_HandleSpecial.sqf:117-128; current stable Headless/Init/Init_HC.sqf:94-129, Server_HandleSpecial.sqf:406-431, Server_OnPlayerDisconnected.sqf:22-29 Current stable connect/reconnect/disconnect candidate-list handling is idempotent, but owner-id 0 can still miss and there is no delegated-work failback.
Client delegation mode 1 SRC/Server/Functions/Server_OnPlayerConnected.sqf:68-70; Server_FNC_Delegation.sqf:15-73, :104-178; Client/FSM/updateavailableactions.fsm:49, :124 Most complete: client FPS/group counts, fallback to server and tracker cleanup.
Town AI to HC mode 2 Docs source SRC/Server/FSM/server_town_ai.sqf:157-179; current stable server_town_ai.sqf:242-248, Server_DelegateAITownHeadless.sqf:22-56, Client_DelegateTownAI.sqf:29-44, Server_HandleSpecial.sqf:86-115 Partial: delegated groups and vehicles report back on current stable, but there is no timeout/failback or HC work record.
Static town defense to HC Current stable Server_OperateTownDefensesUnits.sqf:55-67, Server_DelegateAIStaticDefenceHeadless.sqf:21-28, Client_DelegateAIStaticDefence.sqf:25-39, Common_CreateUnitForStaticDefence.sqf:68-78,205 Fire-and-forget; no server update-delegation-static_defence receiver or complete payload exists.
Base defense remanning to HC Server_HandleDefense.sqf:19-23 Fire-and-forget; no confirmation callback.
Generic delegate-ai Client/PVFunctions/HandleSpecial.sqf:13-15; Client_DelegateAI.sqf:20-32; Common_CreateUnitsForResBases.sqf:35 Stale/abandoned-looking; no clear live caller found.
Locality transfer helper Server_SetLocalityOwner.sqf:13 Not used by town/static HC AI delegation; delegation creates on remote rather than transferring existing locality.

Cleanup-loop edge: the client/HC delegation receivers each spin a local group cleanup poll after remote creation. Current stable Client_DelegateTownAI.sqf:52-53, Client_DelegateAI.sqf:29-30 and Client_DelegateAIStaticDefence.sqf:57-58 all wait while count (units _team) > 0, sleep one second, then deleteGroup _team. There is no timeout or server reconciliation in those receivers; a leaked unit can leave a long-lived local cleanup thread.

Order And Recovery Chain

There are three separate order/recovery concepts that are easy to blend together:

Concept Source Scope
Commander order UI GUI_Menu_Command.sqf:252-306 Commander-facing Move/Patrol/Defense map-click flow. It writes team variables and marker feedback; a general server-side executor is still unproven by static source.
Spawned-unit inheritance Client_BuildUnit.sqf:463-465; Client_SendSpawnedUnitsToLeaderWaypoint.sqf:13-94 Newly bought units can inherit a stored map order, group waypoint or expectedDestination. This only runs at build/spawn handoff time and then issues commandMove; it does not maintain a queue.
AICOM stuck-recovery v2 AI_Commander_AssignTowns.sqf; Common_RunCommanderTeam.sqf; AI_Commander_Strategy.sqf; Common_AICOM_AutoFlip.sqf AI-commander teams use a source-backed strike ladder, TARGET_ABANDON reasons, HC/server-local recovery actions and RPT tokens documented in AICOM stuck-recovery v2.
Player-AI recovery Client_WatchdogPlayerAI.sqf:147-333; Client_RecoverPlayerAI.sqf:1-1000 Client-side stuck-unit recovery for player-group AI, with manual and automatic paths. Preserve the STOP-order skip, recovery cooldown and DoNotPlan/destination fallback semantics before treating a unit as stuck.

When debugging "AI ignores orders", first identify which layer is failing: command UI write, spawned-unit handoff, server/HC waypoint creation, or client-side recovery. Patching the wrong layer can make the visible symptom disappear in one scenario while leaving the real owner path untouched.

Findings

Severity Finding Evidence Safe next action
High AI supply trucks are broken if enabled on raw-spawn branches. Docs head Init_Server.sqf:36,382-383; direct Miksuu b8389e748243 :36,383; perf 0076040f :36,378; current stable origin/master@0139a346 warning-disables at Init_Server.sqf:43,461-463; historical a96fdda2 safe-disables at :37,384; AI_UpdateSupplyTruck.sqf:5-17; missing Server/FSM/supplytruck.fsm. Preserve the current-stable warning-disable shape during merges, or revive logistics only with a real server-owned loop/FSM and smoke.
High Static-defense HC delegation has no completion/failback path. Current stable Server_OperateTownDefensesUnits.sqf:55-67; Server_DelegateAIStaticDefenceHeadless.sqf:21-28; Client_DelegateAIStaticDefence.sqf:25-39; no update-delegation-static_defence server case. Add callback/timeout/work records, or deliberately keep static-defense manning server-local/fire-and-forget with docs/logs.
Medium Town HC delegation lacks heartbeat/failback despite current-stable update-back. Current stable server_town_ai.sqf:242-248; Server_DelegateAITownHeadless.sqf:22-56; Client_DelegateTownAI.sqf:29-44; Server_HandleSpecial.sqf:86-115. Smoke HC disconnect during active town and document orphan behavior before adding work records.
Medium Client/HC delegated-group cleanup polls are unbounded. Current stable Client_DelegateTownAI.sqf:52-53; Client_DelegateAI.sqf:29-30; Client_DelegateAIStaticDefence.sqf:57-58. Add timeout/diagnostic/reconciliation when adding HC work records; smoke leaked/dead group cleanup on HC disconnect.
Medium FPS sleep helper may be inverted. Common_GetSleepFPS.sqf:5-9; updateresources.sqf:74-75. Decide intent before patching; record RPT/perf evidence.
Medium Patrols v2 is current-master source-present but runtime-smoke pending. Current stable origin/master@0139a346 has Init_Server.sqf:690, server_side_patrols.sqf:64-69, Client/PVFunctions/HandleSpecial.sqf:50, Common_RunSidePatrol.sqf:5-8,54-56,82-84,245-247,264-266, Server_HandleSpecial.sqf:345-372 and Client/FSM/updatepatrolmarkers.sqf:3,19; branch matrix. On current origin/master@0139a346, run an Arma 2 OA smoke for Patrols upgrade levels 1/2/3, level-4 convoy/camp-sweep hooks, HC delegation, marker audience, patrol death and side-slot/cooldown release. Treat old DR-57/AI1 and release's older patrol-loop fix as historical unless working on those branch families.
Medium AI commander autonomy is scaffolded, not complete. Funds at Init_Server.sqf:356-365; upgrade helper Server_AI_Com_Upgrade.sqf:12-50; no complete scheduler proven. Treat as owner decision / disabled partial until scheduler and buy/upgrade smoke exist.
Medium Commander map-order execution is not proven by static source. GUI_Menu_Command.sqf:252-306 writes wfbe_teammode / wfbe_teamgoto; RequestTeamUpdate.sqf:3-25 is a separate live team-property PVF; static AIMoveTo / AIPatrol callers are support/resistance paths, not the command-menu vars. Smoke Move, Patrol, Defense and Take Towns in Arma 2 OA before hardening or extending commander AI orders.
Medium AI town attack-path helper is compiled but dormant-looking in stable master, and its path-building branch clears existing waypoints before random/safety exits. Init_Server.sqf:45-47; Server_AI_SetTownAttackPath.sqf:18,41,74-78,80-109; no static caller found for WFBE_SE_FNC_AI_SetTownAttackPath outside compile/docs in this scan. Branch check 2026-06-06 found current source/Vanilla, stable origin/master, Miksuu upstream, perf/quick-wins and release all still carry the TODO comments for combat/speed, radio-on-waypoint completion and possible camp securing. Treat the TODOs as AI polish/enhancement debt, not a confirmed runtime failure. If AI commander/order revival calls this helper, add a smoke where a distant team receives a town attack order and still has final depot/camp waypoints after random/safety branches; only then tune behavior/combat speed or radio messages.
Low/Medium Stale delegation helper shadows the current inline implementation. Server/Functions/Server_GetDelegators.sqf still exists in source, Vanilla and modded trees, but no compile/reference to it was found. Active source/Vanilla delegation defines WFBE_SE_FNC_GetDelegators inline in Server_FNC_Delegation.sqf:139-178; modded Eden/Lingor/Napf use the same inline pattern around :127. The inline version also accounts for already-selected repeats, unlike the standalone helper. Treat Server_GetDelegators.sqf as stale duplicate/generated drift. Keep active patches in Server_FNC_Delegation.sqf; delete/annotate the stale helper only after a generated/modded cleanup decision.
Low/Medium Current-stable town static defenses use the active town side; the open HC issue is accounting/failback, not a side gate. Current stable capture and town-AI activation call OperateTownDefensesUnits with the active side at server_town.sqf:290 and server_town_ai.sqf:262; the HC delegate branch has no west/east/resistance side gate at Server_OperateTownDefensesUnits.sqf:55-67. Do not add a side gate as a docs-derived "fix"; either restore static-defense update-back/work records or keep fire-and-forget explicit, then smoke west/east/resistance manning.

Runtime Smoke

Target Smoke gates
Dedicated server Verify commonInitComplete, townInit, serverInitFull, town loop, town AI loop, camp loop, cleanup loops, performance audit and the target branch's FPS publisher shape. Use Hosted server FPS loop sleep for one-publisher vs two-publisher expectations.
Hosted/listen Verify server/client branches both run, the target branch's FPS publishers exit cleanly or are absent as expected, and client waits/JIP queries finish without relying on server-FPS publication.
JIP Join after server init and town activation; verify side logic, town/camp states, marker updates, day/night sync and no duplicated local loops.
HC Run dedicated plus HC with delegation mode 2; verify current-stable reseat/reannounce telemetry, idempotent connected-hc registration, town AI delegation, update-town-delegation, HC disconnect removal and fallback behavior.
Negative AI supply In a private raw-spawn branch only, enable the old AI supply-truck path and confirm the missing-FSM failure; use that as a release gate before any revival. Current stable and historical a96fdda2 should instead show the warning-disable path; no live release/* head exists as of 2026-06-22.

Continue Reading

Previous: AI/headless/performance | Next: HC delegation/failover

Related: Server runtime atlas | AI commander autonomy audit | Town AI vehicle despawn safety | Feature status

Sidebar

Clone this wiki locally