Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user