docs: scope casual and ranked matchmaking as a 1.0 launch blocker

Queued matchmaking had never been considered anywhere in the planning
docs - not as planned work, and not even on the explicitly-deferred
list. It is a launch requirement, so record the design before code.

Add docs/MATCHMAKING.md covering the model change (community-server ->
per-match allocation), the decision to use Steam for identity and a
project-owned backend for queue/rating/allocation, what the existing
server already provides (--max-matches=1 is the allocation primitive,
ServerConfig, the roster, MatchState), the casual/ranked ruleset split,
and the open questions - rating algorithm, team-to-individual rating,
and the server cost that allocated matches reintroduce.

Ranked is hard-blocked on Phase 7 Steam auth tickets: slot reclaim is
keyed by display name today, and a rating on a spoofable identity is
worse than no rating.

Add Phase 8 to multiplayer-next.md, and correct README/CLAUDE.md/
TECH_STACK.md, which asserted no backend exists or is planned - true
before this was scoped, wrong now.
This commit is contained in:
Josh Creek
2026-08-31 18:33:36 +01:00
parent 964094f65a
commit 3aa0f5b9c2
5 changed files with 185 additions and 6 deletions
+15 -4
View File
@@ -176,10 +176,21 @@ Python, no .NET, no network." Keeping the shipped game GDScript-only (no
## What's deliberately absent
- **No C# or .NET runtime anywhere in the shipped game or server**, despite
early project framing (see `README.md`'s history) once describing a
"C# backend" — that was never built and is not the current plan.
- **No C# or .NET runtime anywhere in the shipped game or server.** The
"C# backend" in `README.md`'s early framing was never built. A backend
service *is* now planned for matchmaking (see below), but nothing has
chosen C# for it — that framing predates every real decision here.
- **No HTTP/WebSocket/gRPC layer** for multiplayer — ENet/Steam SDR over UDP
only, via Godot's own `MultiplayerAPI`.
only, via Godot's own `MultiplayerAPI`. Matchmaking will add the project's
first non-UDP network path, for backend traffic only; the simulation stays
on ENet/SDR.
- **No ONNX or other ML runtime in the shipped game** — see "AI opponents"
above.
## Planned, not yet built
- **A matchmaking backend service** — Steam auth ticket validation, casual
and ranked queues, a rating store, and per-match dedicated-server
allocation. Language and hosting are undecided. This is a 1.0 launch
blocker and the single largest departure from "one Godot project, no
backend". See [`MATCHMAKING.md`](MATCHMAKING.md).