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
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
AcceptMatch for more details).
Once a match is proposed and accepted, the matchmaking tickets move into status
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
When the match is successfully placed, the matchmaking tickets move into
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:
For PCL this operation is only available in asynchronous form. Please refer to StartMatchmakingAsync.
public virtual StartMatchmakingResponse StartMatchmaking( StartMatchmakingRequest request )
Container for the necessary parameters to execute the StartMatchmaking service method.
|InternalServiceException||The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.|
|InvalidRequestException||One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.|
|NotFoundException||A service resource associated with the request could not be found. Clients should not retry such requests.|
|UnsupportedRegionException||The requested operation is not supported in the region specified.|
Supported in: 4.5, 4.0, 3.5
Supported in: Windows Store Apps
Supported in: Windows Phone 8.1
Supported in: Xamarin Android
Supported in: Xamarin iOS (Unified)
Supported in: Xamarin.Forms