startGameSessionPlacement method
- required String gameSessionQueueName,
- required int maximumPlayerSessionCount,
- required String placementId,
- List<
DesiredPlayerSession> ? desiredPlayerSessions, - List<
GameProperty> ? gameProperties, - String? gameSessionData,
- String? gameSessionName,
- List<
PlayerLatency> ? playerLatencies, - PriorityConfigurationOverride? priorityConfigurationOverride,
This API works with the following fleet types: EC2, Anywhere, Container
Makes a request to start a new game session using a game session queue. When processing a placement request, Amazon GameLift Servers looks for the best possible available resource to host the game session, based on how the queue is configured to prioritize factors such as resource cost, latency, and location. After selecting an available resource, Amazon GameLift Servers prompts the resource to start a game session. A placement request can include a list of players to create a set of player sessions. The request can also include information to pass to the new game session, such as to specify a game map or other options.
Request options
Use this operation to make the following types of requests.
-
Request a placement using the queue's default prioritization process (see
the default prioritization described in PriorityConfiguration).
Include these required parameters:
-
GameSessionQueueName -
MaximumPlayerSessionCount -
PlacementID
-
-
Request a placement and prioritize based on latency. Include these
parameters:
-
Required parameters
GameSessionQueueName,MaximumPlayerSessionCount,PlacementID. -
PlayerLatencies. Include a set of latency values for destinations in the queue. When a request includes latency data, Amazon GameLift Servers automatically reorder the queue's locations priority list based on lowest available latency values. If a request includes latency data for multiple players, Amazon GameLift Servers calculates each location's average latency for all players and reorders to find the lowest latency across all players. -
Don't include
PriorityConfigurationOverride.
- Prioritize based on a custom list of locations. If you're using a queue that's configured to prioritize location first (see PriorityConfiguration for game session queues), you can optionally use the PriorityConfigurationOverride parameter to substitute a different location priority list for this placement request. Amazon GameLift Servers searches each location on the priority override list to find an available hosting resource for the new game session. Specify a fallback strategy to use in the event that Amazon GameLift Servers fails to place the game session in any of the locations on the override list.
-
Required parameters
- Request a placement and prioritized based on a custom list of locations.
- You can request new player sessions for a group of players. Include the DesiredPlayerSessions parameter and include at minimum a unique player ID for each. You can also include player-specific data to pass to the new game session.
If successful, this operation generates a new game session placement
request and adds it to the game session queue for processing. You can
track the status of individual placement requests by calling DescribeGameSessionPlacement
or by monitoring queue notifications. When the request status is
FULFILLED, a new game session has started and the placement
request is updated with connection information for the game session (IP
address and port). If the request included player session data, Amazon
GameLift Servers creates a player session for each player ID in the
request.
The request results in a InvalidRequestException in the
following situations:
- If the request includes both PlayerLatencies and PriorityConfigurationOverride parameters.
- If the request includes the PriorityConfigurationOverride parameter and specifies a queue that doesn't prioritize locations.
May throw InternalServiceException.
May throw InvalidRequestException.
May throw NotFoundException.
May throw UnauthorizedException.
May throw UnsupportedRegionException.
Parameter gameSessionQueueName :
Name of the queue to use to place the new game session. You can use either
the queue name or ARN value.
Parameter maximumPlayerSessionCount :
The maximum number of players that can be connected simultaneously to the
game session.
Parameter placementId :
A unique identifier to assign to the new game session placement. This
value is developer-defined. The value must be unique across all Regions
and cannot be reused.
Parameter desiredPlayerSessions :
Set of information on each player to create a player session for.
Parameter gameProperties :
A set of key-value pairs that can store custom data in a game session. For
example: {"Key": "difficulty", "Value": "novice"}.
- Avoid using periods (".") in property keys if you plan to search for game sessions by properties. Property keys containing periods cannot be searched and will be filtered out from search results due to search index limitations.
- If you use SearchGameSessions API, there is a limit of 500 game property keys across all game sessions and all fleets per region. If the limit is exceeded, there will potentially be game session entries missing from SearchGameSessions API results.
Parameter gameSessionData :
A set of custom game session properties, formatted as a single string
value. This data is passed to a game server process with a request to
start a new game session. For more information, see Start
a game session.
Parameter gameSessionName :
A descriptive label that is associated with a game session. Session names
do not need to be unique.
Parameter playerLatencies :
A set of values, expressed in milliseconds, that indicates the amount of
latency that a player experiences when connected to Amazon Web Services
Regions. This information is used to try to place the new game session
where it can offer the best possible gameplay experience for the players.
Parameter priorityConfigurationOverride :
A prioritized list of locations to use for the game session placement and
instructions on how to use it. This list overrides a queue's prioritized
location list for this game session placement request only. You can
include Amazon Web Services Regions, local zones, and custom locations
(for Anywhere fleets). You can choose to limit placements to locations on
the override list only, or you can prioritize locations on the override
list first and then fall back to the queue's other locations if needed.
Choose a fallback strategy to use in the event that Amazon GameLift
Servers fails to place a game session in any of the locations on the
priority override list.
Implementation
Future<StartGameSessionPlacementOutput> startGameSessionPlacement({
required String gameSessionQueueName,
required int maximumPlayerSessionCount,
required String placementId,
List<DesiredPlayerSession>? desiredPlayerSessions,
List<GameProperty>? gameProperties,
String? gameSessionData,
String? gameSessionName,
List<PlayerLatency>? playerLatencies,
PriorityConfigurationOverride? priorityConfigurationOverride,
}) async {
_s.validateNumRange(
'maximumPlayerSessionCount',
maximumPlayerSessionCount,
0,
1152921504606846976,
isRequired: true,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'GameLift.StartGameSessionPlacement'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'GameSessionQueueName': gameSessionQueueName,
'MaximumPlayerSessionCount': maximumPlayerSessionCount,
'PlacementId': placementId,
if (desiredPlayerSessions != null)
'DesiredPlayerSessions': desiredPlayerSessions,
if (gameProperties != null) 'GameProperties': gameProperties,
if (gameSessionData != null) 'GameSessionData': gameSessionData,
if (gameSessionName != null) 'GameSessionName': gameSessionName,
if (playerLatencies != null) 'PlayerLatencies': playerLatencies,
if (priorityConfigurationOverride != null)
'PriorityConfigurationOverride': priorityConfigurationOverride,
},
);
return StartGameSessionPlacementOutput.fromJson(jsonResponse.body);
}