acceptMatch method

Future<void> acceptMatch({
  1. required AcceptanceType acceptanceType,
  2. required List<String> playerIds,
  3. required String ticketId,
})

Registers a player's acceptance or rejection of a proposed FlexMatch match. A matchmaking configuration may require player acceptance; if so, then matches built with that configuration cannot be completed unless all players accept the proposed match within a specified time limit.

When FlexMatch builds a match, all the matchmaking tickets involved in the proposed match are placed into status REQUIRES_ACCEPTANCE. This is a trigger for your game to get acceptance from all players in the ticket. Acceptances are only valid for tickets when they are in this status; all other acceptances result in an error.

To register acceptance, specify the ticket ID, a response, and one or more players. Once all players have registered acceptance, the matchmaking tickets advance to status PLACING, where a new game session is created for the match.

If any player rejects the match, or if acceptances are not received before a specified timeout, the proposed match is dropped. The matchmaking tickets are then handled in one of two ways: For tickets where one or more players rejected the match, the ticket status is returned to SEARCHING to find a new match. For tickets where one or more players failed to respond, the ticket status is set to CANCELLED, and processing is terminated. A new matchmaking request for these players can be submitted as needed.

Learn more

Add FlexMatch to a Game Client

FlexMatch Events Reference

Related operations

May throw InvalidRequestException. May throw NotFoundException. May throw InternalServiceException. May throw UnsupportedRegionException.

Parameter acceptanceType : Player response to the proposed match.

Parameter playerIds : A unique identifier for a player delivering the response. This parameter can include one or multiple player IDs.

Parameter ticketId : A unique identifier for a matchmaking ticket. The ticket must be in status REQUIRES_ACCEPTANCE; otherwise this request will fail.

Implementation

Future<void> acceptMatch({
  required AcceptanceType acceptanceType,
  required List<String> playerIds,
  required String ticketId,
}) async {
  ArgumentError.checkNotNull(acceptanceType, 'acceptanceType');
  ArgumentError.checkNotNull(playerIds, 'playerIds');
  ArgumentError.checkNotNull(ticketId, 'ticketId');
  _s.validateStringLength(
    'ticketId',
    ticketId,
    0,
    128,
    isRequired: true,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'GameLift.AcceptMatch'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'AcceptanceType': acceptanceType.toValue(),
      'PlayerIds': playerIds,
      'TicketId': ticketId,
    },
  );
}