Fix telemetry delivery and report loaded island names; record Workshop 0.0.130
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-10-30 17:13:11 +01:00
parent 08e5cbf5ea
commit 3ec882dc4e
8 changed files with 114 additions and 17 deletions
+12 -4
View File
@@ -82,7 +82,7 @@ receiver must accept chunked request bodies (used by the native HTTP client):
"outcome": "victory",
"previousMissionId": "",
"previousOutcome": "",
"terrain": "{RESOURCE_GUID}Worlds/Example.ent",
"terrain": "Everon",
"scenario": "Escape",
"gameVersion": "engine build version",
"mods": [{"id": "2528466DE220D91C", "name": "Co10 Escape Reintroduced", "version": ""}],
@@ -109,8 +109,11 @@ not an observed random roll. `phase` is 0 preparing, 1 prison, 2 radio search,
3 radio defence, 4 extraction, 5 victory, 6 defeat. `mods` describes mounted
non-vanilla addons; version is the locally active Workshop revision when exposed
by the engine, otherwise empty. Never infer the newest Workshop version from an
empty value. Terrain is the actual loaded world resource, including takeover
scenarios, rather than the next-round terrain preference.
empty value. `terrain` is the island name resolved by the reporting game server
from the loaded root scene (for example `Everon`), using the mission title
resolver. It does not use the Game Master scenario filename or the next-round
terrain preference. Reports through 0.0.129 contain world resource paths instead;
existing queued payloads retain their original values and event IDs.
## Event and outcome semantics
@@ -149,7 +152,7 @@ precision), not survival time. Reconnects reuse the authenticated identity.
## Reliable ingestion and aggregation
The default receiver also returns public map aggregates from `GET /api/summary`
(and `GET /api/mission-events`). `terrain` filters the actual world resource;
(and `GET /api/mission-events`). `terrain` filters the reported island name (or world resource in older reports);
`serverId` adds the installation's record for that map. Summaries expose counts
only; detailed player and mission records still require a read/admin token.
@@ -197,6 +200,11 @@ of a claimed installation, not its operator's identity or gameplay honesty.
Operator-created server records are labelled separately. These are reports from
community-hosted missions, not independent anti-cheat attestations.
Published clients through 0.0.129 can send fractional `elapsedSeconds`. The
receiver accepts finite, nonnegative durations within the integer range and
rounds down before hashing and storage. This also lets existing saved queues
retry without edits; retries still use the original event IDs and count once.
## Buffering, disabling and limits
Requests have a 15-second timeout, with a 30-second callback watchdog. Retries