Samples & Troubleshooting

Samples

Import samples from Package Manager → Pairiquium Matchmaking SDK → Samples.

SampleWhat it shows
Basic MatchmakingChoosing a game mode and region, starting and cancelling a search, and showing match-found, error, and connection-state feedback.
Arena DuelThe 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 2xx status,
  • the response includes both ticket and wsEndpoint, 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