Samples & Troubleshooting
Samples
Import samples from Package Manager → Pairiquium Matchmaking SDK → Samples.
| Sample | What it shows |
|---|---|
| Basic Matchmaking | Choosing a game mode and region, starting and cancelling a search, and showing match-found, error, and connection-state feedback. |
| Arena Duel | The whole loop: matchmaking, then two matched players actually playing a 2D arena shooter through a small reference backend you run yourself. It also has a party panel: create a party, join by code, invite by username, and search together. |
Both samples need a ticket endpoint. Arena Duel includes a local Node.js backend for tickets, the match webhook, and a gameplay relay.
The Arena Duel backend is for local testing only
It keeps everything in memory, has no authentication of its own, and doesn't verify the match
webhook's signature. Pairiquium can't reach localhost, so receiving the real webhook needs a
tunnel such as ngrok. Build your own backend for a real game, and
verify the signature on every webhook.
The samples need the Input System package
Both sample scenes use the Input System, and Arena Duel reads the keyboard and mouse through it. It isn't installed with the SDK: add Input System from the Package Manager (Unity Registry) before importing a sample. If your project still uses the old Input Manager, set Active Input Handling to Input System Package (New) or Both in Project Settings → Player.
The samples are starting points to copy from, not drop-in solutions.
Troubleshooting
CONNECTION_FAILED keeps appearing
The SDK couldn't get a ticket or open the connection. The error Message has the underlying
reason. Check that:
- your ticket endpoint is reachable from the player's machine,
- it returns a
2xxstatus, - the response includes both
ticketandwsEndpoint, and - if you pass a region, it is one of Pairiquium's active regions (see Generate a Ticket).
"Call Initialize before using MatchmakingBehaviour"
Call Initialize with a ticket provider before BeginSearchAsync, CancelSearchAsync, or
CloseAsync.
The search ended with a terminal error and doesn't reconnect
Faulted means the server ended the search on purpose. Fix the cause (for example the missing
mmr), then call BeginSearchAsync again. See Error Handling.
Nothing happens after a match
OnMatchFound only carries the MatchId and Team. Your backend gets the webhook and is
responsible for telling players where to go. See After a Match.
It works in the editor but not in a build
The default transport supports Windows and Linux desktop builds. WebGL isn't supported, and consoles need their own transport. See Custom Providers & Platforms.
Getting help
- Source code and issues
- Changelog
- API Specs for the underlying protocol