Realtime Rollout Policy And Compatibility Negotiation
Purpose
Realtime rollout policy decides whether a client build may enter a game server and which protocol features are enabled for that session. Use this page when changing protocol versions, build channels, capability flags, compression support, or compatibility rejection behavior.
Policy Inputs
The client supplies structured build metadata and a compatibility request during handoff. Build metadata includes build id, optional build number, release channel, and rollout group. Compatibility input declares whether datagrams are allowed, which capabilities the client supports, which compression modes it can decode, which snapshot bucket formats it understands, and which gameplay action schemas it can use.
The server policy declares supported protocol ranges, optional deprecation windows, allowed and blocked build channels, an optional minimum build number, preferred compression modes, and the default compatibility profile.
Negotiation Flow
- Normalize build metadata from structured fields and the legacy client-build string.
- Reject clients whose channel is blocked or not in the allowed-channel list.
- Reject clients below the configured minimum build number.
- Reject protocol versions outside supported ranges or past a deprecation reject deadline.
- Intersect server-required capabilities with client-supported capabilities.
- Select the first server-preferred compression mode that the client supports.
- Return the negotiated protocol version, capabilities, datagram setting, compression mode, snapshot bucket format, and action schema.
Invariants
Required server capabilities must remain enabled after negotiation. allowed_channels is an allowlist only when it is nonempty; blocked_channels always rejects. Compression negotiation must choose a mode the client advertised. Deprecation windows can warn before they reject, but reject_after is a hard admission boundary.
Failure Modes
Handshake failures should name the rejected channel, build number, version range, deprecation deadline, missing capability, unsupported compression, snapshot bucket format, or action schema. Do not replace these failures with generic connection errors; operators need to separate rollout policy from transport failure.