-
Notifications
You must be signed in to change notification settings - Fork 1
Old WarfareBE Performance Comparison
This page compares the old BennyBoy WarfareBE Takistan source with current Wasp Chernarus for FPS-relevant architecture. It is meant to answer the community question: would the older mission code likely perform better, and what lessons should be tested before cutting core gameplay?
Scope:
- Old source:
BennyBoy-/ArmA2_WarfareBEat commitaeb71bb(Updated nfo), cloned locally for this pass. - Current source:
Missions/[55-2hc]warfarev2_073v48co.chernarusondocs/developer-wiki-index. - This is docs-only analysis. It does not prove runtime FPS by itself; it identifies what to measure.
The old mission is likely lighter in some practical ways, but not because its core Warfare model is radically different. Old WarfareBE still has town nearEntities scans, town-AI activation/despawn, dynamic town defense gunners, public-variable dispatch, garbage collectors, AI teams and support loops.
The stronger FPS suspects are:
- Lower old default player AI cap and lower practical content load.
- Fewer Wasp-era added systems: performance audit, server-FPS publishers, AFK/AntiStack, extra marker/HUD state, cleaner/restorer scripts, integrations and feature branches.
- Wasp current public-variable/event surface is broader.
- Current Wasp defaults assume headless-client delegation, but when HC is absent or misbehaving, server fallback still carries the work.
So the best next move is not “revert to old code.” It is a controlled A/B test: same player count, same AI cap, same view distance, same town-defense settings, same cleanup settings, with RPT/performance audit output captured.
Old Benny WarfareBE probably feels lighter, but the source does not show a magic old town-AI system.
Both old and current Wasp use town nearEntities scans, town-AI spawn/despawn, static-defense gunners, public variables, garbage collectors and AI teams.
Likely FPS differences:
- old default player AI cap was lower: 12 vs current Wasp lobby default 15
- current Wasp has more extra systems: HC routing, PerformanceAudit, server FPS publishers, AFK/AntiStack, more PV channels, cleaner/restorer scripts, richer HUD/marker logic
- Wasp has more code/content overall: old clone 603 files / 546 script files; current source mission 787 files / 676 script files
- if HC is not actually carrying town/static AI, Wasp falls back to server-side work
Recommendation: test old vs current with the same AI cap first. Then test current Wasp with player AI capped around 8-10 for normal roles and Soldier as the high-AI role.
| Metric | Old BennyBoy WarfareBE | Current Wasp source mission | Interpretation |
|---|---|---|---|
| Files in mission tree | 603 |
787 |
Wasp has a broader code/content surface. |
| SQF/SQS/FSM script files | 546 |
676 |
Wasp has more scheduled/runtime code to audit. |
nearEntities hits |
120 |
110 |
Old is not free of entity scans; current has fewer raw hits in this scan. |
nearestObjects hits |
21 |
26 |
Current has slightly more object-scan surfaces. |
while {true} hits |
32 |
34 |
Loop count is similar; loop content/cadence matters more. |
setVariable [..., true] hits |
198 |
216 |
Current has a somewhat broader replicated-state surface. |
publicVariable hits |
22 |
65 |
Current has many more explicit public-variable references. |
addPublicVariableEventHandler hits |
6 |
34 |
Current has more direct event-handler setup. |
PerformanceAudit hits |
0 |
198 |
Current has a measurement layer old does not have. Useful, but still code. |
serverFPS / SERVER_FPS hits |
0 |
16 |
Current publishes server FPS; old source does not have that feature. |
Scan command family: rg over old clone and current source with *.sqf, *.sqs, *.fsm, *.hpp filters. Treat these as rough comparison counters, not profiler output.
Old default lobby values:
| Old source | Evidence |
|---|---|
AI group size default 10
|
BennyBoy-/ArmA2_WarfareBE@aeb71bb Rsc/Parameters.hpp:10-15; fallback Common/Init/Init_CommonConstants.sqf:63
|
Player group size default 12
|
Rsc/Parameters.hpp:16-21 |
| AI delegation default disabled |
Rsc/Parameters.hpp:4-9; fallback Common/Init/Init_CommonConstants.sqf:64
|
Current Wasp defaults:
| Current source | Evidence |
|---|---|
AI group size lobby default 4
|
Missions/[55-2hc]warfarev2_073v48co.chernarus/Rsc/Parameters.hpp:56-60 |
Player group size lobby default 15
|
Rsc/Parameters.hpp:62-67 |
Player cap fallback 16
|
Common/Init/Init_CommonConstants.sqf:243 |
Soldier role can multiply player AI cap by 1.5
|
Client/Module/Skill/Skill_Init.sqf:49; detailed table in Player AI caps and role balance
|
AI delegation lobby default is headless client mode 2
|
Rsc/Parameters.hpp:50-55 |
Practical lesson: if the community wants immediate FPS relief without removing CTI identity, cap normal roles lower first. Player AI count is a cleaner, more predictable lever than town-loop surgery.
Suggested experimental cap direction:
| Role family | Suggested first test | Reason |
|---|---|---|
| Normal roles |
8-10 AI followers at full barracks |
Keeps support/specialist utility while reducing total simulated units. |
| Soldier role |
16-20 AI followers at full barracks |
Preserves the infantry-leader identity. |
| Commander bonus | reduce from +10 to +5, or apply full bonus only to Soldier commander |
Commander already has strategic power and base workload. |
| Server event test | same cap for all roles, then role-specific caps | Separates raw AI-load impact from role balance arguments. |
Old WarfareBE:
-
Common/Init/Init_Town.sqf:127-131starts oneserver_town.fsmper town and conditionally oneserver_town_ai.fsmper town when defender or occupation AI is enabled. - Town capture scans nearby
"Man","Car","Motorcycle","Tank","Air"and"Ship"within capture range, then filters by height:Server/FSM/server_town.fsm:139. - Town capture is a polling loop rather than a static state:
Server/FSM/server_town.fsm:137-153repeats nearby-entity checks roughly every 5 seconds. - Town AI initializes active flags, air-active flags, inactivity state and active vehicle tracking:
Server/FSM/server_town_ai.fsm:126-142. - Town group count scales from town SV and
WFBE_C_TOWNS_UNITS_COEF, with a hard cap before coefficient and a separate air-only clamp:Server/Functions/Server_GetTownGroups.sqf:23-73. - Town AI reads
WFBE_C_TOWNS_UNITS_INACTIVE:Server/FSM/server_town_ai.fsm:142. - Town AI detects nearby entities with the same broad class family and height filtering:
Server/FSM/server_town_ai.fsm:615. - Active ground and air town AI are spawned on demand:
server_town_ai.fsm:369-375,417-423. -
Common/Functions/Common_CreateTownUnits.sqf:27-48creates town teams, startsserver_town_patrol.fsm, reveals area and registers vehicles for empty-vehicle cleanup. - The old code already had FPS-aware client delegation: clients send averaged
diag_fpsthroughClient/FSM/updateavailableactions.fsm:119,122, andServer/Functions/Server_FNC_Delegation.sqf:133-144checks group limits plus FPS before delegating AI work. - Inactive town teams are deleted:
server_town_ai.fsm:555. - Inactive town vehicles are deleted if not player units:
server_town_ai.fsm:564. - Town defenses are manned and removed via
WFBE_SE_FNC_OperateTownDefensesUnits:server_town_ai.fsm:447,572.
Current Wasp:
- Current Wasp moves town/SV and town-AI processing into global SQF loops launched once from
Server/Init/Init_Server.sqf:509-515. - Current town AI scans towns in a loop and records audit counters:
Server/FSM/server_town_ai.sqf:35-57. - Current town AI supports client delegation and HC delegation, then falls back to server AI:
server_town_ai.sqf:157-180. - Current town AI despawns teams and vehicles after inactivity:
server_town_ai.sqf:191-216.
What this means:
- The old mission does not avoid town scans, per-town loops or spawn/despawn behavior.
- Current Wasp trades old per-town FSM workers for global SQF loops plus audit counters, HC/client delegation choices and more branch-specific safety concerns.
- Fewer or more files is not the deciding question here. The testable variables are active towns, spawned town groups, static gunners, player squads and whether delegation actually keeps AI off the dedicated server.
- Town AI should be measured with active-town count and AI count in the RPT before any rewrite.
- The already-documented town vehicle deletion risk remains a correctness fix, not a blanket FPS fix.
Old WarfareBE:
- Mission-placed defense logics carry
wfbe_defense_kindvalues inmission.sqm. -
Server_SpawnTownDefense.sqf:39-45creates static defense vehicles and stores them on the logic. -
Server_OperateTownDefensesUnits.sqf:20-48creates gunners for mortars/defenses. -
Server_OperateTownDefensesUnits.sqf:60-100removes those gunners when despawning.
Current Wasp:
- Static-defense work still exists, but current code includes more HC-aware routing and performance audit around these paths.
- Current Wasp also has a high base-defense AI cap surface. Planck's scan found
WFBE_C_BASE_DEFENSE_MAX_AI = 40in current constants and static-defense delegation paths throughServer_OperateTownDefensesUnits.sqf.
Recommendation: do not only count player AI. Count static-defense gunners and town-defense gunners separately during tests. A town/base-defense-heavy match can keep many AI alive even when player groups are capped.
Old WarfareBE:
- Dead/killed units route into a trash object flow:
Common/Functions/Common_OnUnitKilled.sqf:45-49. -
Server_TrashObject.sqf:19-23sleepsWFBE_C_UNITS_CLEAN_TIMEOUT, hides bodies for men, then deletes the object. - Server init starts garbage and empty-vehicle collectors:
Server/Init/Init_Server.sqf:434-457. - The global garbage collector drains
allDeadand spawnsTrashObjectwork:Server/FSM/server_collector_garbage.fsm:63,66. - Empty vehicles use a 20-second polling wait around
WFBE_C_UNITS_EMPTY_TIMEOUTbefore trashing or releasing:Server/Functions/Server_HandleEmptyVehicle.sqf:7,10,17,29.
Current Wasp:
- Current Wasp still has garbage and empty-vehicle collectors.
- Current Wasp additionally starts map cleaners/restorers for dropped items, craters, ruins, buildings and mines:
Server/Init/Init_Server.sqf:540-562. - These cleaner/restorer loops are already documented as measurement-first in Performance opportunity sweep and Marker cleanup/restoration atlas.
Recommendation: test with cleaner/restorer PerformanceAudit labels before changing cadence. Wide scans can look scary in source but run on long timers; AI count tends to dominate sooner.
Old WarfareBE:
- PVF handlers are compiled into
CLTFNC*/SRVFNC*names and PVEHs are registered:Common/Init/Init_PublicVariables.sqf:38-46. -
Common_SendToClients.sqf:14-18uses dynamicCall Compile Formatto assign andpublicVariablethe target PV name, with hosted-server local spawn behavior. -
Common_SendToServer.sqf:14-18has the same dynamic pattern for server-bound PVF. - The old PV receiver uses dynamic compile to resolve the requested handler:
Server/Functions/Server_HandlePVF.sqf:11-14,Client/Functions/Client_HandlePVF.sqf:19-22.
Current Wasp:
- Current source keeps the same basic PVF compile/register pattern:
Common/Init/Init_PublicVariables.sqf:44-52. - Current send helpers still use the dynamic
Call Compile Formatpattern:Common/Functions/Common_SendToClients.sqf:14-18,Common/Functions/Common_SendToServer.sqf:14-18. - Current Wasp has more PV-related source hits and more direct event-handler registrations in the quick scan.
Interpretation:
- Old WarfareBE is not safer or cleaner by default on PVF dispatch.
- Current Wasp has a broader network surface, so hardening and reducing chatty state still matter.
- The PVF dispatch implementation playbook remains a high-value fix because it removes runtime compile lookup and improves trust boundaries.
These additions may be worth their cost, but they should be visible in tests:
| System | Current evidence | Test note |
|---|---|---|
| PerformanceAudit | Common/Functions/Common_PerformanceAudit.sqf:8,44-80 |
Useful for this project, but include audit ON/OFF in at least one controlled test. |
| Server FPS publishers |
Server/GUI/serverFpsGUI.sqf:1-9, Server/Module/serverFPS/monitorServerFPS.sqf:1-8
|
Low cadence, but duplicate published variables are still noise. |
| Cleaner/restorer scripts | Server/Init/Init_Server.sqf:540-562 |
Measure before cadence changes. |
| AntiStack loops | Server/Init/Init_Server.sqf:597-608 |
Test AntiStack ON/OFF separately from mission gameplay. |
| AFK/player status | See Player join/disconnect and AntiStack lifecycle | Client/server status writes can matter with high player count. |
| HC delegation | Server/FSM/server_town_ai.sqf:157-180 |
Test with HC present and absent; fallback changes server load. |
Minimum useful A/B weekend test:
| Step | Old mission | Current Wasp | Why |
|---|---|---|---|
| 1 | Default old settings | Current default settings | Shows real community experience difference, but not cause. |
| 2 | Player AI cap 10
|
Player AI cap 10
|
Normalizes the biggest likely variable. |
| 3 | Same view distance / terrain / weather | Same view distance / terrain / weather | Avoids client FPS false positives. |
| 4 | Record active AI / vehicles / players every 5-10 minutes | Use PerformanceAudit/RPT snapshots | Compare load, not feelings. |
| 5 | Repeat with current Wasp HC connected and disconnected | Current only | Proves whether HC is helping or falling back. |
| 6 | Repeat current Wasp with AntiStack/audit toggles where safe | Current only | Isolates modern support-system cost. |
Metrics to capture:
- player count;
- active AI count;
- vehicles count;
- active towns;
- server FPS;
- average client FPS from several clients;
- view distance / terrain grid;
- AI cap parameter;
- town defender/occupation settings;
- HC connected or absent;
- AntiStack and PerformanceAudit state.
| Priority | Recommendation | Type | Owner page |
|---|---|---|---|
| P0 | Run old-vs-current test with the same player AI cap before drawing conclusions. | test | This page |
| P0 | Cap normal player roles lower first; keep Soldier as high-AI role. | balance/config | Player AI caps and role balance |
| P1 | Count static-defense/town-defense gunners separately from player AI. | measurement | AI, headless and performance |
| P1 | Test current Wasp with HC present and absent. | measurement | Headless delegation and failover |
| P1 | Use PerformanceAudit labels to prove cleaner/restorer and town-AI cost before patching loops. | measurement | Performance opportunity sweep |
| P2 | Reduce duplicate server FPS publishing after consumer mapping. | cleanup | Performance opportunity sweep |
| P2 | Keep PVF dispatcher lookup in the hardening backlog; old code has the same dynamic family, current code has more channels. | hardening/perf | PVF dispatch implementation playbook |
Previous: Performance opportunity sweep | Next: Player AI caps and role balance
Related: AI, headless and performance | Headless client scaling | Marker cleanup/restoration atlas | Networking and public variables
Main map: Home | Live status: Progress dashboard
Home | Agent Guide | Current live state | Release 1.2.2 (B91) | Quickstart | Progress | Lifecycle wait-chain | Join/disconnect | Parameters/build | Assets/config | SQF atlas | PV index | Modules | Support/specials | Commander/HQ | Commander vote/reassign | Construction/CoIn | Construction cleanup | WDDM compositions | Factory/purchase | Upgrades/research | Towns/camps/capture | Victory/endgame | Markers/cleanup | Server runtime | AI runtime/HC | AI commander audit | HC delegation | Town AI safety | Commander reassignment | Resistance supply | Player UI workflow | UI atlas | Respawn/death | Gear template filter | Vehicle cargo loop | Service guards | UI IDD repair | UI design inspiration | WASP overlay | Feature status | Source propagation | release readiness | Tooling readiness | Integration trust | AntiStack DB | Owner decisions | Shelved registry | Abandoned feature revival | Hardening roadmap | PVF dispatch | Server authority | ICBM authority | Attack-wave authority | Telemetry families | AICOM V2 cutover | Consumer port map | Testing workflow | Server ops | Web tools | Ecosystem repos | Arma 2 OA refs | A2 traps | OA compatibility audit | Coverage ledger | Navigation inventory | Pruning ledger | Knowledge roadmap | Agent context | Collab protocol | Worklog | Audit archive 2026-07 | Briefing reference | Utes invasion concept
- Shelved AICOM concepts - revivable someday ideas (owner-shelved 2026-07-03)
Docs rule: source-backed claims only; Arma 2 OA scripting docs only; gameplay edits start in Missions/[55-2hc]warfarev2_073v48co.chernarus.
- Getting started
- Status and coordination
- Agent context
- Agent collaboration protocol
- Agent worklog
- Agent worklog archive
- Progress dashboard
- PR cleanup and integration lab
- Shelved PR #169: gear price double-count
- Shelved PR #194: Chernarus no-trees
- Coordination board
- Codebase coverage ledger
- Bottleneck removal queue
- Current source status
- Wiki mirror reconciliation
- Navigation inventory
- Registers
- Agent orchestration
- Architecture
- Architecture overview
- Mission entrypoints and lifecycle
- Lifecycle wait chain
- Player join/disconnect and AntiStack lifecycle
- Mission parameters/localization/build inputs
- Stringtable localization key-family catalog
- Source inventory
- Content structure and maps
- Assets/config/localization/parameters
- Mission start parameters index
- Code and networking
- Gameplay systems
- Content, reference and catalogs
- Faction unit/vehicle roster catalog
- Auxiliary/SF/civilian unit catalog
- Gear store loadout route catalog
- Upgrade research (cross-faction)
- Gear store price and upgrade catalog
- Gear store catalog (complete, per faction)
- Defense structures catalog
- Artillery reference per faction
- AI squad team templates catalog
- Town AI lifecycle reference
- Town AI group composition catalog
- Class-skill system reference
- Player skill abilities reference
- Default gear template content catalog
- Chernarus map content reference
- Takistan map content reference
- Takistan features
- Takistan parity reference
- Takistan oilfields objective reference
- IRS IR-smoke countermeasure
- Arty module special munitions
- Zeta cargo sling-load reference
- Spawn primitive function reference
- Kill and score pipeline
- Waypoint helper function reference
- Position and proximity function reference
- Side/team state function reference
- Player AI watchdog and recovery
- AICOM stuck-recovery v2
- LoadoutManager data-model contributor guide
- Discord status bot setup and reference
- GLOBALGAMESTATS extension reference
- New player quickstart (player guide)
- Optional client mods (player guide)
- Earning funds and score (player guide)
- Vehicle service and logistics (player guide)
- Commander's handbook (player guide)
- Tactical support menu
- Paradrop player experience
- Supply missions (player guide)
- In-game briefing & Diary field manual
- Playable maps catalog
- Faction root variables reference
- Faction base structures catalog
- Counter-battery radar system
- Bank, Reserve and Artillery Radar structures
- Map ruleset model and object config
- Countermeasures module reference
- Vehicle countermeasure (flares/spoofing)
- UAV terminal and spotter system
- Artillery firing function reference
- Service Point pricing model
- Medic redeployment truck (forward spawn)
- Side-patrol runtime and convoy mechanics
- Day/night cycle and weather system
- Config lookup helper reference
- CIPHER sort utilities reference
- Modded maps status and content
- BattlEye filter setup and OA taxonomy
- Player squad/group join protocol
- AutoFlip vehicle recovery
- Engine stealth fuel toggle
- Valhalla vehicle climbing-assist
- Missile and ordnance Fired-EH reference
- Vehicle equip and rearm reference
- Array and collection utilities
- Server composition spawner reference
- Upgrade queue server loop
- Map boundaries and off-map enforcement
- Namespace/profile/diagnostic utilities
- Group bool getVariable A2-OA trap
- Vehicle weapon balance init
- View distance auto-throttle
- Camp & respawn-camp getters
- Performance audit writer
- Site clearance (bulldozer)
- Factory queue cancel & refund
- AI commander tunable constants
- Experimental feature-flag constants
- Flag system quick reference
- Mission tunable constants catalog
- Gear parsing & cargo capacity
- Structure dressing function
- Paradrop delivery functions
- ICBM nuke client VFX & radiation
- Server HandleSpecial router
- LocalizeMessage chat router
- Gear buy-menu render & price functions
- Server broadcast & telemetry loops
- Per-unit client init pipeline
- Vehicle marking & texture pipeline
- Defense category & budget
- Legacy AI order primitives
- Commander-team driver
- AICOM command verbs
- AICOM behavior fix taxonomy
- AI commander wildcard deck reference
- AICOM aircraft and airfield system
- Static-defense manning
- End-of-game stats screen
- AI commander execution loop
- Deployable bipod / weapon resting
- Town-economy getters
- Server-init deadspawn & airfield probe
- GUER VBIED detonate action
- Resource income-tick engine
- AI commander treasury accessors
- PVF send-helper contracts
- AICOM logging & AICOMSTAT telemetry
- AICOMSTAT v2 event census
- WASPSCALE v2 telemetry
- WASPSCALE v2-ext coverage audit
- Telemetry families reference
- Group lifecycle & entity reaping
- Batch AI spawner orchestrator
- Client funds/income HUD readout
- Server group GC & cap warning
- Town runtime tuning constants
- Client input/hotkey handler
- WASP base-repair system
- WASP DropRPG launcher/ordnance
- CoIn construction-interface client engine
- Town-capture garrison & airfield rebuild
- Map-control & minimap templates
- Client FPS & state telemetry
- Client service-proximity getters
- Airfield-exclusive roster & unit hints
- Unit-camera spectator system
- Town-garrison patrol/defense worker
- RequestTeamUpdate squad-discipline
- Arma2Warfare GPT assistant
- LoadoutManager build configs & defines
- GLOBALGAMESTATS extension logging
- Discord bot instrumented logging
- Eden/Everon & Taviana map content
- Cruise missile strike asset
- AI / HC
- AI headless and performance
- AI mods and pathfinding reference
- Headless client scaling and topology
- AI runtime/HC loop map
- Headless client init and stat loop
- HC delegation target selection
- Player AI caps and role balance
- Old WarfareBE FPS comparison
- AI commander autonomy audit
- Upstream BE 2073 AICOM delta
- Parent 2.073 divergence audit
- AI commander capture & fun plan
- AI commander B69 improvement roadmap
- AI commander B69 implementation sketches
- AICOM V2 cutover status
- Headless delegation and failover
- Commander reassignment call shape
- GUER Director living-resistance pitch
- Quality and operations
- Foundation perf findings & Tier-3 dead-ends
- Dead/stale code register
- Commander vote/reassignment
- Attack-wave authority
- Server runtime and operations
- Server ops runbook
- JIP enrollment & client data delivery (b74.2 lessons)
- Server gameplay runtime atlas
- PerformanceAuditAnalyzer
- Performance opportunity sweep
- Documentation plan
- Knowledge platform roadmap
- Wiki quality audit
- Wiki pruning and relevance ledger
- Audit findings queue (2026-06-03)
- Deep review findings
- Client UI / server-loop perf findings
- Performance gain simulation
- Self-host testing field notes
- Cleanup and work lanes
- Hardening and authority
- UI / player workflows
- Client UI, HUD and menus
- UI HUD and dialogs
- Player UI workflow map
- Client UI systems atlas
- UI IDD collision repair
- UI control class library reference
- UI theme palette and style macros
- UI design inspiration 2026-07
- Available-actions client gate FSM
- Gear/loadout/EASA atlas
- Gear template profile filter
- Vehicle cargo equip loop bounds
- Factory and purchase systems atlas
- Service menu affordability guards
- WASP overlay
- Class-skill system reference
- Skin selector and class swap
- Earplugs audio toggle
- Mission audio catalog
- HQ radio knowledge-base catalog
- QoL trio player hints
- Player vehicle/travel actions
- Tooling / release / integrations
- Tools and build workflow
- Warfare web tools
- Ecosystem & companion repos
- Zargabad tooling parity
- July 2026 release readiness
- Operator monitor and CPU affinity tools
- Tooling release readiness audit
- Source fix propagation queue
- Agent release readiness ledger
- Release source intake map
- Testing/debugging/release workflow
- Current RPT release gate
- RPT telemetry consumer port map
- External integrations
- Integration trust boundary audit
- AntiStack database extension audit
- Community & Dev
- Community & Dev
- Miksuu upstream wiki import / archive index
- Upstream changelog feature leads
- Developer history and upstream lessons
- Upstream Miksuu commit intel
- Upstream mining ledger
- Archive script mining v2
- Upstream BE 2073 AICOM delta
- Parent 2.073 divergence audit
- PR8 and Drone upstream lesson match
- Development lessons learned
- External research reports
- Audit archive 2026-07
- Briefing reference
- Utes invasion concept
- Miksuu archive: Home
- Miksuu archive: Welcome
- Miksuu archive: Big announcements
- Miksuu archive: Changelog
- Miksuu archive: Development process
- Miksuu archive: Discord bot
- Miksuu archive: Gameplay videos
- Miksuu archive: LoadoutManager
- Miksuu archive: Chernarus script architecture
- Base-game visual catalogs
- Compatibility and references
- HC upstream history and lessons
- Player stats branch audit
- BuyMenu EASA QoL branch audit
- Perf quick wins branch audit
- Commander positions branch audit
- Zargabad branch audit
- Quad AI Commander concept
- Arma 2 OA external reference guide
- Base-game config & image reference
- Arma 2 OA compatibility audit
- Arma 2 OA agent traps reference
- Arma 2 OA command versions
- Wiki source consistency
- External Arma 2 OA reference index