Open Match is an open source game matchmaking framework that simplifies building a scalable and extensible Matchmaker. It is designed to give the game developer full control over how to make matches while removing the burden of dealing with the challenges of running a production service at scale.
This repository contains the core components for the public preview of Open Match 2. It includes the main Go application, Protocol Buffer (protobuf) definitions, and generated Go client libraries. Here's a high-level overview of the key directories:
-
main.go
(also calledom-core
in places where it may not be obvious that it is part of Open Match) is the core Open Match 2 application. It serves all the Open Match 2 API endpoints from a single horizontally-scalable container image. -
proto
contains Protocol Buffer definitions used to produce libraries in your language of choice. Open Match 2 is written in golang but you can write your matchmaker in any language supported by gRPC. -
pkg
contains two external golang modules:-
pkg/pb
contains the compiled golang modules produced byprotoc
. -
pkg/api
contains thegrpc-gateway
reverse-proxy server which translates RESTful HTTP API calls into gRPC.
-
In the context of Open Match, the term 'matchmaker' refers to the collection of services and logic responsible for the entire matchmaking process. While Open Match provides the core framework, you are responsible for building the matchmaker itself. Minimally, a matchmaker using Open Match is expected to:
- Queue player matchmaking requests.
- Request matches from Open Match and distribute them to game servers.
- Notify players of their match assignments.
- Provide the custom matchmaking logic (as a Matchmaking Function, or MMF).
These components can be a single, monolithic service, or have their duties federated across a number of platform services. For an example of one way to build a matchmaker using Open Match 2, look at the open-match-ecosystem repository v2/ directory.
We have started to build out documentation for Open Match 2. Here are some of the resources we have created so far:
- MMF Sample README: This document provides a detailed guide to getting started with the Matchmaking Function (MMF) sample. It covers best practices, common misconceptions, and explains how to get started with creating your own custom matching logic in Go. It also explains that Open Match 2 is language-agnostic, and that you can write your MMFs in any language that supports gRPC.
- We aim to keep this application scope as small as possible.
- Before creating a PR, we request that you open an issue or discussion to talk about your proposed changes.
- If a proposed change does not have a clear benefit to the majority of users, it will probably not be accepted.
The Development guide contains instructions on getting the source code, making changes, testing and submitting a pull request to Open Match.
Participation in this project comes under the Contributor Covenant Code of Conduct
Apache 2.0