Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
3.5 KiB
Reforger 1.8 AI ownership probe
Standalone diagnostic addon. Do not include this folder in Escape's Workshop build.
It depends only on vanilla Reforger. It uses vanilla Game Master Everon and creates
one US soldier in one empty group. Run with -aidProbe on both machines.
The dedicated process advances through five phases, each at least 20 seconds:
- Server-owned baseline after the worker acknowledges both replicated entities.
- Soldier hierarchy transferred with
GiveExt(workerIdentity, true). - Group hierarchy also transferred.
- Worker explicitly attempts
AIControlComponent.ActivateAI()and group activation. - Ownership returned to the dedicated process and AI explicitly reactivated.
Phase 4 is a separate intervention, not a consequence attributed to ownership. A static MP observer and explicit per-connection streaming put the soldier within worker replication coverage. This diagnostic assumes exactly one worker connection. Both processes must have the same mod and game version. LOD 0 is forced on the server agent/group to make an idle one-soldier baseline observable.
Each side logs replication flags, component/agent presence, activation flags, LOD, native perception simulation count, and actual engine-entered soldier/group behavior decision callbacks. Overrides call the original implementation once. No behavior callback is invoked manually. An owner-directed PlayerController RPC runs a small deterministic script calculation and returns an acknowledgement; this proves worker script execution, not expensive AI migration or CPU savings.
Local hidden runner
First copy this addon's addon.gproj and Scripts to a disposable directory and
open that copy in matching 1.8 Workbench. This creates resourceDatabase.rdb;
a loose script-only folder without an index was silently omitted by the Linux
runtime in the initial attempt. Do not index or change the production mod.
Workbench needs vanilla ArmaReforger.gproj available in its addon search path.
The Linux helper requires the repository's existing tools helpers, bubblewrap,
gamescope, Steam/Proton Experimental, a private idle test prefix, and a private
1.8 Linux dedicated runtime. Close the normal game first. Example:
python tests/native/ai_delegation/run_local.py \
--runtime /tmp/erri-takeover-dedicated-runtime \
--indexed-addon /tmp/aid-indexed \
--compat /tmp/erri-takeover-client-compat \
--run /tmp/aid-new-run
The run path must not exist. --server-only checks baseline without starting a
client. The full run refuses an existing game and uses a private hidden, muted
display/profile. The dedicated server has a private network namespace; a
loopback-only UDP/Unix datagram bridge admits one local worker. No production
server, server configuration or mission files are changed. A deadline and owned
process cleanup bound the experiment. Results and frozen inputs stay in the run
folder; source hashes are saved before launch.
python tests/native/ai_delegation/summarize.py \
/tmp/aid-new-run/server/logs/logs_*/console.log \
/tmp/aid-new-run/client/logs/logs_*/console.log
The summary discards the first and last two samples of each phase before calculating
counter deltas. Missing native perception components use -1, not zero. Require
positive server baseline deltas and client acknowledgements before interpreting
any zero worker counters. This is an execution-locality experiment, not a CPU
benchmark. A single idle soldier cannot establish scalability, combat behavior,
vehicle behavior or exclusive native subsystem costs.