MMatchdock
Early access · EU region live

Matchmaking and dedicated servers, without the ops team.

Matchdock pairs your players, starts a dedicated game server for every match in an isolated container, and records the result only your server can report. Upload a build, drop in the SDK, ship.

Built for our own 1v1 mobile game after Unity retired Multiplay hosting.

Anatomy of a match
  1. 0.0 sTwo players tap PlayPOST /matchmaking/join
  2. 0.6 sMatch foundSame queue and region, ratings within ±100
  3. 1.1 sDedicated server is upIsolated container · its own UDP port
  4. 1.3 sPlayers admittedJoin tokens verified by the server
  5. 3 minResult accepted3 – 2 · ratings +12 / −12 · server removed
~1 s
from two players queueing to a match
~1 s
more until the dedicated server is listening
200 players
matched in under 5 seconds in our load test
0
Linux capabilities inside a game server container
How it works

From a zip file to live matches in an afternoon.

1

Upload your server build

Zip your Linux dedicated server and upload it from the console or CI. We verify it, distribute it to the fleet and keep every version one click away for rollback.

2

Players queue from your game

The SDK signs the device in and joins a queue. Matchdock pairs players by rating and region, widening the window the longer someone waits - you set the rules per queue.

3

A server starts for that match

Each match gets a fresh server in a locked-down container. It admits only its own players, reports the result, and disappears. Ratings, history and leaderboards update themselves.

What you get

Everything between “Play” and the final whistle.

Matchmaking you can tune

Queues with rating windows that widen over wait time, regions, friend matches, cancel and abandon handled correctly - including both players cancelling at once.

One container per match

No capabilities, read-only filesystem, unprivileged user, hard CPU and memory limits, only the match port exposed. Your build cannot touch anything else, and neither can anyone else’s.

Results nobody can fake

Only the dedicated server can report a result, and reporting is idempotent. Quitters lose by forfeit, crashes cost nobody rating, and every match keeps a full timeline.

Ratings, leagues, leaderboards

Elo with placement matches, league tiers, per-project leaderboards and match history are part of the platform - not another service to build and secure.

A console your team will use

Live sessions, match outcomes with reasons, build uploads with progress, queue editor, API keys, usage charts, and CPU and memory per game server so you can size with data.

Your games stay separate

Every game is its own project: players, matches, leaderboards, builds and keys are isolated. Client keys identify the project; server keys manage it.

Unity SDK · preview

A few lines on each side.

The client SDK signs players in, renews expired sessions silently and keeps their place in the queue through a dropped connection. The server SDK reads its session from the environment, never exposes the secret, and retries the result until it is accepted.

  • Unity 2021.3 and newer, no third-party dependencies
  • Optional Mirror authenticator for the admission handshake
  • Plain HTTP API underneath - any engine can integrate
SDK documentation
Client · FindMatch.cs
var client = MatchdockUnity.CreateClient(settings);
await client.SignInAsync(MatchdockUnity.DeviceId, MatchdockUnity.PlatformName);

// Queue, wait, and get the server to join - one call.
var ticket = await new Matchmaker(client).FindMatchAsync(
    new FindMatchOptions { QueueName = "ranked" }, cancelToken);

Connect(ticket.Host, ticket.Port, ticket.JoinToken);
Dedicated server · MatchServer.cs
var server = MatchdockUnity.TryCreateServerClient(out var session);

// Only players who belong to this match get in.
bool allowed = await server.AdmitPlayerAsync(userId, joinToken, slot);

// The dedicated server is the only source of truth for results.
await server.SubmitWinAsync(winnerId, loserId, 3, 1, durationSeconds);
Application.Quit(0);
Run in production

Boring on purpose.

We built Matchdock to launch our own game on it, so it had to handle the unglamorous parts: deploys during matches, nodes that vanish, players who pull the plug when they are losing.

Rolling builds
New matches start on the new build; matches in progress finish on the one they started with.
Fleet health
Nodes report in every few seconds. Unhealthy or draining nodes stop receiving matches; lost nodes fail their sessions cleanly.
Region aware
Matches land on a node in the players’ region when one has room, and fall back instead of failing.
Observable
Prometheus metrics for queues, waits, outcomes, fleet and API latency, with alerts for the things that matter at 3 a.m.

Bring your multiplayer game.

We are onboarding a small number of studios. Tell us about your game and we will set up a project, keys and a first build with you.