Simplify telemetry to three game events

This commit is contained in:
2026-09-18 15:35:21 -04:00
parent 6d903adb31
commit 5bb49a776e
29 changed files with 658 additions and 1314 deletions
+12 -24
View File
@@ -66,8 +66,7 @@ See [Plugin releases](docs/plugin-releases.md) for the import and beta workflow.
Betas support configurable gameplay, participation, stability and manual-review
requirements, saved presets, coverage rules and staged rollout. See
[Beta test plans](docs/beta-test-plans.md) for usage and the session telemetry
contract used by round and custom-feature checks.
[Beta test plans](docs/beta-test-plans.md) for usage and the three-event game telemetry contract.
File changes are staged sequentially. Their activation uses rolling restarts:
by default only **one server across the fleet** can restart or recover at a
@@ -229,32 +228,21 @@ Implementation references (checked September 2026):
- [T6 map/ruleset combinations](https://github.com/xerxes-at/T6ServerConfigs/blob/master/localappdata/Plutonium/storage/t6/dedicated_zm.cfg)
- [Plutonium GSC paths](https://plutonium.pw/docs/modding/loading-mods/)
## Round telemetry experiment
## Game telemetry
Send `POST /api/telemetry` with `Content-Type: application/json` to the Electric
Cherry host (port 3000 in local development):
The server script sends JSON to `POST /api/telemetry`:
```bash
curl http://localhost:3000/api/telemetry \
-H 'Content-Type: application/json' \
-d '{"event":"round_change","round":17,"server":"t5_zombie_prototype_1","players":4}'
```
- `game_start`: server, map, and all players (name and GUID).
- `round_change`: server, map, round, and all players with kills, headshots, downs, revives, and score.
- `game_end`: the same fields as round change, with final stats.
The server must already be registered in Electric Cherry. `round` and `players`
are required nonnegative integers. Success returns HTTP 200 with
`{ "ok": true, "telemetry": { "server": "...", "round": 17, "players": 4, "receivedAt": "..." } }`.
Invalid payloads return 400, unknown/destroyed servers 404, and non-JSON content
types 415. This endpoint uses the app's existing LAN/Tailscale access model;
there is no API key requirement.
These reports work with or without an active beta. Electric Cherry records
the full player data, updates Fleet, and applies gameplay progress to active
betas automatically. No discovery request or beta-specific fields are needed.
The latest report is saved across app restarts and streamed immediately to the
dashboard and server detail page, including after browser reconnection. The UI
labels it as the last reported round with its age: round-change events alone
cannot detect a stopped script or a match ending. Send the initial round on each
new match, then each round change. The latest received request wins (including
lower rounds for new matches); there is no event ordering or history yet.
Telemetry player counts are displayed with the report and never replace RCON
occupancy or affect automated restart gates.
See [Game reporter protocol](docs/beta-test-plans.md#game-reporter-protocol) for
complete payload examples. Telemetry does not replace RCON's empty-server
check before an automated restart.
## Running tests