Multiplayer Operations

The Multiplayer Operations Developer Hub

Welcome to the Multiplayer Operations developer hub. You'll find comprehensive guides and documentation to help you start working with Multiplayer Operations as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    API Reference

Matchmaking

The zeuz has Matchmaking service adapts to the required complexity of a game's matchmaking

Developers are able to configure the Matchmaking rules through zeuz control panel or zeuztool , choosing between simple property-based rule sets and advanced developer-defined matching functions.

Queued users are globally partitioned into batches according to the Matchmaking configuration and user population. This provides both superior performance and the freedom to match players arbitrarily across regions.

The Matchmaking configuration is flexible enough to allow asymmetric sessions where players can join a game-specific unique match party with freely defined characteristics like min/max size and properties.

The service also allows for whole team matching, allowing teams to match against each other and teams to match with individual players. This is achieved by treating persistent or ad-hoc teams as virtual players for the purpose of matchmaking.

Configuration

Connect to Orchestration

By connecting the matchmaking to the orchestration you get the advantage, that the scaler already can start up payloads, directly before they are needed. This helps, to reduce the players wait time for a game and directly affect user experience in a positive manner.

Field

Description

Type

Allocation id

ID of the allocation the matchmaker should be bound to

string

MatchBefore

Amount of users, that can already be matched, even before an allocation is ready

integer

MatchTimeout

Timeout for match creation, if no server could be allocated

MicrosecondMicrosecond - A millionth of a second (1,000,000 microseconds ≙ 1 second)

Overallocate

Amount of servers to allocate in advance as reserve

Integer

QueueAllocate

Amount of users that cause one payload to spawn (before matching).

Integer

BucketSize

Amount of users in the matchmaker, that should be matched together. The matchmaker matches users in buckets. (Example: In case there are 500.000 user waiting in the queue and the bucket size is 4.000, then the matchmaker will match them in groups of 4000 at the most.) In case this is set to 0, payloads are not spawned, until users are matched. This is the default behavior.

Integer

Expressions


Expressions are used, to match users perfectly by the rules you define. See Expressions for syntax.

Field

Description

Params

Expected output

Compare

Calculate comparative user rank

a, b as user params

Number

Map

Compare Map for user

map=current map name, params=user-params and session_age in seconds

boolean

Ranking

Calculate global user rank

all user params

Number

Map

If no map expression is configured the map parameter in the Matchmaking request is interpreted as comma separated list of possible map names, an empty string means every map is allowed.

If a map expression is configured, you have access to a set of variables:

  • Maps values can be accessed with their name prefixed by map_
  • Request parameters can be accessed with their name prefixed by params_
  • Duration of the current matchmaking session (in seconds) can be accessed via session_age

The expression must evaluate to a bool stating if this map is allowed to be used.

See matchmaking_create for params.

map_Name == "map01" && params_Somevalue >= 5

Ranking

The ranking expression is optional too, if it is empty the value rank from the parameters of the request is used to determine the sorting order of players to be matched together. The expression must evaluate to a float, the params are directly accessible as variables.

( wins * 2 ) - ( losses * 0.5 )

Compare

When a one dimensional rank is not sufficient for matching a compare expression can be configured. The matchmaking will execute this expression for each pair of players which are close predetermined by rank. The expression must evaluate to a float representing the difference between these players. The params of both players are accessible with variable prefixes a_ and b_

( a_rank + b_rank ) / 2 + rndf() * 1000

Team and Slot

For teams and slots there are currently no expressions available but a comma separated list of possible names can be provided in the params, empty string means everything is allowed.

Maps

Field

Description

Type

Opt

Freeform data field, passed down in the Matchmaking result

String

QueueLen

Waiting duration for players in queue

Integer

SessionTimeout

Timeout at which any user request expires, if not refreshed

MicrosecondMicrosecond - A millionth of a second (1,000,000 microseconds ≙ 1 second)

SigninKey

Key for signing the matchmaking result (so servers can verify its content)

String

TickInterval

Interval at which the matchmaker runs

MicrosecondMicrosecond - A millionth of a second (1,000,000 microseconds ≙ 1 second)

For Matchmaking several maps can be defined, each map can contain several teams and each team can contain several slots.

Here is an example of the map configuration in JSON format:

{
  "Name" : "map01",  //map identifier
  "UserCount" : {"Min" : 2, "Max" : 4},
  "Teams" : [
    {
      "Name" : "allies",  //team identifier
      "UserCount" : {"Min" : 2, "Max" : 4},
      "Slots" : [
        {
          "Name" : "gunner",  //slot identifier
          "UserCount" : {"Min" : 0, "Max" : 2},
        },
        {
          "Name" : "driver",  //slot identifier
          "UserCount" : {"Min" : 0, "Max" : 2},
        },
      ]
    }
  ]
}

Updated 4 months ago


Matchmaking


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.