Skip to content

feat(lobby): add mesh check retries and improve QuickMatch setup - #48

Open
tintinhamans wants to merge 4 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/quickmatch-mesh-gate
Open

feat(lobby): add mesh check retries and improve QuickMatch setup#48
tintinhamans wants to merge 4 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/quickmatch-mesh-gate

Conversation

@tintinhamans

@tintinhamans tintinhamans commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Add one retry for failed mesh checks in custom lobbies and use the same mesh check before starting QuickMatch.

Each check keeps the existing five-second timeout. If the first check fails, the server restarts signalling for the missing peer connections, waits three seconds for them to reconnect, and runs one final check.

QuickMatch runs the mesh check during its existing countdown. The game starts when the mesh succeeds; otherwise, the temporary lobby is removed and the players are requeued.


  • retry failed mesh checks once
  • restart signalling only for missing connections
  • correlate responses with a check ID and attempt number
  • ignore late responses from previous attempts
  • treat clients that do not respond as disconnected
  • make matchmaking cancellation, cleanup, and requeue handling safer

Clients in the lobby Behavior
All updated The server can retry once and safely match responses to each attempt
Any legacy client responds The server accepts its response for the first attempt and skips the retry
A client does not respond The server treats it as disconnected and fails after the available attempts

Legacy clients can still complete mesh checks, but they do not understand the new setup-progress or requeue messages. They may still show the existing 10-second warning while the server is working and recover through the normal teardown and next-lobby flow.

Together with GameClient PR #570, this prevents QuickMatch from starting with an incomplete peer mesh while allowing transient signalling failures to recover without forcing players to restart matchmaking.

Retry incomplete full-mesh checks with correlated attempts and gate QuickMatch startup on a successful mesh result. Preserve legacy client compatibility and requeue players when automatic setup fails.
Serialize registration, cancellation, assignment, and requeue operations. Make lobby removal and bucket cleanup safe under concurrent disconnect and teardown paths.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant