Documentation

Support

Multiplayer Services SDK

All Services

Multiplayer Services SDK

Advanced matchmaking

Use additional rules and parameters to matchmake players on multiple variables.
Read time 2 minutesLast updated 4 hours ago

Find a session using Unity Matchmaker service

Use the Unity Matchmaker service to have a player join the best-suited session using more advanced rules. Matches can be tuned for network quality using Quality of Service (QoS) rules on the pool configuration. This type of rule ensures that players in the match don't exceed a specified latency to the host or server. For a given match, these rules also select the most suitable region in which to allocate a server or relay.
Note
The Multiplayer Services SDK automatically performs QoS measurements, and includes the results with the matchmaking request.
The following example demonstrates how to find and join a session using Matchmaker:
var matchmakerOptions = new MatchmakerOptions{ QueueName = "Friendly"};var sessionOptions = new SessionOptions(){ MaxPlayers = 2}.WithDirectNetwork();var matchmakerCancellationSource = new CancellationTokenSource();ISession session = await MultiplayerService.Instance.MatchmakeSessionAsync(matchmakerOptions, sessionOptions, matchmakerCancellationSource.Token);
For Matchmaker to find a session for the player, the user is expected to configure the matchmaking rules.
Note
To test this code, create a queue named
Friendly
and use the default pool.

Network choice when matchmaking

  • The recommended best practice is to use
    WithDirectNetwork()
    when the Matchmaker pool is configured with your preferred hosting provider.
  • WithDirectNetwork()
    instructs clients to use direct network connections to the allocated server's IP and port.
  • The recommended best practice is to use
    WithRelayNetwork()
    or
    WithDistributedAuthorityNetwork()
    when the Matchmaker pool is configured for client-hosted (peer-to-peer) games.

Cancel matchmaking

If the player wants to stop the matchmaking process, use the following code:
matchmakerCancellationSource.Cancel();
This indicates to the Multiplayer Services SDK to delete the matchmaking ticket that was sent in the background to the service, and stop the search for a session.

Matchmaking results

The session also provides access to the Matchmaking Results with the information about the match and the players that are going to connect to the session (their teams and their data). Some information, such as team breakdown and custom ticket data, is only available through matchmaking results. The results also include the list of expected players, which is handy as it is available immediately and authoritatively before the players join the session and connect. You can access the matchmaking results with the following code:
var matchmakingResults = session.GetMatchmakingResults();

Additional resources