Table Of Contents

Feedback

User Guide

First time using the AWS CLI? See the User Guide for help getting started.

[ aws . gamelift ]

start-matchmaking

Description

Uses FlexMatch to create a game match for a group of players based on custom matchmaking rules, and starts a new game for the matched players. Each matchmaking request specifies the type of match to build (team configuration, rules for an acceptable match, etc.). The request also specifies the players to find a match for and where to host the new game session for optimal performance. A matchmaking request might start with a single player or a group of players who want to play together. FlexMatch finds additional players as needed to fill the match. Match type, rules, and the queue used to place a new game session are defined in a MatchmakingConfiguration . For complete information on setting up and using FlexMatch, see the topic Adding FlexMatch to Your Game .

To start matchmaking, provide a unique ticket ID, specify a matchmaking configuration, and include the players to be matched. You must also include a set of player attributes relevant for the matchmaking configuration. If successful, a matchmaking ticket is returned with status set to QUEUED . Track the status of the ticket to respond as needed and acquire game session connection information for successfully completed matches.

Tracking ticket status -- A couple of options are available for tracking the status of matchmaking requests:
  • Polling -- Call DescribeMatchmaking . This operation returns the full ticket object, including current status and (for completed tickets) game session connection info. We recommend polling no more than once every 10 seconds.
  • Notifications -- Get event notifications for changes in ticket status using Amazon Simple Notification Service (SNS). Notifications are easy to set up (see CreateMatchmakingConfiguration ) and typically deliver match status changes faster and more efficiently than polling. We recommend that you use polling to back up to notifications (since delivery is not guaranteed) and call DescribeMatchmaking only when notifications are not received within 30 seconds.
Processing a matchmaking request -- FlexMatch handles a matchmaking request as follows:
  • Your client code submits a StartMatchmaking request for one or more players and tracks the status of the request ticket.
  • FlexMatch uses this ticket and others in process to build an acceptable match. When a potential match is identified, all tickets in the proposed match are advanced to the next status.
  • If the match requires player acceptance (set in the matchmaking configuration), the tickets move into status REQUIRES_ACCEPTANCE . This status triggers your client code to solicit acceptance from all players in every ticket involved in the match, and then call AcceptMatch for each player. If any player rejects or fails to accept the match before a specified timeout, the proposed match is dropped (see AcceptMatch for more details).
  • Once a match is proposed and accepted, the matchmaking tickets move into status PLACING . FlexMatch locates resources for a new game session using the game session queue (set in the matchmaking configuration) and creates the game session based on the match data.
  • When the match is successfully placed, the matchmaking tickets move into COMPLETED status. Connection information (including game session endpoint and player session) is added to the matchmaking tickets. Matched players can use the connection information to join the game.

Matchmaking-related operations include:

  • StartMatchmaking
  • DescribeMatchmaking
  • StopMatchmaking
  • AcceptMatch
  • StartMatchBackfill

See also: AWS API Documentation

See 'aws help' for descriptions of global parameters.

Synopsis

  start-matchmaking
[--ticket-id <value>]
--configuration-name <value>
--players <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

Options

--ticket-id (string)

Unique identifier for a matchmaking ticket. If no ticket ID is specified here, Amazon GameLift will generate one in the form of a UUID. Use this identifier to track the matchmaking ticket status and retrieve match results.

--configuration-name (string)

Name of the matchmaking configuration to use for this request. Matchmaking configurations must exist in the same region as this request.

--players (list)

Information on each player to be matched. This information must include a player ID, and may contain player attributes and latency data to be used in the matchmaking process. After a successful match, Player objects contain the name of the team the player is assigned to.

Shorthand Syntax:

PlayerId=string,PlayerAttributes={KeyName1={S=string,N=double,SL=[string,string],SDM={KeyName1=double,KeyName2=double}},KeyName2={S=string,N=double,SL=[string,string],SDM={KeyName1=double,KeyName2=double}}},Team=string,LatencyInMs={KeyName1=integer,KeyName2=integer} ...

JSON Syntax:

[
  {
    "PlayerId": "string",
    "PlayerAttributes": {"string": {
          "S": "string",
          "N": double,
          "SL": ["string", ...],
          "SDM": {"string": double
            ...}
        }
      ...},
    "Team": "string",
    "LatencyInMs": {"string": integer
      ...}
  }
  ...
]

--cli-input-json (string) Performs service operation based on the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, the CLI values will override the JSON-provided values. It is not possible to pass arbitrary binary values using a JSON-provided value as the string will be taken literally.

--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.

See 'aws help' for descriptions of global parameters.

Output

MatchmakingTicket -> (structure)

Ticket representing the matchmaking request. This object include the information included in the request, ticket status, and match results as generated during the matchmaking process.

