Files
jakub 6a667d8deb Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
2026-10-13 22:52:53 +02:00

68 lines
3.5 KiB
Markdown

# 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:
1. Server-owned baseline after the worker acknowledges both replicated entities.
2. Soldier hierarchy transferred with `GiveExt(workerIdentity, true)`.
3. Group hierarchy also transferred.
4. Worker explicitly attempts `AIControlComponent.ActivateAI()` and group activation.
5. 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:
```sh
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.
```sh
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.