game-common / pragma.matchmaking / MatchmakingPlugin / matchParties /

matchParties #

open fun matchParties(queueKey: MatchmakingRpc.MatchmakingQueueKey, anchor: Matchmaking.Matchable, other: Matchmaking.Matchable): NewGameInstance?

Called during the main matchmaking loop. The anchor Matchmaking.Matchable represents a collection of parties that could form the teams for a game. Parties can be moved between the matchable and the anchor. This method is called many times, evaluating each party that has joined the matchmaking queue. When the criteria to start a new game is met, return a NewGameInstance from this method to be sent to the game server.

If an anchor Matchmaking.Matchable is compared against every other Matchmaking.Matchable in the queue without finding matches for its parties, the next matchmaking loop will select a new anchor Matchmaking.Matchable and restart comparison against all other Matchmaking.Matchable objects in queue.

Things that can be done in this method:

  • Move parties between the anchor Matchmaking.Matchable and the matchable Matchmaking.Matchable by calling Matchmaking.Matchable.takePartiesFrom on either matchable. In subsequent calls to the matchParties function, any parties that were moved will be left in the matchable they were moved to.
  • If a complete game can be formed with the parties presented, create and return a NewGameInstance with those players.
  • Return null to continue the matchmaking loop, if the requirements to start a new game have not been met.

If returning a NewGameInstance:

When a NewGameInstance is returned, the engine will:

  • Hand off all game instance details to the GameInstance service, allowing for game instance allocation to begin.
  • Send any players within that NewGameInstance to the game
  • Remove all players that are in the game instance from matchmaking

If the new game instance is marked to continue matchmaking, they will be reinserted into matchmaking with the game instance after allocation completes.

If this method throws an exception both the anchor Matchmaking.Matchable and matchable Matchmaking.Matchable will be removed from the queue along with their players, who are notified.

Used by:

  • MatchmakingService (runs forever, see MatchmakingConfig)

Parameters #

queueKey

There are separate queues for each distinct MatchmakingQueueKey.

anchor

The current Matchmaking.Matchable that matchmaking is attempting to find compatible parties for.

other

A set of parties to be considered from the same matchmaking queue.