Matchmaking Overview
GameFlow matchmaking groups players into balanced matches and hands each match a dedicated server, without you writing or hosting a matchmaking backend. You build the matching rules visually in the dashboard, and your game backend talks to a small ticket API.
Two ways to fill a server
GameFlow gives you two ways to get players onto a dedicated server:
- Direct allocation. Your backend already knows who plays together (a lobby, a party, an invite). It calls the fleet API to start a server and passes the roster in the payload. See Custom Game Backend.
- Matchmaking. Your backend does not know who plays together yet. It enqueues a ticket per player, and GameFlow groups compatible tickets into a match and allocates the server for you. This is what this section covers.
Use matchmaking when players click "find a match" and you want GameFlow to decide who plays with whom.
Core concepts
| Concept | What it is |
|---|---|
| Ticket | A request to be matched. Carries the player id, game mode, preferred region, a rating, and any custom attributes. |
| Matchmaker | A per-game rule engine you build as a visual graph. It decides which tickets can match and how teams are formed. |
| Game mode | The key that routes a ticket to a matchmaker. A ticket with game_mode = ranked is matched by the matchmaker that listens for ranked. |
| Flow graph | The matchmaker's rules, drawn as nodes and connections. Tickets flow from a Ticket Input node to an Output node. |
| Rating | A skill estimate (mu, sigma, rating_bucket) carried on the ticket. Only used if the matchmaker has a Skill Rule. FIFO ignores it. |
| Draft and Live | You build a matchmaker in draft, then publish it to go live. Only a live matchmaker matches real tickets. |
How a match is made
┌─────────────┐ find match ┌──────────────┐ POST ticket ┌──────────────────┐
│ Game Client │ ─────────────► │ Your Backend │ ──────────────► │ GameFlow │
│ │ │ (holds key) │ │ Matchmaking │
└─────────────┘ └──────────────┘ ◄────────────── └──────────────────┘
▲ │ poll status │
│ │ (long-poll) │ groups
│ connection details │ │ compatible
└──────────────────────────────┘ ◄──── { connection: host:port } ──┘ tickets,
once a match is formed allocates
a server
- A player asks your backend to find a match.
- Your backend creates a ticket on GameFlow (it holds the API key, so the client never sees it).
- GameFlow's live matchmaker for that game mode groups compatible tickets into a match.
- When the match forms, GameFlow allocates a dedicated server and returns its address and port on the ticket's status.
- Your backend forwards the connection to the players, and they join the server.
Your backend never runs matching logic. It enqueues tickets and waits for a server.
Where to go next
- Matchmaking Nodes: the building blocks of a matchmaker.
- Creating a Matchmaker: build and publish one in the dashboard, with a FIFO example.
- Implementing In Your Game: wire your backend to the ticket API.