Simplify game files to automatic T5 and T6 uploads

This commit is contained in:
2026-10-04 12:23:36 -04:00
parent 482e27e735
commit 68323c0baa
19 changed files with 588 additions and 232 deletions
+29 -22
View File
@@ -1,7 +1,7 @@
# Electric Cherry
Electric Cherry manages T5 and T6 Plutonium Zombies servers through its own host
agents. Docker and Plutainer run the games; EC handles hosts, game libraries,
agents. Docker and Plutainer run the games; EC handles hosts, game files,
collections, configuration, campaigns, maintenance and operation history.
Komodo is not required for native hosts.
@@ -29,18 +29,19 @@ The default Compose data mount preserves the previous
`EC_DATA_DIR` to your preferred persistent directory. Back up that directory,
including SQLite metadata and published game-file storage.
1. **Library → Game Files**: select T5 or T6 and upload the complete local game
folder, including its DLC files. Name the library and version, then publish it.
1. **Library → Game Files**: upload the complete local folder under T5 or T6,
including its DLC files. There are no library names or version labels to enter.
Each upload becomes the latest files for that game after verification.
Uploads work before any host is enrolled.
2. **Hosts → Add Host**: configure a Debian 12/13 amd64 machine and run its
generated enrollment command. The host automatically prepares its Plutainer
runtime and the latest published version of every game library. The host page
runtime and the latest T5 and T6 files, when available. The host page
shows setup progress. Automatic agent updates are enabled by default.
3. Add the exact Plutonium server keys in **Keys**, or supply missing keys when
launching.
4. Launch a server or collection with a host and game-file version. The default
runtime is selected automatically. EC reserves host-specific ports and verifies
startup.
4. Launch a server or collection on a host. The latest files for each game and
the default runtime are selected automatically. EC reserves host-specific
ports and verifies startup.
See [Native host management](docs/native-hosts.md) for installation, credentials,
storage, failure recovery, API contracts and the live-host acceptance checklist.
@@ -72,25 +73,31 @@ and safely retires existing servers as they become eligible.
Collections save target maps and lobby counts. Fill missing servers adds only the
shortfall; Match collection exactly also queues safe removal of excess servers.
Launch previews select a host, pinned base-game versions and an independent
runtime image. Every new launch uses the latest promoted configuration, scripts
and plugins when execution starts. Saved Plutonium keys are reused by exact
server ID and retained after removal.
Launch previews use the latest verified files for each game and select an
independent runtime image. If newer game files become available before launch,
refresh the preview to confirm the updated files. Every new launch uses the
latest promoted configuration, scripts and plugins when execution starts. Saved
Plutonium keys are reused by exact server ID and retained after removal.
## Libraries and campaigns
Game-file versions contain the uploaded T5/T6 folder, with its directory layout
and included DLC preserved. There is no separate DLC declaration. Versions record
the game, label, file manifest, checksums and size. Uploads use bounded chunks,
support pause/resume and verify checksums before publication. Actual game files
use dedicated filesystem storage, never SQLite blobs. Publishing a new version
automatically prepares it on active hosts, including hosts enrolled later. Host
downloads transfer up to four files concurrently, resume interrupted transfers,
Game Files has one upload slot each for T5 and T6. Uploads preserve the folder's
directory layout and included DLC; there is no separate DLC declaration.
EC records immutable upload IDs, file manifests, checksums and sizes automatically.
Uploads use bounded chunks, support pause/resume and verify checksums before
publication. Actual game files
use dedicated filesystem storage, never SQLite blobs. The last upload to finish
verification becomes that game's latest files, even if it started earlier.
Active hosts always prepare the latest T5 and T6 files when available, including
hosts enrolled later. Host downloads transfer up to four files concurrently,
resume interrupted transfers,
report progress and verify checksums before becoming usable. Failed preparation
retries automatically with backoff; the host page reports any blocking condition.
Set `PLUTAINER_IMAGE` to change the default runtime prepared on hosts. Existing
servers retain their selected library version and runtime.
Multiple instances on one host share read-only base files.
servers retain their existing files and runtime without a forced restart.
Previous uploads, verified host copies and server references are preserved.
Existing named libraries appear together under their game, with no renaming or
reupload required. Multiple instances on one host share read-only base files.
Scripts, plugins, configuration baselines and overlays retain their versioning,
beta, promotion and rollback workflows. Campaigns stage bytes remotely without
@@ -101,7 +108,7 @@ operation history.
T5 Zombies uses `t5sp` and `dedicated_sp.cfg`; T6 uses `t6zm` and
`dedicated_zm.cfg`. Map selection generates `electric_cherry_map.cfg`, loaded
after the main config. T6 variants retain their distinct catalog selections.
Game-file libraries and Plutonium runtime revisions are tracked independently.
Game-file uploads and Plutonium runtime revisions are tracked independently.
Game telemetry uses its own `EC_TELEMETRY_TOKEN`; configure reporters to send it
in an authorization header. Anonymous reports are rejected before they can
@@ -147,7 +154,7 @@ exercising enrollment. Production agent transport requires HTTPS.
`src/lib/server/hosts` owns enrollment, readiness and command transport;
`src/lib/server/backends` provides instance identity and remote file access;
`src/lib/server/provisioning/native.ts` connects existing lifecycle and campaign
queues to agents; `src/lib/server/game-files` owns immutable libraries and
queues to agents; `src/lib/server/game-files` owns immutable game-file uploads and
streaming distribution; `agent/` contains the service, installer and agent tests.
Automated tests use simulated Docker/game hosts. Real Debian installer and