Skip to main content

Matchmaking

Matchmaker queues

Matchmaking is a critical component in every multiplayer game. At Elympics, we have developed a service that is not only straightforward to configure but also sophisticated enough to cater to all your needs.

Almost all multiplayer games need some kind of matchmaking service to group players into matches. With Elympics, you don't need to worry about it, because we've got you covered. Whenever a player wants to join your game, they must go through one of your matchmaking queues. After you create a queue via our CLI or Panel, it's ready to use with the ElympicsLobbyClient.Instance.PlayOnlineInRegion method. Simply pass its name to the queueName parameter, and that's it - matchmaking is already implemented in your game.

How to change or create queues?

Using CLI

You can use the Elympics CLI Tool to manage queues by following this chapter.

Using Web Panel

Navigate to Game Settings on your game page and create or update queues in the Matchmaking Queues section.

Game settings

Matchmaking Queues

Queue Modal

Queue Parameters

info

Every change in elympics configuration needs a few minutes to propagate within our system.

The parameters you can configure for each queue are:

  • Name (string): A human-friendly name for the queue, used inside Unity to decide which configuration should be applied.
  • MatchType: Specifies the matchmaking type such as SOLO, PAIR, GROUP, or TEAM.
  • NumberOfTeams (integer): Indicates the number of teams required. One player is considered a team.
  • PlayersInTeams (integer): Specifies the number of players in one team.
  • MaxWaitTime (integer): Sets the maximum waiting time for a player before matching with bots. This parameter also scales player tolerance for imbalance match-ups (see MatchmakingMode).
  • MatchWithBots (bool): If enabled, players waiting too long are matched with bots after MaxWaitTime seconds.
  • MinPlayersToMatch (integer): After MaxWaitTime, the matchmaker seeks matches that aren't full. Combined with MatchWithBots, it fills in missing players with bots.
  • MatchmakingMode (ACCEPT_ALL | FASTEST_MATCHING | FAST_MATCHING | BALANCED | FAIR_MATCHING | MOST_FAIR_MATCHING): Defines matchmaking behavior in terms of balancing wait times and fairness. It also affects how quickly players' tolerance for imbalance changes. ACCEPT_ALL is similar to a greedy approach, meaning that matches will be created whenever there are enough players in the queue.

Debug Mode, Debug Mode with Bots

The Debug mode and Debug mode with bots options transform any queue you join into a debug mode, applying a 'greedy' matchmaking strategy. This means a match is found as soon as there are enough players. The Debug mode with bots additionally includes bots if not included originally. These modes are useful for testing new builds without the need to switch queues.

You can set those options using our CLI:

elympics games versions update -g <your-game-id> -v <your-game-version-id> --debug-mode true --debug-mode-with-bots true

Player rankings

Rankings are calculated per game using both the ELO method and a more advanced approach that converges quickly to the player's actual skill level. Rankings are used for all match types and are shared across all your queues and match types. To calculate it properly, you need to valid send MatchmakerData on the end of your game.

Matchmaking Across Versions and Region

Queue that is configured in your game can be spawned multiple times with different context. Each game version will have its own copy to not mix players that joins with different game versions. The same situation will happen if you have more then one region. If this is is the true. Matchmaker will not mix players that want to play in different regions.

Machine learning based matchmaking in duel matches

For 1vs1 games (MatchType PAIR) we use Machine Learning for matchmaking, using randomized control groups to evaluate match effectiveness. The ML model uses the player's MatchmakerData (ranking) during matchmaking to balance your game based on player skills.

tip

This functionality requires a certain number of matches before fully leveraging machine learning.

Social Queues

info

This is an early version and this behaviour could be changed in a future release. Feel free to submit your ideas on how to improve this.

Concept

Social Matchmaker Queues offer the ability to assign players to subqueues of already defined queue.

Sample flow of matching friends:

  1. Player 1 chooses queue Default with a randomized suffix (i.e.: 3c2t35bMyPwDc5Lt) and uses it in their game
  2. Player 1 passes this information to Player 2
  3. Player 2 uses information about queue received from Player 1
  4. Player 1 and Player 2 join this queue
  5. Player 1 and Player 2 are matched into the same match
  6. Flow of joining continues as normal

Usage

caution

queueName has to be name of a queue defined in Elympics (using Panel or CLI).

You just use queueName:suffix instead of queueName in ElympicsLobbyClient.PlayOnlineInRegion method.

Actions & events

Authentication

ElympicsLobbyClient

  • Authenticate()
  • Authenticated event – bool success, string userId, string jwtToken, string error

Matchmaking

ElympicsLobbyClient

  • PlayOnlineInRegion(string regionName, float[] matchmakerData = null, byte[] gameEngineData = null, string queueName = null, bool loadGameplaySceneOnFinished = true)

ElympicsLobbyClient.Matchmaker

  • MatchmakingFinished event – Action<(string MatchId, string TcpUdpServerAddress, string WebServerAddress, string UserSecret, List<string> MatchedPlayers)>
  • MatchmakingError event – Action<string>