TicketId -> (string)

Unique identifier for a matchmaking ticket.

ConfigurationName -> (string)

Name of the MatchmakingConfiguration that is used with this ticket. Matchmaking configurations determine how players are grouped into a match and how a new game session is created for the match.

Status -> (string)

Current status of the matchmaking request.

  • QUEUED -- The matchmaking request has been received and is currently waiting to be processed.
  • SEARCHING -- The matchmaking request is currently being processed.
  • REQUIRES_ACCEPTANCE -- A match has been proposed and the players must accept the match (see AcceptMatch ). This status is used only with requests that use a matchmaking configuration with a player acceptance requirement.
  • PLACING -- The FlexMatch engine has matched players and is in the process of placing a new game session for the match.
  • COMPLETED -- Players have been matched and a game session is ready to host the players. A ticket in this state contains the necessary connection information for players.
  • FAILED -- The matchmaking request was not completed. Tickets with players who fail to accept a proposed match are placed in FAILED status.
  • CANCELLED -- The matchmaking request was canceled with a call to StopMatchmaking .
  • TIMED_OUT -- The matchmaking request was not successful within the duration specified in the matchmaking configuration.

Note

Matchmaking requests that fail to successfully complete (statuses FAILED, CANCELLED, TIMED_OUT) can be resubmitted as new requests with new ticket IDs.

StatusReason -> (string)

Code to explain the current status. For example, a status reason may indicate when a ticket has returned to SEARCHING status after a proposed match fails to receive player acceptances.

StatusMessage -> (string)

Additional information about the current status.

StartTime -> (timestamp)

Time stamp indicating when this matchmaking request was received. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").

EndTime -> (timestamp)

Time stamp indicating when this matchmaking request stopped being processed due to success, failure, or cancellation. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").

Players -> (list)

A set of Player objects, each representing a player to find matches for. Players are identified by a unique player ID and may include latency data for use during matchmaking. If the ticket is in status COMPLETED , the Player objects include the team the players were assigned to in the resulting match.

(structure)

Represents a player in matchmaking. When starting a matchmaking request, a player has a player ID, attributes, and may have latency data. Team information is added after a match has been successfully completed.

PlayerId -> (string)

Unique identifier for a player

PlayerAttributes -> (map)

Collection of key:value pairs containing player information for use in matchmaking. Player attribute keys must match the playerAttributes used in a matchmaking rule set. Example: "PlayerAttributes": {"skill": {"N": "23"}, "gameMode": {"S": "deathmatch"}} .

key -> (string)

value -> (structure)

Values for use in Player attribute key:value pairs. This object lets you specify an attribute value using any of the valid data types: string, number, string array or data map. Each AttributeValue object can use only one of the available properties.

S -> (string)

For single string values. Maximum string length is 100 characters.

N -> (double)

For number values, expressed as double.

SL -> (list)

For a list of up to 10 strings. Maximum length for each string is 100 characters. Duplicate values are not recognized; all occurrences of the repeated value after the first of a repeated value are ignored.

(string)

SDM -> (map)

For a map of up to 10 data type:value pairs. Maximum length for each string value is 100 characters.

key -> (string)

value -> (double)

Team -> (string)

Name of the team that the player is assigned to in a match. Team names are defined in a matchmaking rule set.

LatencyInMs -> (map)

Set of values, expressed in milliseconds, indicating the amount of latency that a player experiences when connected to AWS regions. If this property is present, FlexMatch considers placing the match only in regions for which latency is reported.

If a matchmaker has a rule that evaluates player latency, players must report latency in order to be matched. If no latency is reported in this scenario, FlexMatch assumes that no regions are available to the player and the ticket is not matchable.

key -> (string)

value -> (integer)

GameSessionConnectionInfo -> (structure)

Identifier and connection information of the game session created for the match. This information is added to the ticket only after the matchmaking request has been successfully completed.

GameSessionArn -> (string)

Amazon Resource Name (ARN ) that is assigned to a game session and uniquely identifies it.

IpAddress -> (string)

IP address of the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number.

Port -> (integer)

Port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number.

MatchedPlayerSessions -> (list)

Collection of player session IDs, one for each player ID that was included in the original matchmaking request.

(structure)

Represents a new player session that is created as a result of a successful FlexMatch match. A successful match automatically creates new player sessions for every player ID in the original matchmaking request.

When players connect to the match's game session, they must include both player ID and player session ID in order to claim their assigned player slot.

PlayerId -> (string)

Unique identifier for a player

PlayerSessionId -> (string)

Unique identifier for a player session

EstimatedWaitTime -> (integer)

Average amount of time (in seconds) that players are currently waiting for a match. If there is not enough recent data, this property may be empty.