Files
EscapistsReintroduced/docs/playtest-build.md
T

13 KiB

Development playtest build — 20 September 2026

For the latest five-addon source and packages with RHS/WCS/BMP, use the separate road-interception handoff and its player route. Core starts cleanly; the full external diagnostic reaches local prisoner admission but retains known localization errors. The instructions and evidence below describe an older vanilla-only snapshot.

The handoff below is the historical 5e74269 vanilla-only candidate. Current AI/Chat source requires the audited RHS/WCS/BMP closure; use the external development build workflow for a fresh build. Do not identify this older handoff as the current mission.

This refresh targets /home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20 from gameplay source commit 5e74269. It adds mission-owned Chat administration and menu, the owned Intel migration, and fairer HQ contact selection to the previous playtest. The refreshed handoff is ready for human testing. All 216 authored files match commit 5e74269, all five PAK payloads match those sources, and all fifteen copied runtime files are verified. Packed Core and packed full scenario pass ordinary startup with zero captured errors, unchanged inputs and verified cleanup. Consult the exact build record and the handoff's raw checks/. This remains a development candidate for human testing, not a qualified release.

The source baseline already has native menu/owner-RPC and scripted escape evidence, including the final journal rendering/follow correction; see Chat integration and AI/Intel migration. Full human play, remote multiplayer and comparative FPS remain unverified. Manual launch scripts use separate profiles and /home/jakub/devel/escapistsrereintroduced/.local/playtest-compat-20260920, keep sound muted, and refuse an unfinished handoff. They have not been launched visibly by this refresh. The previous playtest-2026-09-19 folder remains untouched.

First playable checks

Use the handoff's short player route for prison → clues → radio → helicopter → results/restart. Check these migrated behaviors during that route:

  • /esc menu works in Core itself. Test saved values, unfinished drafts surviving polls/page changes, normal Close/Escape behavior, and disabled controls for absent companions. Record each original setting and restore it after an Apply check; clock/date/weather choices apply next round.
  • With Intel loaded, /esc intel show, /esc intel reroll and /esc intel reroll show expose batch progress. Recovered folders and discovered locations must survive a reroll. Distinct recovered clues update team discovery feedback; repeatedly moving the same folder must not reveal another clue.
  • With AI loaded, check readable HQ journal entries, pause/resume, following at the bottom, and Jump to latest. Reports still need radio delivery before physical orders. Multi-target fairness needs a separate two-player observation: both targets remain visible to the same squad, and successive valid reports should not persistently favor only its first target. A solo run cannot establish that result.

The full scenario retains its Chat entrypoint identity and loads Core, AI, Intel, Map and the thin Chat assembly. Chat administration is implemented in Core classes; the assembly is not required for the base menu.

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-20260920 \
  --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-20260920.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 /home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages/core \
  --packed-session /tmp/erri-packed-core-playtest-20260920 \
  --compat /tmp/erri-headless-compat --timeout 180

python3 tools/headless_game.py --project chat \
  --packed-addons /home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages \
  --packed-session /tmp/erri-packed-chat-playtest-20260920 \
  --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.

Prepare the two local profile discovery links after the new handoff directory exists. The build owner also prepares the separate local playtest compatibility directory while native testing is idle. 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-20
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-20/packages -addons 2528466DE220D91C -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/profile-core -errOrdinaryScenario core -noSplash -noBackend -noSound -logconsole

Full companion scenario:

-addonsDir Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/packages -addons FA804F411BDDF2C6 -profile Z:/home/jakub/devel/escapistsrereintroduced/.build/playtest-2026-09-20/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 command structure above match the current five projects, scenario headers and ordinary launcher. New package validation belongs to the reports for this handoff. The visible launch recipe still needs the human run itself; editing these instructions performs no native execution.

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 build record

The source snapshot contains 216 authored files from 5e74269. All five PAKs, their project descriptors and the matching source ZIP pass exact content-hash comparison. Both packed startup checks pass from the durable handoff's files. The previous September 19 handoff remains unchanged.

The standard packaging job produced Core with native exit 0, then retained a failed completion verdict because an owned Wine helper remained until cleanup. Separate remaining-addon jobs used the identical source after strict idle verification. AI, Intel and Map produced complete outputs; the first Chat attempt was interrupted by an audio stream disappearing between observation and routing. That failed attempt produced no Chat payload. A narrow helper correction tolerates a failed operation only when a fresh listing proves the exact stream is gone; all 44 focused packaging tests pass. A fresh Chat-only retry produced the matching output. Original failure reports and the retry remain under checks/packaging-original/ and checks/packaging-chat-retry/.

Native resource/UI shutdown errors remain unchanged relative to the previous Core packaging attempt. Neither the retry nor successful packed consumption waives those errors. This is a development playtest candidate with clean ordinary startup, not a clean native build or qualified release.