9.2 KiB
Development playtest build — 19 September 2026
This is a development candidate for human testing, not a qualified release. The handoff target is /home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19. The frozen202-file candidate passes two Core scripted escape/restart rounds (616 assertions), all repository checks, exact five-PAK source comparisons, and ordinary packed Core/full-companion startup. Human end-to-end play, remote multiplayer and FPS remain unverified. Run the handoff's play-full.sh (or play-core.sh) yourself for visible play; separate local profiles/runtime are already prepared and audio stays muted.
Build and retain the candidate
Run these commands from /home/jakub/devel/escapistsrereintroduced, after the intended gameplay changes are frozen and the private runtime is idle. The existing runner owns its hidden display, muted audio, disposable source copy/profile and prefix lock. Do not run another native test alongside it.
python3 tools/native_package.py --project chat \
--session /tmp/erri-playtest-packages-20260919 \
--compat /tmp/erri-headless-compat --timeout 300 \
--silent-workbench --continue-on-failure
chat builds Core, AI, Intel, Map, Chat in that order. Each output is already at session/packages/<folder>/{addon.gproj,data.pak,resourceDatabase.rdb}. No repacking or dependency-assembly tool is needed. Sessions must be new; never overwrite a failed run to reuse its name.
Known native packaging shutdown resource/UI errors also reproduced in the empty-addon control. The runner retains those errors and its failed verdict; --continue-on-failure permits subsequent addon attempts without waiving them. It still stops for incomplete execution, unsafe cleanup or source changes. A failed build verdict is not a clean build, but inspected artifacts that subsequently pass packed startup can be supplied for this explicitly limited development playtest. See packaging control.
Create the separate editable source ZIP while the same source is frozen:
python3 tools/source_bundle.py --mode development \
--output /tmp/erri-playtest-source-20260919.zip
This is source only. Compare its BUNDLE-MANIFEST.json authored hashes with the packager's source snapshot before identifying it as the packages' matching source. The ZIP tool refuses an existing output and writes outside the checkout.
After reviewing the build and startup results, copy only the fifteen runtime files into the durable handoff's packages/ directory. Also retain source.zip, these instructions, raw build/startup reports and logs, and artifact SHA-256 hashes in separate sibling paths. Keep reports, loose sources and generated caches out of packages/. Never redistribute installed vanilla/runtime files. Extract the matching ZIP into a new source/ directory for the Tools workflow below.
Check those exact packed bytes
These existing commands perform hidden, bounded startup checks; they close their own game and are not human play launchers. Use the newly built package directory, not an older archive:
python3 tools/headless_game.py --project core \
--packed-core /tmp/erri-playtest-packages-20260919/packages/core \
--packed-session /tmp/erri-packed-core-playtest-20260919 \
--compat /tmp/erri-headless-compat --timeout 180
python3 tools/headless_game.py --project chat \
--packed-addons /tmp/erri-playtest-packages-20260919/packages \
--packed-session /tmp/erri-packed-chat-playtest-20260919 \
--compat /tmp/erri-headless-compat --timeout 180
Their default fifteen-second readiness interval must remain unchanged. Retain both complete private sessions, including provenance, raw console, exact copied inputs and cleanup results. Match all fifteen hashes again after copying to the durable handoff. Packed startup proves loading and local admission; it does not prove a complete human escape, remote multiplayer or performance.
Open the editable mission in Tools
Installed Tools executable: /home/jakub/.local/share/Steam/steamapps/common/Arma Reforger Tools/Workbench/ArmaReforgerWorkbenchSteamDiag.exe. Open Arma Reforger Tools through the existing desktop/Steam workflow when ready to play, rather than using a hidden diagnostic runner.
Configure the extracted source/addons as the addon search directory. Open source/addons/core/addon.gproj for the base mission or source/addons/chat/addon.gproj for all five addons. Use the normal World Editor play workflow for Worlds/ERR_Everon.ent. Do not enable smoke plugins or pass any errSmoke, errBaseSmoke, input-exercise or aircraft-fixture flags. Editor play is an editable-source workflow; use the regular game and the scenario header below to test the packaged ordinary mission.
Ordinary game launch options
Installed regular game: /home/jakub/.local/share/Steam/steamapps/common/Arma Reforger/ArmaReforgerSteam.exe; installed Proton: /home/jakub/.local/share/Steam/steamapps/common/Proton - Experimental/proton. Use the existing normal visible game/Proton launch workflow, with a separate playtest profile, passing one of these argument sets. These are arguments, not shell commands that execute the Windows binary directly. Z: is the installed Wine mapping for these Linux paths.
The two local profile discovery links are already prepared. For a fresh copy elsewhere, prepare them once after the handoff directory exists. These commands write only inside that handoff; they do not alter installed vanilla assets. If either link already exists, inspect it instead of replacing it. This mirrors the existing startup runner's private-profile setup.
ERRI_PLAYTEST=/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19
mkdir -p "$ERRI_PLAYTEST/profile-core/addons" "$ERRI_PLAYTEST/profile-chat/addons"
ln -s '/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger/addons/data' "$ERRI_PLAYTEST/profile-core/addons/ArmaReforger"
ln -s '/home/jakub/.local/share/Steam/steamapps/common/Arma Reforger/addons/data' "$ERRI_PLAYTEST/profile-chat/addons/ArmaReforger"
Base only:
-addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/packages -addons 2528466DE220D91C -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/profile-core -errOrdinaryScenario core -noSplash -noBackend -noSound -logconsole
Full companion scenario:
-addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/packages -addons FA804F411BDDF2C6 -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-19/profile-chat -errOrdinaryScenario chat -noSplash -noBackend -noSound -logconsole
The explicit ordinary launcher requests the native mission header and MissionSystems, once from the main menu. Do not substitute a bare -world load. The two headers are {AD62322D5213C440}Missions/ERR_Everon_Base.conf (“Rereintroduced: Everon Base (development)”) and {C1E20667DCE324ED}Missions/ERR_Everon.conf (“Rereintroduced: Everon (development)”). These names also identify the authored scenarios in the normal scenario menu. This local/offline setup uses -noBackend; it is not multiplayer hosting instructions. -noSplash avoids the separately documented stock splash path. These playtest arguments keep audio muted as requested and send no automated input. Quit through the game's normal menu before running another build/test.
| Package folder | Project | GUID | Successor dependencies |
|---|---|---|---|
| core | ERR_Core | 2528466DE220D91C | none |
| ai | ERR_Ai | 5192138CB9D5B911 | Core |
| intel | ERR_Intel | D31039C7C53E348A | Core |
| map | ERR_Map | 9AAEE9041D79809E | Core |
| chat | ERR_Chat | FA804F411BDDF2C6 | Core, AI, Intel, Map |
Every project additionally requires installed vanilla Arma Reforger 58D0FB3206B6F859; it is not bundled. Identities and commands above were checked against the current five projects, scenario headers, ordinary launcher and existing pack/startup runners. The visible launch recipe still needs the human run itself; no new native execution was performed to prepare this document.
For the first session, test the ordinary prison → scavenging/documents → radio → helicopter → result/restart loop. Record the chosen scenario, where progression stopped, and the corresponding profile-core/logs or profile-chat/logs session. Retain known packaging errors separately from any gameplay failures. Remote joins/reconnects, twelve real players, full human completion and comparative FPS remain unqualified.
This candidate's retained build results
The standard packaging job produced Core, recorded native exit0, then stopped because an owned Wine helper remained until cleanup. Its failed verdict is unchanged. After strict idle verification, the remaining four addon jobs used the same frozen source and existing packaging function, each with native exit0, confirmed cleanup and unchanged source. All15 runtime artifacts and every PAK payload match the source. These separate continuation records and original UI shutdown errors are in the handoff's checks/packaging/; they do not qualify a clean build. Core startup and full startup independently pass from the exact packages.