Creating a Matchmaker
A matchmaker belongs to a game and matches tickets for one or more game modes. You build it as a graph in the dashboard, then publish it to go live. This page walks through creating one, and ends with a complete FIFO 2v2 example.
Create the matchmaker
- Open the Matchmaking section in the dashboard and choose Create matchmaker.
- Give it a name and optional description, and select the game it belongs to.
- The matchmaker opens in the graph editor as a Draft.
Build the flow
The editor has a node palette on the left and a canvas in the middle.
- Add nodes by dragging them from the palette onto the canvas, or clicking Add.
- Connect nodes by dragging from one node's output port to the next node's input port.
- Configure a node by selecting it and editing its settings in the side panel.
See Matchmaking Nodes for every node and its settings.
Start from a sample
Instead of building from scratch, you can start from a built-in sample and adjust it:
| Sample | What it builds |
|---|---|
| FIFO | Ticket Input to Team Composition to Output. Matches players in arrival order. |
| Ranked 5v5 | Buckets by rating, balances by skill, forms two teams of five. |
| Split by Mode | Routes tickets down conditional branches with a catch-all fallback. |
Validate
The editor validates the graph as you build. A matchmaker needs exactly one Ticket Input, at least one Output, and a connected path from input to output. Fix any reported issues before publishing.
Game mode binding
The game mode on the Ticket Input node is how GameFlow routes tickets to this
matchmaker. When your backend creates a ticket, it sets a game_mode field, and
GameFlow matches that ticket with the live matchmaker whose Ticket Input declares
the same mode.
Keep one published matchmaker per game mode. If your backend sends
game_mode = standard, the Ticket Input must declare standard, or the ticket will
not match.
Publish
A draft does not match real tickets. When the flow is ready, choose Publish to set the matchmaker Live. From then on, tickets for its game mode are matched by this graph.
- Draft: editable, not matching.
- Live: matching real tickets.
- Paused: taken offline without deleting it.
Example: FIFO 2v2
This is the simplest useful matchmaker. It ignores skill and matches players in the order they queue, four at a time, into two teams of two. It is the matchmaker behind the Colyseus example.
Build three nodes and connect them in a line:
Ticket Input ──► Team Composition ──► Output
game_mode: teams: 2
standard min players: 2
max players: 2
- Ticket Input: set the game mode to
standard(or whatever mode your backend sends). - Team Composition: set Teams to
2, and both min and max players per team to2. That is a full 2v2 of four players. - Output: no settings.
- Connect Ticket Input to Team Composition, and Team Composition to Output.
- Publish.
There is no Skill Rule, so ratings on the ticket are ignored and players match purely in arrival order. Once four tickets are queued, GameFlow forms the match, allocates a server, and returns its connection to each ticket.
Next
- Implementing In Your Game: wire your backend to this matchmaker.