Skip to content

Arma 2 OA External Reference Guide

rayswaynl edited this page Jun 2, 2026 · 7 revisions

Arma 2 OA External Reference Guide

This page maps official Bohemia Interactive Arma 2 OA scripting references to the Wasp Warfare systems where those engine rules matter. Use it before applying Arma 3-era assumptions to networking, locality, event handlers, object variables, object scans or UI/performance code.

Rule: prefer Bohemia Interactive Community Wiki pages that explicitly list Arma 2: Operation Arrowhead support. When a BI page also describes newer Arma 3 behavior, treat that newer behavior as out-of-scope unless the page or source proves OA support.

Current docs scan: Arma 2 OA compatibility audit records the latest search for accidental Arma 3 references. The current result is that explicit Arma 3 terms are guardrails or contrast notes, not implementation advice.

Fast Reference Matrix

Topic Official reference Wasp source hotspots Development implication
Multiplayer locality and JIP Multiplayer Scripting initJIPCompatible.sqf:176-184, Common/Init/Init_PublicVariables.sqf:45,50, Lifecycle wait-chain Hosted, dedicated, client and JIP paths are not interchangeable. Validate producer/consumer timing before changing replicated flags or post-join waits.
publicVariable persistence and bandwidth publicVariable Common/Functions/Common_StagnateSupplyIncomeNoPlayers.sqf:55-56, Public variable channel index, Networking/PV Broadcast variables are JIP-replayed, but repeated or large broadcasts can hurt bandwidth. Keep direct-channel additions rare and documented.
Public-variable event handlers addPublicVariableEventHandler Common/Init/Init_PublicVariables.sqf:45,50, PVF dispatch playbook PVEHs trigger on receipt, not on ordinary local assignment. There is no removal path, so registration timing and duplicate init guards matter.
Object and namespace variables setVariable Common/Init/Init_Town.sqf:63,87-88,119-120, Client/Module/supplyMission/supplyMissionStart.sqf:20,34, Client/Module/CoIn/coin_interface.sqf:715 The third setVariable argument controls network publication. Treat client-written public object vars as untrusted unless the server recomputes or validates them.
Event-handler stacking addEventHandler Common/Init/Init_Unit.sqf:101-127,188,211, Common/Init/Init_Town.sqf:85,106, Current supply heli PR addEventHandler stacks instead of replacing old handlers. Use guard object vars or stored handler IDs before re-registering effects on reusable vehicles/units.
Object scans nearestObjects Server/Module/supplyMission/supplyMissionStarted.sqf:28,44, Server/FSM/cleaners/crater_cleaner.sqf:15,28, Server/FSM/cleaners/droppeditems_cleaner.sqf:15,22,29 Prefer narrow class filters and bounded cadence. Matching uses inheritance (isKindOf), and broad empty-type scans are review targets.
Compile/preprocess diagnostics preprocessFileLineNumbers initJIPCompatible.sqf:37,56,62-63,121,123, Common/Init/Init_PublicVariables.sqf:44,49, SQF code atlas Keep preprocessFileLineNumbers for compiled functions because line numbers improve RPT debugging. Missing files are build/runtime risks, not cosmetic docs nits.
Simulation vs render scope Simulation vs Render Time Scope Common/Common_MarkerUpdate.sqf:78-88,103-218, Common/Common_AARadarMarkerUpdate.sqf:55-180, Client UI systems atlas For visible HUD/marker work, distinguish smooth visual positions from lower-rate simulation state. Do not blindly replace position commands with Arma 3-only variants.
FPS/tick diagnostics diag_fps, diag_tickTime Common/Functions/Common_GetSleepFPS.sqf:5-9, Server/Module/serverFPS/monitorServerFPS.sqf:4, Common/Functions/Common_PerformanceAudit.sqf:84,154 Performance docs and patches should preserve existing diagnostic vocabulary: FPS, tick time, RPT logs and PerformanceAudit records.

Repo-Specific Rules

  1. Do not import Arma 3 networking patterns such as remoteExec into this mission. The live system is Arma 2 OA-era public variables, PVEHs and Wasp/WFBE wrapper functions.
  2. For networked state, first classify it as missionNamespace global, object variable, group variable, UI namespace state, profile state or local script state.
  3. For JIP, distinguish replayed public variables from live event-handler side effects. A late joiner can receive variable values without having seen the original event sequence.
  4. For object variables with true, ask who wrote the value. If the client wrote authority-bearing cargo, price, side or reward data, document it as a trust boundary.
  5. For event handlers, assume repeated initialization can stack handlers unless source shows a guard, a removed handler ID or a one-shot object lifecycle.
  6. For object scans, avoid changing class filters or scan radii without checking inheritance behavior and runtime cadence.
  7. For performance code, preserve source-backed RPT/PerformanceAudit evidence instead of replacing it with unsupported profiling assumptions.

Wasp Examples To Recheck First

Change area Read these first Why
PVF dispatcher hardening PVF dispatch playbook, Networking/PV, Public variable channel index PVEH behavior, JIP replay and direct-channel exceptions define the safe migration path.
Supply mission or PR #1 supply heli work Supply mission authority cleanup, Supply mission architecture, Current supply heli PR This area combines client-written object vars, server completion, reusable vehicles, event handlers and broad object scans.
Town/camp state Gameplay systems atlas, Economy/towns/supply Town variables use both local and public object vars; capture, SV and marker state are JIP-sensitive.
UI/marker/performance work Client UI systems atlas, AI/headless/performance, Testing workflow Visible state, client loops and performance audit records need OA-compatible timing and position assumptions.
Generated mission propagation Tools/build, Content/maps Engine-correct source changes still need Chernarus-first edits and LoadoutManager propagation.

Open Reference Questions

Question Why it remains open Suggested owner
Exact Arma 2 OA behavior for removing vehicle Killed EHs in PR #1 supply-heli reuse The BI addEventHandler page confirms stacking and removal by ID, but the PR branch needs an in-game smoke test for reusable supply vehicles. Future supply code owner
Exact best class filter for command-center scans nearestObjects supports class arrays and isKindOf matching, but the mission currently filters terminal type in script after broad scans. Future supply/performance owner
Whether any visual-position command is worth adopting for map/HUD work OA 1.60 introduced render/simulation split, but any command substitution must be verified for OA 1.64 and existing UI behavior. UI/performance owner

Continue Reading

Previous: Testing workflow | Next: Arma 2 OA compatibility audit

Main map: Home | Fast path: Quickstart | Agent file: agent-context.json

Sidebar

Clone this wiki locally