Open Match Overview

Jon Foust
3 min readJul 25, 2020

Open Match is an open-source, scalable, flexible, and extensible matchmaking framework that grows with the needs of your game. It provides the tools to control how your players are connected for a fair and enjoyable experience while removing concerns about scaling to handle an unexpected surge of players. Open Match provides you with the tools to build a matchmaker and allows some customization of services such as your database to cache players.

Open Match has core services that accept custom requests or are configurable via extensions that allow you to make matchmaking work for you. These services handle match requests, implement your matchmaking logic, and connect players to available matches/servers. Without getting technical in this blog post, let’s explore what makes Open Match function.

Tickets

Tickets represent matchmaking requests for a player or group of players. Game clients will create these Tickets, which are handled by Open Match’s Frontend service. A Ticket’s lifecycle for the process continues until:

  • It receives an Assignment or game server address
  • The game client/player cancels the matchmaking request
  • Tickets’ lifespan has exceeded the maximum wait time in the queue.

Tickets are the most fundamental structure of Open Match that will go through most of its services to match players.

Profiles

Profiles are the template for match criteria. They specify the attributes of games players will join. If you’re looking for a snipers only, free-for-all, or competitive match, you can create Profiles that look for different attributes in Tickets to meet those match requirements. Once Tickets have met these requirements, the Profile will store them in Ticket pools. Your match function will look through these pools of Tickets to generate match proposals.

Match Functions

Match functions are the logic that connects players in Open Match. Open Match will run these match functions on groups of Tickets to match players together based on match criteria set in Profiles. You can deploy numerous match functions for specific game modes, skill rankings, and competitive matches.

Director

The Director is one of the customizable components that allows you to create Profiles that will generate match proposals. The Director will send a request to Open Match for matches, and once found, will set Assignments for the Tickets. Assignments are game server connections for matches. The Director will update each Ticket with an Assignment, and the players will enjoy their match.

Evaluator

The Evaluator can be customized to deal with Tickets that meet multiple match requirements. Players will typically have faster queue times if they meet multiple match Profiles. This idea in Open Match is known as creating overlapping Tickets. The issue with Tickets match meeting numerous proposals is it causes collisions. The Evaluator will handle these collisions and choose the best match for the player/Ticket. Open Match comes with a Default Evaluator, but you can create a custom evaluator to de-collide the Tickets.

How to get started

Open Match recently went 1.0 in June and is looking for contributors. If you would like to get started, check out the following resources:

Feel free to reach out to the Open Match community in Slack or me on Twitter with any questions!

--

--

Jon Foust

Developer Advocate @ Google. Gamer. Maker. Trying to make things easier for others by doing the hard stuff myself. Opinions are my own.