Skip to content

feat(matchmaking): support mesh retries and automatic requeue - #570

Open
tintinhamans wants to merge 1 commit into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/feature/quickmatch-mesh-matchmaking
Open

feat(matchmaking): support mesh retries and automatic requeue#570
tintinhamans wants to merge 1 commit into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/feature/quickmatch-mesh-matchmaking

Conversation

@tintinhamans

Copy link
Copy Markdown

Companion client changes for Services PR #48.

The service now verifies full mesh connectivity before starting QuickMatch, retries transient connection failures once, and requeues players when the temporary lobby cannot produce a valid mesh.

The client needs to understand that extended setup flow. Without these changes, it cannot correlate retry responses, uses the old fixed 10-second warning, and does not fully reset local lobby state before the service assigns another match.


  • echo the mesh-check ID and attempt number in connectivity responses
  • handle server-provided setup timeouts
  • handle automatic matchmaking requeue events
  • reset the temporary lobby, mesh, game, and anti-cheat state before requeue
  • restore the QuickMatch controls when matchmaking resumes
  • ignore asynchronous join and room-refresh results belonging to an abandoned lobby

Mesh connectivity can fail temporarily while peer signalling or TURN connections are still being established. Allowing one correlated retry avoids rejecting otherwise viable matches.

QuickMatch must also avoid starting a game when the players cannot form a complete mesh. When setup ultimately fails, the service removes the temporary lobby and requeues the affected players. The client performs the corresponding local cleanup so the next lobby starts from a clean state.

Join operations are asynchronous, so the requeue reset also invalidates callbacks from the abandoned lobby. This prevents a late HTTP response from restoring stale lobby or game state after matchmaking has resumed.


The client remains compatible with unpatched services:

  • missing mesh-check metadata defaults to the legacy 0/0 values
  • older services ignore the additional response fields
  • the new setup-progress and requeue handlers remain unused when the server does not send those messages

The client and service updates can therefore be deployed independently, with the complete retry and requeue flow becoming available when both are updated.

@tintinhamans
tintinhamans force-pushed the arctic/feature/quickmatch-mesh-matchmaking branch from 493d828 to b7e97d7 Compare August 21, 2026 09:50
@github-actions

Copy link
Copy Markdown

⚠️ Title/Commit Validation Failed

Invalid PR title:

  • feat(matchmaking): support mesh retries and automatic requeue

Invalid commit messages:

  • feat(matchmaking): support mesh retries and requeue
    PR titles and commit messages must follow conventional commits format:
type: Description
type(scope): Description

Allowed types: bugfix, build, chore, ci, docs, fix, feat, perf, refactor, revert, style, test, tweak, unify

See CONTRIBUTING.md for details.

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