Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This PR covers a large rework of the matchmaker and its entire flow to bones & the dev interface. In short the major changes include: #### Matchmaker: - Supports multiple games running a single matchmaker, thanks to GameID now integrated - Internal state revamped to support now both Matchmaking & newly added Lobbies - Bones <-> Matchmaker messaging flow rework to support more than just 1 "endpoint", and importantly enable long-lived connections which is a requirement for lobbies - Updated the interface for devs to interact with the matchmaker to provide a standardized/clean interface that we can scale with new features #### Matchmaking Changes: - Robustness was the main focus, so now implements a simple wait/retry protocol when the matchmaking room is full, thus avoiding previous issues with failure during lots of players starting matchmaking at once. - Implements dead connection cleaning, guaranteeing that when a match starts all player clients have active connections (are alive) and starting the match can proceed - Adds an explicit stop matchmaking search message, making the matchmaking flow more "proper/clean" and allowing us to do proper local error checking to prevent bad states without straining the matchmaker (ie. you can't create a lobby if you're in matchmaking). - A number of smaller edge case fixes/reworking internals to make things nicer to work with. ### Lobbies Changes: - They now exist, freshly implemented - The core mechanics are in place for list/create/join lobbies - Supports password-protected lobbies to make it easy for users to play with their friends Of note, this PR is already quite large and covers the majority of breaking changes to the matchmaker needed in the short term, while getting the flow of matchmaking to feel quite robust with the edge cases addressed. Lobbies still need further work to be robust, and the randomness seed/match_data pushing into the ggrs session runner hasn't been done here yet, however I feel this PR is encompassing enough as-is and would prefer to move forward with smaller/lighter PRs for the extra functionality. --------- Co-authored-by: Max Whitehead <35712032+MaxCWhitehead@users.noreply.github.com> Co-authored-by: Jeremias <jerccu@gmail.com> Co-authored-by: Zicklag <zicklag@katharostech.com> Co-authored-by: Tekhnaeraav <tekhnaeraav@katharostech.com>
- Loading branch information