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

161 lines
8.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Single Workshop mod
All five owned modules are now one project: `addons/core/addon.gproj`, titled
**Co10 Escape Reintroduced**, with the existing Core GUID `2528466DE220D91C`.
There are no separate AI, Intel, Map or Chat project descriptors to publish.
The project ID `ERR_Core` is retained; it now identifies the complete mod.
The supplied Workshop banner is [publishing/previewImage.png](../publishing/previewImage.png).
Select it in **Publish project → Preview Image** before publishing; see
[preview setup](../publishing/README.md) for the Proton file-picker path.
For the post-publication RKS #2 join failure, see the
[prefab identity fix and update steps](multiplayer-prefab-ids.md).
In Workbench, close the previous project, remove stale entries for the four removed
projects, and open the Core project again. Keep the installed RHS/WCS projects and
their dependencies registered. Launch `Missions/ERR_Everon.conf`. The old Base
mission header is retained for diagnostic scripts but hidden from the scenario
menu; it loads the same combined gameplay and dependencies.
Scripts live in `Scripts/Game/ERR/{00_Core,10_AI,20_Intel,30_Map,40_Chat}`.
GameLib and WorkbenchGame retain their native script-module directories. The
numeric prefixes preserve the ordering required by `modded class` extensions,
including the full-scenario probes that use Core and Intel members. Moving those
folders into alphabetical feature order breaks native compilation.
All 34 authored resource GUIDs and resource-relative paths are preserved. Non-script
assets remain in their native Prefabs, Configs, Missions, Worlds, Materials and UI
folders. RHS and WCS remain external dependencies, not copied assets. No Workshop
publication or release qualification is part of this migration.
The [playtest build guide](playtest-build.md) identifies the latest retained, source-matched development candidate. The [30 September candidate](combined-candidate-2026-09-30.md) and historical five-addon handoffs remain earlier snapshots.
## Source and package checks
```sh
python3 tools/check.py
python3 tools/source_bundle.py
```
The bundle contains one project. Native packaging builds only that project:
```sh
python3 tools/native_package.py --project core \
--session /tmp/erri-merged-package-NEW \
--compat /tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX \
--external-addons /path/to/installed/workshop/addons \
--timeout 300
```
A successful packing attempt writes `packages/core`; inspect its PAK contents
before treating it as a playable artifact. Packaging does not publish anything.
## Native verification
The existing Workbench `--project core` and `--project chat` arguments select
**fixture families**, not separate addon projects. Both load the same combined
`.gproj` and require `--external-addons`. For the integrated HQ fixture:
The historical `core/victory` fixture still asserts that companion HQ/support
controllers are absent and fails against the merged project. Use the combined
fixture below for this checkpoint; Core isolation results do not apply here.
```sh
python3 tools/headless_workbench.py \
--compat /tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX \
--profile /tmp/erri-merged-workbench-NEW \
--external-addons /path/to/installed/workshop/addons \
--project chat --smoke hq-memory --rounds 1 --timeout 360
```
For the focused prison/clues/radio/extraction route, use `--project chat --smoke escape-route --rounds 1 --timeout 360` with the same private-runner options. This keeps real inventory and mission gates but uses scripted movement/actions; `--smoke victory` retains the separate extended administrator and intel-reroll stress.
For ordinary packed startup, schema 4 validates one owned addon plus seven external
addons (ten engine/vanilla/mod/dependency mounts in total):
```sh
python3 tools/headless_game.py --project chat \
--packed-addons /tmp/erri-merged-package-NEW/packages \
--packed-session /tmp/erri-packed-chat-merged-NEW \
--compat /tmp/YOUR-IDLE-DISPOSABLE-TOOLS-PREFIX \
--external-addons /path/to/installed/workshop/addons \
--timeout 180 --failure-grace 120
```
Core v1 / Chat v2 packed validators remain frozen for historical artifacts and
reject the merged dependency graph. Older five-addon external v3 records are
historical; the current external runner uses schema 4. Native dedicated inputs
must also supply the external dependency closure; this migration does not establish
multiplayer acceptance.
## Verified migration checkpoint
`python3 tools/check.py` passes all 191 regression programs. A comparison with the
pre-merge tree preserves all 187 scripts and all 34 resource metadata identities
and paths; the only changed script body is the ordinary full-scenario launcher's
addon GUID. The base diagnostic mission header is now hidden from the menu.
The [merged native run](evidence/native-2026-09-20-merged-mod/report.json) compiles
GameLib, Game and WorkbenchGame, loads Everon and completes the HQ-memory fixture
with 101 passed assertions and no script/runtime failures. Its
[runner record](evidence/native-2026-09-20-merged-mod/runner.json.txt) confirms owned
cleanup and unchanged authored/external inputs. The strict native verdict remains
failed because of the four previously documented RHS/WCS localization resource
errors, all retained in the raw log. This is local Workbench evidence, not a
Workshop release or multiplayer qualification.
## Administration: helicopter timer and server items
The Mission page includes **Search helicopter delay** (1–1440 minutes), with
Apply and Random. Saving changes a waiting countdown; an active flight
continues. Random is saved as a selection and resolved to a positive duration.
A failed save leaves the current countdown intact.
The Mods page shows the existing mission-content switches followed by **all
server-loaded addons**, including terrain, audio and script mods with zero
catalogued inventory items. **Edit items** opens that mod's selection page.
Workshop addons remain loaded; the editor controls future automatic equipment
grants, not script execution or authored soldier inventories.
The **Items** page lists registered inventory items defined or modified by each
mod, twelve per page, with prefab paths and equipment eligibility. Items outside
the supported automatic-equipment categories remain visible; enabling them does
not force unsupported clothing, attachments or other assets into the equipment
lottery. Existing content-pack exclusions also continue to apply. Modified
vanilla items may appear under several source mods. Unregistered prefabs and
non-inventory assets are outside this catalog.
Use **Enable/Disable** on an item, or **Enable all/Disable all** for the displayed
mod. Disable actions are red. Each item has a green **Enabled** or red
**Disabled** badge; a mod with a mixture of allowed and blocked items shows
**Mixed** in amber. The badge includes shared-source and current content-pack
blocks, while the row text also explains whether that item is supported by the
automatic equipment pool. Preset changes refresh these states from the server. Bulk actions clear that mod's individual overrides and set its default,
including items added in later versions. An item override takes precedence over
its own mod's default; for shared items, every loaded source mod must allow the
item. Any source's disable wins. Controls affect future random equipment and
matching ammunition, without removing items already issued or changing spawn
chance. Pending grants check the selection again before issuing an item.
Edits save automatically in the `items` section of `$profile:Escapists.json`. The equipment pool
refreshes on its next selection after an edit; no restart is required. **Presets**
cover the complete item selection across all mods. Enter a name and use
**Save / replace**, or select an existing preset and **Load** or **Delete** it.
Names use 1–24 lowercase letters, digits, underscores or hyphens; `active` is
reserved. Up to 16 presets are stored. Loading replaces the working selection;
subsequent edits do not change a saved preset until it is saved again.
Missing mods disappear from the loaded-mod list. Their saved rules and preset
entries remain dormant, without loading or resolving missing resources. If the
same mod returns, its rules become effective again. New mods/items default to
allowed unless their loaded source mod has a disabled default. Failed writes
retain the previous in-memory selection; validated backup recovery and damaged
file protection follow the other mission preference files.
Discovery runs in small batches. Browsing belongs to each authenticated admin
session; edits and presets are shared server settings. Original catalog/timer
evidence: [2 October checks](evidence/server-items-2026-10-02/report.json).
Item editor and preset validation: [native and repository checks](evidence/item-editor-2026-10-02/report.json).