Game Frontend
What is a Game Frontend? How does it interact with Open Match?
The guide presents a high-level Online Game Services architecture that leverages Open Match for matchmaking. It explains in details the core customizations that need to be added to Open Match to build your Matchmaker. It also takes a deep dive into the external components that interact with Open Match. Along the way, it covers the Open Match concepts needed for building these components.
This guide is a pre-reading for the tutorial for building a basic Matchmaker. You can use this Tutorial Solution as a reference when going through each component in this guide.
Open Match comprises of a set of services hosted in a Kubernetes cluster. These services expose the core functionality of Open Match over gRPC and HTTP
The Open Match FrontendService is used to create, delete and get details of the current state of a Ticket.
The Open Match BackendService is used to generate Matches and create Assignments for the Matches when invoked by the Director, and returning Assignments to the Open Match Frontend when requested.
The QueryService enables querying the Tickets that meet certain constraints from the current Ticket pool.
To build a custom Matchmaker using Open Match, the user needs to provide the following customizations. These can be authored as services exposed over gRPC or HTTP endpoints.
The core matchmaking logic is implemented as a Match Function service. Open Match Backend triggers the Match Function service when it receives a request to generate Matches. The Match Function execution receives MatchProfiles, fetches Tickets that match the profile from QueryService and returns Matches.
Open Match allows for concurrent Match Functions to execute on the same player pool. The Matches generated by such concurrent Match Function executions may have overlapping Tickets. Given that one Ticket should only be used by one resulting Match, Open Match allows the user to plug in an Evaluator component to deduplicate Match proposals before returning results. Open Match provides a default Evaluator which suffices for most common use cases. See Evaluator Guide for details on proposal evaluation.
Although Open Match based Matchmaker offers core matchmaking functionality, other Game Services will be needed to handle key features such as handling player connections, fetching DGS (Dedicated Game Server) allocations etc. These services interact with Open Match to enable game specific matchmaking scenarios. Here is an overview of these services that are external to an Open Match based Matchmaker but are a part of an end to end setup:
This is the component that receives the matchmaking request from the game client and eventually provides the game client with the Assignment. The Game Frontend typically authenticates the player, fetches player data and creates a matchmaking request in Open Match and fetches the Assignment for the Ticket.
This is the component that understands the types of matches (MatchProfiles) that can be served and fetches matches from the Open Match Backend. The Director also interfaces with the DGS allocation system to fetch Game Servers for Matches and creating Game Server Assignments from these details in Open Match, via communicating with the Open Match Backend.
Here is an overview of how a Game Client gets assigned to a Game Server in this architecture.
Now the Ticket representing this player is a part of a Ticket Pool actively being considered for matchmaking by Open Match.
At this point, the Ticket representing the Player is a part of the Match but does not have an assignment yet.
Now that you are familiar with building an Open Match based Matchmaker, its time to build one!
Please proceed with the step-by-step tutorial for building a basic Matchmaker
The Below sections take a deepdive into how each of these components interact with Open Match and explains the core Open Match concepts needed to build these components:
What is a Game Frontend? How does it interact with Open Match?
What is the Director? How does it interact with Open Match?
What is a Match Function? What should it do?
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.