Matchmaking #

Matchmaking flow diagram

The Matchmaking service uses custom logic to compare parties to form appropriate matches to send to the game server. This service handles queue configuration and matchmaking logic. Custom behavior can be defined using the Matchmaking Plugin.

Parties enter the Matchmaking service from the Party service, and are placed into a queue as a Matchable object. Matchable objects iterate through the Matchmaking process to find a match and generate a new game instance. New game instances that have been created can remain within the matchmaking flow or reenter it at any time to accept more players.

The Matchmaking service is structured to work at scale to support the world’s largest games. All matchmaking state is held in-memory upon entry from the Party service to improve performance by avoiding extraneous network hits. This allows the Matchmaking service to remain CPU-dependent and tailored to prioritize for match speed or quality; when more comparison data is used, the matchmaking is slower but the quality of the match is higher.

In the following sections, we’ll take a look at the basic matchmaking flow, some key concepts, and then dive into the specifics of the Matchmaking Plugin, including developer-defined points to allow for any custom matchmaking configuration.

Contents #

Matchmaking Key ConceptsKey concepts for the matchmaking service.
Matchmaking ComponentsComponents that make up the Matchmaking service.
Matchmaking TasksImplementing the Matchmaking features.
Matchmaking SDK and EventsSDK calls and events for the Matchmaking service.
Sample ImplementationSample implementation of a basic matchmaking flow.