Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
183 lines
11 KiB
Markdown
183 lines
11 KiB
Markdown
# Combined-addon development playtest build
|
||
|
||
The current project is **Co10 Escape Reintroduced**, `ERR_Core`, GUID
|
||
`2528466DE220D91C`, in `addons/core/addon.gproj`. Mission, AI, Intel, Map and Chat
|
||
are included in this one addon. There are no separate companion projects to
|
||
build or enable. See [the combined layout](single-mod.md).
|
||
|
||
The latest retained handoff is [2 October — HQ travel memory](../.build/playtest-2026-10-02-hq-memory-menu-fix/README.md), at `.build/playtest-2026-10-02-hq-memory-menu-fix`.
|
||
|
||
409 authored files, 351 exact PAK payloads and three runtime files match editable source and `handoff.json`. A startup guard now skips automatic terrain takeover in mode-less menu worlds; ordinary supported scenarios and unsupported-mode diagnostics keep their existing behavior. This snapshot includes observer recovery/defeat guidance, finite resupply of supported reloadable launchers, and one original armed convoy escort receiving a radio interception order ahead of delivered player travel history. Earlier finite logistics, controller ownership and authored discovery/mine-warning map presentation remain included. The frozen snapshot includes the earlier parallel task’s automatic terrain takeover behavior; newer concurrent terrain-name/presentation edits remain in the live workspace and are not in this package; this handoff’s fresh scripted route targets Everon.
|
||
|
||
All **285 registered regression programs pass**. The fresh normal-route fixture completes **63 assertions and one round**, with zero script/runtime failures and thirteen retained engine errors. Fresh ordinary startup of this exact package verifies the normal mission and local prisoner with zero script/runtime failures and 17 retained engine errors. Strict packaging/startup failures remain recorded.
|
||
|
||
This is an **unqualified development candidate**. Physical launcher delivery, native interception movement/holding/rejoining, a complete human escape, real multiplayer/JIP/reconnect/twelve-player play, comparative FPS and a clean release remain unverified. Historical standard-map visual checks do not prove physical held-map rendering or current remote UI behavior. No new native flight or prison-input experiments are included.
|
||
|
||
See [current status](current-status.md). The earlier objective-map package and all previous candidates remain unchanged. Later source edits are not automatically present in this snapshot.
|
||
|
||
## Identities and required dependencies
|
||
|
||
| Role | Project or dependency | GUID |
|
||
| --- | --- | --- |
|
||
| Single successor addon | ERR_Core / Co10 Escape Reintroduced | `2528466DE220D91C` |
|
||
| Direct base dependency | Arma Reforger | `58D0FB3206B6F859` |
|
||
| Direct external dependency | RHS: Status Quo | `595F2BF2F44836FB` |
|
||
| Direct external dependency | WCS Armaments | `629B2BA37EFFD577` |
|
||
| Direct external dependency | WCS BMP-1 | `5E524E4FEECCA92B` |
|
||
| Direct external dependency | Parachute Framework | `65930CB4CD0237B2` |
|
||
| Transitive external dependency | RHS Content Pack 01 | `1337C0DE5DABBEEF` |
|
||
| Transitive external dependency | RHS Content Pack 02 | `BADC0DEDABBEDA5E` |
|
||
| Transitive external dependency | WCS SpaceCore | `5E389BB9F58B79A6` |
|
||
|
||
Install the seven external addons separately. The audited versions, descriptor
|
||
hashes and dependency graph are in [external-addons.json](external-addons.json);
|
||
a source bundle includes this as `EXTERNAL-ADDONS.json`. The private runners
|
||
expose only that audited closure. Original Escapists and its extensions are not
|
||
part of the successor's dependency graph. Third-party assets are not bundled.
|
||
|
||
The normal scenario is `{C1E20667DCE324ED}Missions/ERR_Everon.conf`
|
||
(“Co10 Escape Reintroduced — Everon”). The Base header
|
||
`{AD62322D5213C440}Missions/ERR_Everon_Base.conf` is a hidden diagnostic entry;
|
||
it also loads the combined addon and its dependencies.
|
||
|
||
## Build from frozen source
|
||
|
||
Run from `/home/jakub/devel/escapistsrereintroduced`. Replace the example prefix
|
||
and installed-addon paths below, and use fresh names for every private session,
|
||
profile and output ZIP. The compatibility directory must be an existing idle,
|
||
disposable Tools prefix under `/tmp`, not the installed Steam prefix.
|
||
|
||
```sh
|
||
ERRI_COMPAT=/tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX
|
||
ERRI_EXTERNAL=/path/to/installed/workshop/addons
|
||
|
||
python3 tools/headless_game.py --compat "$ERRI_COMPAT" --inspect-processes
|
||
python3 tools/check.py
|
||
```
|
||
|
||
The inspection is read-only. If a game, Tools session or another native runner is
|
||
active, leave it untouched and wait before building. The existing runners manage
|
||
their own hidden display, muted audio, isolated source/profile, prefix lock and
|
||
cleanup. Do not bypass their refusal or cleanup checks or launch another native
|
||
job concurrently. They do not require opening windows on either physical monitor.
|
||
|
||
With source frozen, package the one project:
|
||
|
||
```sh
|
||
python3 tools/native_package.py --project core \
|
||
--session /tmp/erri-playtest-package-NEW \
|
||
--compat "$ERRI_COMPAT" --external-addons "$ERRI_EXTERNAL" \
|
||
--timeout 300
|
||
|
||
python3 tools/source_bundle.py --mode development \
|
||
--output /tmp/erri-playtest-source-NEW.zip
|
||
```
|
||
|
||
The packager accepts `--project core`; the removed `--project chat` packaging
|
||
recipe does not apply. Output is exactly
|
||
`packages/core/{addon.gproj,data.pak,resourceDatabase.rdb}`. The ZIP is editable
|
||
source only and must be written outside the checkout. Compare its
|
||
`BUNDLE-MANIFEST.json` authored hashes against the packager's frozen source
|
||
snapshot before describing it as matching source.
|
||
|
||
`--silent-workbench` and `--exit-after-init` are optional, mutually exclusive
|
||
packager lifecycle experiments. `--continue-on-failure` is diagnostic only; it
|
||
does not turn a failed build into a pass. Keep resource/localization, shutdown
|
||
and cleanup failures in the retained reports. Native exit code 0 alone is not
|
||
build qualification. See [packaging control evidence](native-packaging-control.md).
|
||
|
||
## Check the normal route and exact packaged bytes
|
||
|
||
These commands launch **hidden, muted, bounded diagnostics**, then close their
|
||
own processes. They are not human play launchers. Run them sequentially while
|
||
the frozen source and private runtime remain idle between jobs.
|
||
|
||
```sh
|
||
python3 tools/headless_workbench.py \
|
||
--compat "$ERRI_COMPAT" \
|
||
--profile /tmp/erri-playtest-route-NEW \
|
||
--external-addons "$ERRI_EXTERNAL" \
|
||
--project chat --smoke normal-escape-route --rounds 1 --timeout 360
|
||
|
||
python3 tools/headless_game.py --project chat \
|
||
--packed-addons /tmp/erri-playtest-package-NEW/packages \
|
||
--packed-session /tmp/erri-packed-chat-playtest-NEW \
|
||
--compat "$ERRI_COMPAT" --external-addons "$ERRI_EXTERNAL" \
|
||
--timeout 180 --failure-grace 120
|
||
```
|
||
|
||
Workbench `core` and `chat` select diagnostic fixture families, not different
|
||
addon projects. Both need the external dependencies. `normal-escape-route`
|
||
checks the normal generated Everon catalog; the older `escape-route` uses its
|
||
fixture catalog. Scripted movement/actions do not establish human walking,
|
||
interaction, combat or piloting.
|
||
|
||
The ordinary packed command uses schema 4: one successor addon plus seven
|
||
external addons, ten engine/vanilla/mod/dependency mounts altogether. Keep its
|
||
default fifteen-second readiness interval. `--failure-grace 120` only retains a
|
||
failed run for additional logs within the original timeout; it does not waive a
|
||
failure. Historical `--packed-core`, vanilla Chat v2 and five-addon external v3
|
||
results do not validate this combined dependency graph.
|
||
|
||
After reviewing both results, retain a new handoff with only the three runtime
|
||
files inside `packages/core/`. Keep matching `source.zip`, extracted `source/`,
|
||
raw reports/logs, provenance, cleanup results and SHA-256 hashes in separate
|
||
sibling paths. Verify all three runtime hashes after copying. Never overwrite a
|
||
previous candidate or mix newer loose source with an older PAK. Packed startup
|
||
proves loading, normal mission readiness and local admission; it does not prove
|
||
remote multiplayer or a full human escape.
|
||
|
||
## Human playtest
|
||
|
||
Use the matching handoff's `source/addons/core/addon.gproj` for editable Tools
|
||
work, with its installed external dependencies registered. Select
|
||
`Missions/ERR_Everon.conf`. For packaged play, enable the single successor addon
|
||
and its required dependencies in a separate playtest profile, then select that
|
||
normal scenario. Use the mission header/scenario workflow, not a bare world
|
||
load. The old five-addon launch scripts and Chat GUID `FA804F411BDDF2C6` are
|
||
historical and must not be used for the current combined package.
|
||
|
||
A visible human session is separate from the hidden commands above. Keep it on
|
||
the user's chosen right monitor and muted, and quit normally before another
|
||
native build or test. Do not enable smoke plugins, `errSmoke`/`errBaseSmoke`,
|
||
input exercises or aircraft-fixture flags for ordinary play. This guide does not
|
||
supply a new visible launcher or multiplayer server configuration.
|
||
|
||
Follow [the current player route](player-route.md): prison → scavenging/clues →
|
||
radio defence → helicopter → result/restart. `/esc menu`, Intel commands and the
|
||
HQ journal are included in the combined addon. Restore settings changed during
|
||
admin checks. Record the exact candidate, scenario, point of failure and profile
|
||
log session. Remote joins/reconnects, partial escape, twelve connected players,
|
||
full human completion and comparative FPS still need their own evidence.
|
||
|
||
## Retained candidate evidence
|
||
|
||
The 30 September installed-slot candidate contains 376 matching authored addon
|
||
files, 321 matching PAK payloads and three verified runtime files. Its normal
|
||
route completes 55 scripted assertions through extraction/results, with zero
|
||
script/runtime failures and thirteen installed-resource errors. Its
|
||
[ordinary packed startup](evidence/packed-2026-09-30-installed-slot/packed-startup-report.json)
|
||
verifies normal mission readiness and a local prisoner, with zero script/runtime
|
||
failures and seventeen installed-resource errors. Both strict verdicts remain
|
||
failed. [Packaging](evidence/package-2026-09-30-installed-slot/package-report.json)
|
||
emitted matching files and exited 0 but retained localization and shutdown
|
||
resource-leak errors. Consult the handoff README and hashes for its exact scope;
|
||
later alarm/memory and mounted-ammunition source evidence does not update these
|
||
packaged bytes.
|
||
|
||
## Historical five-addon handoffs
|
||
|
||
The vanilla-only `.build/playtest-2026-09-20` candidate was frozen at `5e74269`:
|
||
216 authored files, five matching PAKs and fifteen verified runtime files. Its
|
||
[build record](evidence/playtest-2026-09-20/build.json),
|
||
[packed Core startup](evidence/packed-core-2026-09-20-playtest/report.json) and
|
||
[packed full startup](evidence/packed-chat-2026-09-20-playtest/report.json) retain
|
||
that snapshot's zero-error startup evidence. Native packaging/shutdown failures
|
||
remained separate; human play, multiplayer and FPS were not qualified.
|
||
|
||
The later [road-interception handoff](../.build/playtest-2026-09-20-road-interception/README.md)
|
||
and [five-addon external workflow](packed-external-development.md) also describe
|
||
an older layout. Their companion GUIDs, five-project build order, vanilla-only
|
||
profile links and launch commands are not current instructions. Existing
|
||
historical handoffs, source and failure records remain unchanged.
|