103 lines
4.7 KiB
Markdown
103 lines
4.7 KiB
Markdown
# 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.
|
|
|
|
## 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 ordinary packed startup, schema 4 validates one owned addon plus six external
|
|
addons (nine 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.
|