-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Background
During development and testing, multiple client versions may be active at the same time (e.g. older builds, teaching demos, open demos, internal test builds).
Currently, there is a risk that players running different game versions could end up in the same matchmaking pool or match, leading to desyncs, invalid results, or crashes.
Goal
Ensure that players running different game versions cannot match with each other, either directly or via matchmaking.
Requirements (server-side)
- Client version reporting
The client must report its game version to the server.
This should be included in at least:
authentication / session creation, or
matchmaking / battle start registration
Example fields:
clientVersion (string, e.g. "0.6.2")
optionally: buildNumber or versionHash (for stricter matching)
- Version-scoped matchmaking
Matchmaking must be strictly scoped by version:
Players are only matched with others using the same compatible version
Players with incompatible versions must never:
enter the same match
see each other as available opponents
share matchmaking queues
Recommended rule (MVP):
Exact version match only (clientVersion === clientVersion)
Possible future extension:
Compatibility ranges (e.g. 0.6.x), but not required now
- Battle registration validation
When registering a match (e.g. /gamedata/battle/start):
All players in the match must have the same validated client version
If versions differ:
reject the registration
return a clear error code (e.g. VERSION_MISMATCH)
- Result submission validation
When receiving battle results:
The submitted result must match the version associated with the match
Results from a client with a different version than the registered match version must be rejected
- Error handling (client-facing)
If a version mismatch occurs:
Server should return a clear error response
Client can then:
prompt the user to update
or block matchmaking gracefully
Acceptance Criteria
Players on different game versions never enter the same match.
Matchmaking queues are isolated by game version.
Battle start fails if player versions do not match.
Battle results are rejected if the submitting client version does not match the match version.
Version mismatch errors are explicit and debuggable.
Implementation notes (non-binding)
Store clientVersion (or buildId) as part of:
session
matchmaking queue entry
match metadata
The simplest and safest MVP approach is exact version matching.
Avoid relying on client-side checks only; validation must be server-enforced.
This task is primarily about data integrity and stability during parallel development and testing, and it should be treated as a hard server constraint, not a soft recommendation.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status