def start_game_session_placement(PlacementId=None, GameSessionQueueName=
    None, GameProperties=None, MaximumPlayerSessionCount=None,
    GameSessionName=None, PlayerLatencies=None, DesiredPlayerSessions=None):
    """
    Places a request for a new game session in a queue (see  CreateGameSessionQueue ). When processing a placement request, Amazon GameLift searches for available resources on the queue's destinations, scanning each until it finds resources or the placement request times out.
    A game session placement request can also request player sessions. When a new game session is successfully created, Amazon GameLift creates a player session for each player included in the request.
    When placing a game session, by default Amazon GameLift tries each fleet in the order they are listed in the queue configuration. Ideally, a queue's destinations are listed in preference order.
    Alternatively, when requesting a game session with players, you can also provide latency data for each player in relevant regions. Latency data indicates the performance lag a player experiences when connected to a fleet in the region. Amazon GameLift uses latency data to reorder the list of destinations to place the game session in a region with minimal lag. If latency data is provided for multiple players, Amazon GameLift calculates each region's average lag for all players and reorders to get the best game play across all players.
    To place a new game session request, specify the following:
    If successful, a new game session placement is created.
    To track the status of a placement request, call  DescribeGameSessionPlacement and check the request's status. If the status is Fulfilled , a new game session has been created and a game session ARN and region are referenced. If the placement request times out, you can resubmit the request or retry it with a different queue.
    See also: AWS API Documentation
    
    
    :example: response = client.start_game_session_placement(
        PlacementId='string',
        GameSessionQueueName='string',
        GameProperties=[
            {
                'Key': 'string',
                'Value': 'string'
            },
        ],
        MaximumPlayerSessionCount=123,
        GameSessionName='string',
        PlayerLatencies=[
            {
                'PlayerId': 'string',
                'RegionIdentifier': 'string',
                'LatencyInMilliseconds': ...
            },
        ],
        DesiredPlayerSessions=[
            {
                'PlayerId': 'string',
                'PlayerData': 'string'
            },
        ]
    )
    
    
    :type PlacementId: string
    :param PlacementId: [REQUIRED]
            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 unless you are resubmitting a canceled or timed-out placement request.
            

    :type GameSessionQueueName: string
    :param GameSessionQueueName: [REQUIRED]
            Name of the queue to use to place the new game session.
            

    :type GameProperties: list
    :param GameProperties: Set of developer-defined properties for a game session. These properties are passed to the server process hosting the game session.
            (dict) --Set of key-value pairs containing information a server process requires to set up a game session. This object allows you to pass in any set of data needed for your game. For more information, see the Amazon GameLift Developer Guide .
            Key (string) -- [REQUIRED]TBD
            Value (string) -- [REQUIRED]TBD
            
            

    :type MaximumPlayerSessionCount: integer
    :param MaximumPlayerSessionCount: [REQUIRED]
            Maximum number of players that can be connected simultaneously to the game session.
            

    :type GameSessionName: string
    :param GameSessionName: Descriptive label that is associated with a game session. Session names do not need to be unique.

    :type PlayerLatencies: list
    :param PlayerLatencies: Set of values, expressed in milliseconds, indicating the amount of latency that players are experiencing when connected to AWS 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.
            (dict) --Regional latency information for a player, used when requesting a new game session with StartGameSessionPlacement . This value indicates the amount of time lag that exists when the player is connected to a fleet in the specified region. The relative difference between a player's latency values for multiple regions are used to determine which fleets are best suited to place a new game session for the player.
            PlayerId (string) --Unique identifier for a player associated with the latency data.
            RegionIdentifier (string) --Name of the region that is associated with the latency value.
            LatencyInMilliseconds (float) --Amount of time that represents the time lag experienced by the player when connected to the specified region.
            
            

    :type DesiredPlayerSessions: list
    :param DesiredPlayerSessions: Set of information on each player to create a player session for.
            (dict) --Player information for use when creating player sessions using a game session placement request with StartGameSessionPlacement .
            PlayerId (string) --Unique identifier for a player to associate with the player session.
            PlayerData (string) --Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game.
            
            

    :rtype: dict
    :return: {
        'GameSessionPlacement': {
            'PlacementId': 'string',
            'GameSessionQueueName': 'string',
            'Status': 'PENDING'|'FULFILLED'|'CANCELLED'|'TIMED_OUT',
            'GameProperties': [
                {
                    'Key': 'string',
                    'Value': 'string'
                },
            ],
            'MaximumPlayerSessionCount': 123,
            'GameSessionName': 'string',
            'GameSessionId': 'string',
            'GameSessionArn': 'string',
            'GameSessionRegion': 'string',
            'PlayerLatencies': [
                {
                    'PlayerId': 'string',
                    'RegionIdentifier': 'string',
                    'LatencyInMilliseconds': ...
                },
            ],
            'StartTime': datetime(2015, 1, 1),
            'EndTime': datetime(2015, 1, 1),
            'IpAddress': 'string',
            'Port': 123,
            'PlacedPlayerSessions': [
                {
                    'PlayerId': 'string',
                    'PlayerSessionId': 'string'
                },
            ]
        }
    }
    
    
    :returns: 
    PlacementId (string) -- [REQUIRED]
    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 unless you are resubmitting a canceled or timed-out placement request.
    
    GameSessionQueueName (string) -- [REQUIRED]
    Name of the queue to use to place the new game session.
    
    GameProperties (list) -- Set of developer-defined properties for a game session. These properties are passed to the server process hosting the game session.
    
    (dict) --Set of key-value pairs containing information a server process requires to set up a game session. This object allows you to pass in any set of data needed for your game. For more information, see the Amazon GameLift Developer Guide .
    
    Key (string) -- [REQUIRED]TBD
    
    Value (string) -- [REQUIRED]TBD
    
    
    
    
    
    MaximumPlayerSessionCount (integer) -- [REQUIRED]
    Maximum number of players that can be connected simultaneously to the game session.
    
    GameSessionName (string) -- Descriptive label that is associated with a game session. Session names do not need to be unique.
    PlayerLatencies (list) -- Set of values, expressed in milliseconds, indicating the amount of latency that players are experiencing when connected to AWS 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.
    
    (dict) --Regional latency information for a player, used when requesting a new game session with  StartGameSessionPlacement . This value indicates the amount of time lag that exists when the player is connected to a fleet in the specified region. The relative difference between a player's latency values for multiple regions are used to determine which fleets are best suited to place a new game session for the player.
    
    PlayerId (string) --Unique identifier for a player associated with the latency data.
    
    RegionIdentifier (string) --Name of the region that is associated with the latency value.
    
    LatencyInMilliseconds (float) --Amount of time that represents the time lag experienced by the player when connected to the specified region.
    
    
    
    
    
    DesiredPlayerSessions (list) -- Set of information on each player to create a player session for.
    
    (dict) --Player information for use when creating player sessions using a game session placement request with  StartGameSessionPlacement .
    
    PlayerId (string) --Unique identifier for a player to associate with the player session.
    
    PlayerData (string) --Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game.
    
    
    
    
    
    
    """
    pass
