

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# SDK do servidor C\+\+ (Unreal) para Amazon GameLift Servers 5.x – Ações
<a name="integration-server-sdk5-unreal-actions"></a>

Use a referência do SDK 5.x do servidor Amazon GameLift Servers para Unreal para ajudar você a preparar o jogo multijogador para uso com o Amazon GameLift Servers. Para obter detalhes sobre o processo de integração, consulte [Integre o Amazon GameLift Servers ao seu servidor de jogos com o SDK do servidor.](gamelift-sdk-server-api.md). Se você estiver usando o plug-in do Amazon GameLift Servers para Unreal, consulte também [Amazon GameLift Serversplugin para Unreal Engine](unreal-plugin.md).

**nota**  
Este tópico descreve a API C\+\+ do Amazon GameLift Servers que você pode usar ao criar para o Unreal Engine. Especificamente, essa documentação se aplica ao código que você compila com a opção `-DBUILD_FOR_UNREAL=1`. 

[SDK do servidor C\+\+ (Unreal) 5.x para Amazon GameLift Servers -- Tipos de dados](integration-server-sdk5-unreal-datatypes.md)

**Topics**
+ [SDK do servidor C\+\+ (Unreal) 5.x para Amazon GameLift Servers -- Tipos de dados](integration-server-sdk5-unreal-datatypes.md)
+ [GetSdkVersion()](#integration-server-sdk5-unreal-getsdkversion)
+ [InitSDK()](#integration-server-sdk5-unreal-initsdk)
+ [InitSDK()](#integration-server-sdk5-unreal-initsdk-anywhere)
+ [ProcessReady()](#integration-server-sdk5-unreal-processready)
+ [ProcessEnding()](#integration-server-sdk5-unreal-processending)
+ [ActivateGameSession()](#integration-server-sdk5-unreal-activategamesession)
+ [UpdatePlayerSessionCreationPolicy()](#integration-server-sdk5-unreal-updateplayersessioncreationpolicy)
+ [GetGameSessionId()](#integration-server-sdk5-unreal-getgamesessionid)
+ [GetTerminationTime()](#integration-server-sdk5-unreal-getterm)
+ [AcceptPlayerSession()](#integration-server-sdk5-unreal-acceptplayersession)
+ [RemovePlayerSession()](#integration-server-sdk5-unreal-removeplayersession)
+ [DescribePlayerSessions()](#integration-server-sdk5-unreal-describeplayersessions)
+ [StartMatchBackfill()](#integration-server-sdk5-unreal-startmatchbackfill)
+ [StopMatchBackfill()](#integration-server-sdk5-unreal-stopmatchbackfill)
+ [GetComputeCertificate()](#integration-server-sdk5-unreal-getcomputecertificate)
+ [GetFleetRoleCredentials()](#integration-server-sdk5-unreal-getfleetrolecredentials)
+ [Destroy()](#integration-server-sdk5-unreal-ref-destroy)

## GetSdkVersion()
<a name="integration-server-sdk5-unreal-getsdkversion"></a>

Retorna o número da versão atual do SDK compilado no processo de servidor.

### Sintaxe
<a name="integration-server-sdk5-unreal-getsdkversion-syntax"></a>

```
FGameLiftStringOutcome GetSdkVersion();
```

### Valor de retorno
<a name="integration-server-sdk5-unreal-getsdkversion-return"></a>

Se bem-sucedido, retornará a versão do SDK atual como um objeto [FGameLiftStringOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-awsstringoutcome). O objeto retornada inclui apenas o número da versão (exemplo, `5.0.0`). Se não for bem-sucedido, retornará uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-getsdkversion-example"></a>

```
Aws::GameLift::AwsStringOutcome SdkVersionOutcome = Aws::GameLift::Server::GetSdkVersion();  
```

## InitSDK()
<a name="integration-server-sdk5-unreal-initsdk"></a>

Inicializa o SDK do Amazon GameLift Servers para uma frota EC2 gerenciada. Chame esse método na inicialização, antes que qualquer outra inicialização relacionada ao Amazon GameLift Servers ocorra. Esse método lê os parâmetros do servidor do ambiente host para configurar a comunicação entre o servidor e o serviço do Amazon GameLift Servers. Ele usa um token de idempotência, então você repete essa chamada com segurança quando ela falhar.

### Sintaxe
<a name="integration-server-sdk5-unreal-initsdk-syntax"></a>

```
FGameLiftGenericOutcome InitSDK()
```

### Valor de retorno
<a name="integration-server-sdk5-unreal-initsdk-return"></a>

Se bem-sucedido, retornará um objeto `InitSdkOutcome` indicando que o processo de servidor está pronto para chamar [ProcessReady()](#integration-server-sdk5-unreal-processready). 

### Exemplo
<a name="integration-server-sdk5-unreal-initsdk-example"></a>

```
//Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication.
FGameLiftGenericOutcome initSdkOutcome = GameLiftSdkModule->InitSDK();
```

## InitSDK()
<a name="integration-server-sdk5-unreal-initsdk-anywhere"></a>

Inicializa o Amazon GameLift Servers SDK para uma frota Anywhere ou uma frota de contêineres gerenciada. Chame esse método na inicialização, antes que qualquer outra inicialização relacionada ao Amazon GameLift Servers ocorra. Esse método requer parâmetros explícitos do servidor para configurar a comunicação entre o servidor e o serviço do Amazon GameLift Servers. Ele usa um token de idempotência, então você repete essa chamada com segurança quando ela falhar.

### Sintaxe
<a name="integration-server-sdk5-unreal-initsdk-anywhere-syntax"></a>

```
FGameLiftGenericOutcome InitSDK(serverParameters)
```

### Parâmetros
<a name="integration-server-sdk5-unreal-initsdk-anywhere-parameter"></a>

[FServerParâmetros](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-serverparameters)  
Para inicializar um servidor de jogos em uma frota do Amazon GameLift Servers Anywhere, construa um objeto `ServerParameters` com as seguintes informações:  
+ O URL do WebSocket usado para se conectar ao seu servidor de jogo. 
+ O ID do processo usado para hospedar o servidor de jogos. 
+ O ID do computador que hospeda os processos do seu servidor de jogos. 
+ O ID da frota do Amazon GameLift Servers que contém sua computação Amazon GameLift Servers Anywhere.
+ O token de autorização gerado pela operação do Amazon GameLift Servers. 

### Valor de retorno
<a name="integration-server-sdk5-unreal-initsdk-anywhere-return"></a>

Se bem-sucedido, retornará um objeto `InitSdkOutcome` indicando que o processo de servidor está pronto para chamar [ProcessReady()](#integration-server-sdk5-unreal-processready). 

**nota**  
Se as chamadas para `InitSDK()` estiverem falhando para compilações de jogos implantadas em frotas do Anywhere, verifique o parâmetro `ServerSdkVersion` usado ao criar o recurso de compilação. Você deve definir explicitamente esse valor para a versão do SDK do servidor em uso. O valor padrão desse parâmetro é 4.x, o que não é compatível. Para resolver esse problema, crie uma nova versão e implante-a em uma nova frota.

### Exemplo
<a name="integration-server-sdk5-unreal-initsdk-anywhere-example"></a>

```
//Define the server parameters
FServerParameters serverParameters;
parameters.m_authToken = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"; 
parameters.m_fleetId = "arn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa";
parameters.m_hostId = "HardwareAnywhere"; 
parameters.m_processId = "PID1234";
parameters.m_webSocketUrl = "wss://us-west-1.api.amazongamelift.com"; 

//Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication.
FGameLiftGenericOutcome initSdkOutcome = GameLiftSdkModule->InitSDK(serverParameters);
```

## ProcessReady()
<a name="integration-server-sdk5-unreal-processready"></a>

Notifica o Amazon GameLift Servers de que o processo do servidor está pronto para hospedar sessões do jogo. Chame esse método após invocar [InitSDK()](#integration-server-sdk5-unreal-initsdk). Esse método deve ser chamado somente uma vez por processo.

### Sintaxe
<a name="integration-server-sdk5-unreal-processready-syntax"></a>

`GenericOutcome ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters);`

### Parâmetros
<a name="integration-server-sdk5-unreal-processready-parameter"></a>

**processParameters**  
Um objeto [FProcessParâmetros](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-process) que fornece as seguintes informações sobre o processo do servidor:  
+ Nomes de métodos de retorno de chamada, implementados no código do servidor de jogos, que o serviço Amazon GameLift Servers invoca para se comunicar com o processo de servidor.
+ Número da porta em que o processo de servidor está escutando.
+ Caminho de qualquer arquivo específico da sessão do jogo que você deseja que o Amazon GameLift Servers capture e armazene.

### Valor de retorno
<a name="integration-server-sdk5-unreal-processready-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-processready-example"></a>

Este exemplo ilustra as implementações das funções de chamada e delegação [ProcessReady()](#integration-server-sdk5-unreal-processready).

```
//Calling ProcessReady tells Amazon GameLift Servers this game server is ready to receive incoming game sessions!
UE_LOG(GameServerLog, Log, TEXT("Calling Process Ready"));
FGameLiftGenericOutcome processReadyOutcome = GameLiftSdkModule->ProcessReady(*params);
```

## ProcessEnding()
<a name="integration-server-sdk5-unreal-processending"></a>

Notifica o Amazon GameLift Servers de que o processo do servidor está sendo encerrado. Chame esse método depois de todas as outras tarefas de limpeza (incluindo o encerramento da sessão ativa do jogo) e antes de encerrar o processo. Dependendo do resultado `ProcessEnding()`, o processo sai com sucesso (0) ou erro (-1) e gera um evento de frota. Se o processo for encerrado com um erro, o evento de frota gerado será `SERVER_PROCESS_TERMINATED_UNHEALTHY`).

### Sintaxe
<a name="integration-server-sdk5-unreal-processending-syntax"></a>

```
FGameLiftGenericOutcome ProcessEnding()
```

### Valor de retorno
<a name="integration-server-sdk5-unreal-processending-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-processending-example"></a>

```
//OnProcessTerminate callback. Amazon GameLift Servers will invoke this callback before shutting down an instance hosting this game server.
//It gives this game server a chance to save its state, communicate with services, etc., before being shut down.
//In this case, we simply tell Amazon GameLift Servers we are indeed going to shutdown.
params->OnTerminate.BindLambda([=]() {
  UE_LOG(GameServerLog, Log, TEXT("Game Server Process is terminating"));
  GameLiftSdkModule->ProcessEnding();
});
```

## ActivateGameSession()
<a name="integration-server-sdk5-unreal-activategamesession"></a>

Notifica o Amazon GameLift Servers de que o processo do servidor ativou uma sessão do jogo e já está pronto para receber as conexões do jogador. Essa ação deve ser chamada como parte da função de retorno de chamada `onStartGameSession()`, após toda inicialização da sessão do jogo.​

### Sintaxe
<a name="integration-server-sdk5-unreal-activategamesession-syntax"></a>

```
FGameLiftGenericOutcome ActivateGameSession()
```

### Valor de retorno
<a name="integration-server-sdk5-unreal-activategamesession-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-activategamesession-example"></a>

Este exemplo mostra chamado `ActivateGameSession()` como parte da função de delegação `onStartGameSession()`. 

```
//When a game session is created, Amazon GameLift Servers sends an activation request to the game server and passes along the game session object containing game properties and other settings.
//Here is where a game server should take action based on the game session object.
//Once the game server is ready to receive incoming player connections, it should invoke GameLiftServerAPI.ActivateGameSession()
auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession)
{
  FString gameSessionId = FString(gameSession.GetGameSessionId());
  UE_LOG(GameServerLog, Log, TEXT("GameSession Initializing: %s"), *gameSessionId);
  GameLiftSdkModule->ActivateGameSession();
};
```

## UpdatePlayerSessionCreationPolicy()
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy"></a>

Atualiza a capacidade da sessão do jogo atual para aceitar novas sessões de jogador. Atualiza a capacidade da sessão do jogo atual para aceitar novas sessões de jogador.

### Sintaxe
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-syntax"></a>

```
FGameLiftGenericOutcome UpdatePlayerSessionCreationPolicy(EPlayerSessionCreationPolicy policy)
```

### Parâmetros
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-parameter"></a>

**playerCreationSessionPolítica**  
Valor de string que indica se a sessão do jogo aceita novos jogadores.   
Os valores válidos são:  
+ **ACCEPT\_ALL** – Aceite todas as novas sessões de jogador.
+ **DENY\_ALL** – Recuse todas as novas sessões de jogador.

### Valor de retorno
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-updateplayersessioncreationpolicy-example"></a>

Este exemplo define a política de ingresso da sessão do jogo atual para aceitar todos os jogadores.

```
FGameLiftGenericOutcome outcome = GameLiftSdkModule->UpdatePlayerSessionCreationPolicy(Aws::GameLift::Model::EPlayerSessionCreationPolicy::ACCEPT_ALL);
```

## GetGameSessionId()
<a name="integration-server-sdk5-unreal-getgamesessionid"></a>

Recupera o ID da sessão de jogo hospedada pelo processo do servidor ativo. 

Para processos inativos que não são ativados com uma sessão de jogo, a chamada retorna um [FGameLiftError](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-gamelifterror).

### Sintaxe
<a name="integration-server-sdk5-unreal-getgamesessionid-syntax"></a>

```
FGameLiftStringOutcome GetGameSessionId()
```

### Parâmetros
<a name="integration-server-sdk5-unreal-getgamesessionid-parameter"></a>

Essa ação não tem um parâmetro.

### Valor de retorno
<a name="integration-server-sdk5-unreal-getgamesessionid-return"></a>

Se bem-sucedido, retornará o ID da sessão de jogo como um objeto [FGameLiftStringOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-awsstringoutcome). Se não for bem-sucedido, retornará uma mensagem de erro."

Para processos inativos que não são ativados com uma sessão de jogo, a chamada retorna `Success`=`True` e `GameSessionId`=`""`.

### Exemplo
<a name="integration-server-sdk5-unreal-getgamesessionid-example"></a>

```
//When a game session is created, Amazon GameLift Servers sends an activation request to the game server and passes along the game session object containing game properties and other settings.
//Here is where a game server should take action based on the game session object.
//Once the game server is ready to receive incoming player connections, it should invoke GameLiftServerAPI.ActivateGameSession()
auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession)
{
  FString gameSessionId = FString(gameSession.GetGameSessionId());
  UE_LOG(GameServerLog, Log, TEXT("GameSession Initializing: %s"), *gameSessionId);
  GameLiftSdkModule->ActivateGameSession();
};
```

## GetTerminationTime()
<a name="integration-server-sdk5-unreal-getterm"></a>

Retorna a hora em que um processo do servidor está programado para ser desligado, se essa informação estiver disponível. Um processo do servidor realiza a ação depois de receber um retorno de chamada `onProcessTerminate()` do serviço Amazon GameLift Servers. O Amazon GameLift Servers chama o `onProcessTerminate()` pelos seguintes motivos: 
+ Quando o processo do servidor relatou problemas de saúde ou não respondeu ao Amazon GameLift Servers.
+ Ao encerrar a instância durante um evento de redução.
+ Quando uma instância é encerrada devido a uma [interrupção na instância spot](spot-tasks.md).

### Sintaxe
<a name="integration-server-sdk5-unreal-getterm-syntax"></a>

```
AwsDateTimeOutcome GetTerminationTime()
```

### Valor de retorno
<a name="integration-server-sdk5-unreal-getterm-return"></a>

Se for bem-sucedido, retornará o horário de término como um objeto `AwsDateTimeOutcome`. O valor é o tempo de rescisão, expresso em tiques decorridos desde então `0001 00:00:00`. Por exemplo, o valor da data e hora `2020-09-13 12:26:40 -000Z` é igual aos tiques `637355968000000000`. Se nenhum horário de encerramento estiver disponível, o retornará uma mensagem de erro.

Se o processo não tiver recebido um retorno de chamada ` ProcessParameters.OnProcessTerminate()`, uma mensagem de erro será retornada. Para obter mais informações sobre como desligar um processo do servidor, consulte [Responder a uma notificação de desligamento do processo do servidor](gamelift-sdk-server-api.md#gamelift-sdk-server-terminate).

### Exemplo
<a name="integration-server-sdk5-unreal-getterm-example"></a>

```
AwsDateTimeOutcome TermTimeOutcome = GameLiftSdkModule->GetTerminationTime();
```

## AcceptPlayerSession()
<a name="integration-server-sdk5-unreal-acceptplayersession"></a>

Notifica o serviço Amazon GameLift Servers de que um jogador com o ID da sessão do jogador especificado se conectou ao processo do servidor e precisa de validação. O Amazon GameLift Servers confirma que o ID da sessão do jogador é válido. Depois que a sessão do jogador é validada, o Amazon GameLift Servers altera o status do slot do jogador de RESERVED para ACTIVE. 

### Sintaxe
<a name="integration-server-sdk5-unreal-acceptplayersession-syntax"></a>

```
FGameLiftGenericOutcome AcceptPlayerSession(const FString& playerSessionId)
```

### Parâmetros
<a name="integration-server-sdk5-unreal-acceptplayersession-parameter"></a>

playerSessionId  
ID exclusivo emitido pela Amazon GameLift Servers quando uma nova sessão de jogador é criada.

### Valor de retorno
<a name="integration-server-sdk5-unreal-acceptplayersession-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro. 

### Exemplo
<a name="integration-server-sdk5-unreal-acceptplayersession-example"></a>

Este exemplo trata de uma solicitação de conexão que inclui a validação e a rejeição de uma sessão de jogador inválida. IDs

```
bool GameLiftManager::AcceptPlayerSession(const FString& playerSessionId, const FString& playerId)
{
  #if WITH_GAMELIFT
  UE_LOG(GameServerLog, Log, TEXT("Accepting GameLift PlayerSession: %s . PlayerId: %s"), *playerSessionId, *playerId);
  FString gsId = GetCurrentGameSessionId();
  if (gsId.IsEmpty()) {
    UE_LOG(GameServerLog, Log, TEXT("No GameLift GameSessionId. Returning early!"));
    return false;
  }
  
  if (!GameLiftSdkModule->AcceptPlayerSession(playerSessionId).IsSuccess()) {
    UE_LOG(GameServerLog, Log, TEXT("PlayerSession not Accepted."));
    return false;
  }

  // Add PlayerSession from internal data structures keeping track of connected players
  connectedPlayerSessionIds.Add(playerSessionId);
  idToPlayerSessionMap.Add(playerSessionId, PlayerSession{ playerId, playerSessionId });
  return true;
  #else
  return false;
  #endif
}
```

## RemovePlayerSession()
<a name="integration-server-sdk5-unreal-removeplayersession"></a>

Notifica o Amazon GameLift Servers de que um jogador se desconectou do processo do servidor. Em resposta, o Amazon GameLift Servers altera o espaço do jogador para disponível. 

### Sintaxe
<a name="integration-server-sdk5-unreal-removeplayersession-syntax"></a>

```
FGameLiftGenericOutcome RemovePlayerSession(const FString& playerSessionId)
```

### Parâmetros
<a name="integration-server-sdk5-unreal-removeplayersession-parameter"></a>

**`playerSessionId`**  
ID exclusivo emitido pela Amazon GameLift Servers quando uma nova sessão de jogador é criada.

### Valor de retorno
<a name="integration-server-sdk5-unreal-removeplayersession-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-removeplayersession-example"></a>

```
bool GameLiftManager::RemovePlayerSession(const FString& playerSessionId)
{
  #if WITH_GAMELIFT
  UE_LOG(GameServerLog, Log, TEXT("Removing GameLift PlayerSession: %s"), *playerSessionId);

  if (!GameLiftSdkModule->RemovePlayerSession(playerSessionId).IsSuccess()) {
    UE_LOG(GameServerLog, Log, TEXT("PlayerSession Removal Failed"));
    return false;
  }

  // Remove PlayerSession from internal data structures that are keeping track of connected players
  connectedPlayerSessionIds.Remove(playerSessionId);
  idToPlayerSessionMap.Remove(playerSessionId);

  // end the session if there are no more players connected
  if (connectedPlayerSessionIds.Num() == 0) {
    EndSession();
  }

  return true;
  #else
  return false;
  #endif
}
```

## DescribePlayerSessions()
<a name="integration-server-sdk5-unreal-describeplayersessions"></a>

Recupera dados da sessão do jogador, que incluem configurações, metadados da sessão e dados do jogador. Use esse método para obter informações sobre o seguinte:
+ Uma sessão para um jogador
+ Todas as sessões de jogador em uma sessão de jogo
+ Todas as sessões de jogadores associadas a um único ID de jogador

### Sintaxe
<a name="integration-server-sdk5-unreal-describeplayersessions-syntax"></a>

```
FGameLiftDescribePlayerSessionsOutcome DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest &describePlayerSessionsRequest)
```

### Parâmetros
<a name="integration-server-sdk5-unreal-describeplayersessions-parameter"></a>

**[FGameLiftDescribePlayerSessionsRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-playersessions)**  
Um objeto [FGameLiftDescribePlayerSessionsRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-playersessions) que descreve quais sessões de jogador recuperar.

### Valor de retorno
<a name="integration-server-sdk5-unreal-describeplayersessions-return"></a>

Se bem-sucedido, retorna um objeto [FGameLiftDescribePlayerSessionsOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-describeplayersessionsoutcome) que contém um conjunto de objetos de sessão do jogador que atendem aos parâmetros de solicitação.

### Exemplo
<a name="integration-server-sdk5-unreal-describeplayersessions-example"></a>

Este exemplo solicita todas as sessões de jogador conectadas ativamente a uma sessão de jogo especificada. Ao omitir *NextToken*e definir o valor *limite* como 10, Amazon GameLift Servers retorna os primeiros registros de sessão de 10 jogadores que correspondam à solicitação.

```
void GameLiftManager::DescribePlayerSessions()
{
  #if WITH_GAMELIFT
  FString localPlayerSessions;
  for (auto& psId : connectedPlayerSessionIds)
  {
    PlayerSession ps = idToPlayerSessionMap[psId];
    localPlayerSessions += FString::Printf(TEXT("%s : %s  ; "), *(ps.playerSessionId), *(ps.playerId));
  }
  UE_LOG(GameServerLog, Log, TEXT("LocalPlayerSessions: %s"), *localPlayerSessions);

  UE_LOG(GameServerLog, Log, TEXT("Describing PlayerSessions in this GameSession"));
  FGameLiftDescribePlayerSessionsRequest request;
  request.m_gameSessionId = GetCurrentGameSessionId();

  FGameLiftDescribePlayerSessionsOutcome outcome = GameLiftSdkModule->DescribePlayerSessions(request);
  LogDescribePlayerSessionsOutcome(outcome);
  #endif
}
```

## StartMatchBackfill()
<a name="integration-server-sdk5-unreal-startmatchbackfill"></a>

Envia uma solicitação para encontrar novos jogadores para os slots abertos em uma sessão de jogo criada com o FlexMatch. Para obter mais informações, consulte o [recurso de alocação do FlexMatch](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html).

Esta ação é assíncrona. Se novos jogadores forem combinados, o Amazon GameLift Servers entregará os dados atualizados do marcador de jogos usando a função de retorno de chamada `OnUpdateGameSession()`.

Um processo de servidor pode ter apenas uma solicitação de alocação de correspondência ativa por vez. Para enviar uma nova solicitação, primeiro chame [StopMatchBackfill()](#integration-server-sdk5-unreal-stopmatchbackfill) para cancelar a solicitação original.

### Sintaxe
<a name="integration-server-sdk5-unreal-startmatchbackfill-syntax"></a>

```
FGameLiftStringOutcome StartMatchBackfill (FStartMatchBackfillRequest &startBackfillRequest);
```

### Parâmetros
<a name="integration-server-sdk5-unreal-startmatchbackfill-parameter"></a>

**[FStartMatchBackfillRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-startmatchbackfillrequest)**  
Um StartMatchBackfillRequest objeto que comunica as seguintes informações:  
+ ID do tíquete a ser atribuído à solicitação de alocação. Essas informações são opcionais; se nenhum ID for fornecido, o Amazon GameLift Servers gerará um.
+ O marcador de jogos para o qual a solicitação é enviada. O ARN completo da configuração é necessário. Esse valor está nos dados do marcador de jogos da sessão de jogo.
+ O ID da sessão de jogo a ser preenchida.
+ Os dados disponíveis de marcação para os jogadores atuais da sessão do jogo.

### Valor de retorno
<a name="integration-server-sdk5-unreal-startmatchbackfill-return"></a>

Retorna um objeto `StartMatchBackfillOutcome` com o ID do tíquete de alocação de correspondência ou um falha com uma mensagem de erro. 

### Exemplo
<a name="integration-server-sdk5-unreal-startmatchbackfill-example"></a>

```
FGameLiftStringOutcome FGameLiftServerSDKModule::StartMatchBackfill(const FStartMatchBackfillRequest& request) 
{
  #if WITH_GAMELIFT
  Aws::GameLift::Server::Model::StartMatchBackfillRequest sdkRequest;
  sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId));
  sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn));
  sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn));
  for (auto player : request.m_players) {
    Aws::GameLift::Server::Model::Player sdkPlayer;
    sdkPlayer.SetPlayerId(TCHAR_TO_UTF8(*player.m_playerId));
    sdkPlayer.SetTeam(TCHAR_TO_UTF8(*player.m_team));
    for (auto entry : player.m_latencyInMs) {
      sdkPlayer.WithLatencyMs(TCHAR_TO_UTF8(*entry.Key), entry.Value);
    }

    std::map<std::string, Aws::GameLift::Server::Model::AttributeValue> sdkAttributeMap;
    for (auto attributeEntry : player.m_playerAttributes) {
      FAttributeValue value = attributeEntry.Value;
      Aws::GameLift::Server::Model::AttributeValue attribute;
      switch (value.m_type) {
        case FAttributeType::STRING:
          attribute = Aws::GameLift::Server::Model::AttributeValue(TCHAR_TO_UTF8(*value.m_S));
        break;
        case FAttributeType::DOUBLE:
          attribute = Aws::GameLift::Server::Model::AttributeValue(value.m_N);
        break;
        case FAttributeType::STRING_LIST:
          attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringList();
          for (auto sl : value.m_SL) {
            attribute.AddString(TCHAR_TO_UTF8(*sl));
          };
        break;
        case FAttributeType::STRING_DOUBLE_MAP:
          attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringDoubleMap();
          for (auto sdm : value.m_SDM) {
            attribute.AddStringAndDouble(TCHAR_TO_UTF8(*sdm.Key), sdm.Value);
          };
        break;
      }
      sdkPlayer.WithPlayerAttribute((TCHAR_TO_UTF8(*attributeEntry.Key)), attribute);
    }
    sdkRequest.AddPlayer(sdkPlayer);
  }
  auto outcome = Aws::GameLift::Server::StartMatchBackfill(sdkRequest);
  if (outcome.IsSuccess()) {
    return FGameLiftStringOutcome(outcome.GetResult().GetTicketId());
  }
  else {
    return FGameLiftStringOutcome(FGameLiftError(outcome.GetError()));
  }
  #else
  return FGameLiftStringOutcome("");
  #endif
}
```

## StopMatchBackfill()
<a name="integration-server-sdk5-unreal-stopmatchbackfill"></a>

Cancela uma solicitação de alocação de correspondência ativa. Para obter mais informações, consulte o [recurso de alocação do FlexMatch](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html).

### Sintaxe
<a name="integration-server-sdk5-unreal-stopmatchbackfill-syntax"></a>

```
FGameLiftGenericOutcome StopMatchBackfill (FStopMatchBackfillRequest &stopBackfillRequest);
```

### Parâmetros
<a name="integration-server-sdk5-unreal-stopmatchbackfill-parameter"></a>

**[FStopMatchBackfillRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-stopmatchbackfillrequest)**  
Um StopMatchBackfillRequest objeto identificando o tíquete de matchmaking a ser cancelado:   
+ O ID do ticket atribuído à solicitação de alocação.
+ O marcador de jogo que recebeu a solicitação de alocação.
+ A sessão do jogo associada à solicitação de alocação.

### Valor de retorno
<a name="integration-server-sdk5-unreal-stopmatchbackfill-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-stopmatchbackfill-example"></a>

```
FGameLiftGenericOutcome FGameLiftServerSDKModule::StopMatchBackfill(const FStopMatchBackfillRequest& request)
{
  #if WITH_GAMELIFT
  Aws::GameLift::Server::Model::StopMatchBackfillRequest sdkRequest;
  sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId));
  sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn));
  sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn));
  auto outcome = Aws::GameLift::Server::StopMatchBackfill(sdkRequest);
  if (outcome.IsSuccess()) {
    return FGameLiftGenericOutcome(nullptr);
  }
  else {
    return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError()));
  }
  #else
  return FGameLiftGenericOutcome(nullptr);
  #endif
}
```

## GetComputeCertificate()
<a name="integration-server-sdk5-unreal-getcomputecertificate"></a>

Recupera o caminho para o certificado TLS usado para criptografar a conexão de rede entre seu recurso de computação do Amazon GameLift Servers Anywhere e o Amazon GameLift Servers. Você poderá usar o caminho do certificado ao registrar seu dispositivo computacional em uma frota do Amazon GameLift Servers Anywhere. Para obter mais informações, consulte, [RegisterCompute](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html).

### Sintaxe
<a name="integration-server-sdk5-unreal-getcomputecertificate-syntax"></a>

```
FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate()
```

### Valor de retorno
<a name="integration-server-sdk5-unreal-getcomputecertificate-return"></a>

Retorna um objeto `GetComputeCertificateResponse` contendo o seguinte: 
+ CertificatePath: o caminho para o certificado TLS em seu recurso computacional. 
+ HostName: o nome do host do seu recurso computacional.

### Exemplo
<a name="integration-server-sdk5-unreal-getcomputecertificate-example"></a>

```
FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate()
{
  #if WITH_GAMELIFT
  auto outcome = Aws::GameLift::Server::GetComputeCertificate();
  if (outcome.IsSuccess()) {
    auto& outres = outcome.GetResult();
    FGameLiftGetComputeCertificateResult result;
    result.m_certificate_path = UTF8_TO_TCHAR(outres.GetCertificatePath());
    result.m_computeName = UTF8_TO_TCHAR(outres.GetComputeName());
    return FGameLiftGetComputeCertificateOutcome(result);
  }
  else {
    return FGameLiftGetComputeCertificateOutcome(FGameLiftError(outcome.GetError()));
  }
  #else
  return FGameLiftGetComputeCertificateOutcome(FGameLiftGetComputeCertificateResult());
  #endif
}
```

## GetFleetRoleCredentials()
<a name="integration-server-sdk5-unreal-getfleetrolecredentials"></a>

Recupera as credenciais do perfil do IAM que autorizam o Amazon GameLift Servers a interagir com outros Serviços da AWS. Para obter mais informações, consulte [Conecte seu servidor de jogos Amazon GameLift Servers hospedado a outros AWS recursos](gamelift-sdk-server-resources.md).

### Sintaxe
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-syntax"></a>

```
FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request)
```

### Parâmetros
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-parameters"></a>

[FGameLiftGetFleetRoleCredentialsRequest](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsrequest)

### Valor de retorno
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-return"></a>

Informa um objeto [FGameLiftGetFleetRoleCredentialsOutcome](integration-server-sdk5-unreal-datatypes.md#integration-server-sdk5-unreal-dataypes-getfleetrolecredentialsoutcome).

### Exemplo
<a name="integration-server-sdk5-unreal-getfleetrolecredentials-example"></a>

```
FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request)
{
  #if WITH_GAMELIFT
  Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest sdkRequest;
  sdkRequest.SetRoleArn(TCHAR_TO_UTF8(*request.m_roleArn));
  sdkRequest.SetRoleSessionName(TCHAR_TO_UTF8(*request.m_roleSessionName));

  auto outcome = Aws::GameLift::Server::GetFleetRoleCredentials(sdkRequest);

  if (outcome.IsSuccess()) {
    auto& outres = outcome.GetResult();
    FGameLiftGetFleetRoleCredentialsResult result;
    result.m_assumedUserRoleArn = UTF8_TO_TCHAR(outres.GetAssumedUserRoleArn());
    result.m_assumedRoleId = UTF8_TO_TCHAR(outres.GetAssumedRoleId());
    result.m_accessKeyId = UTF8_TO_TCHAR(outres.GetAccessKeyId());
    result.m_secretAccessKey = UTF8_TO_TCHAR(outres.GetSecretAccessKey());
    result.m_sessionToken = UTF8_TO_TCHAR(outres.GetSessionToken());
    result.m_expiration = FDateTime::FromUnixTimestamp(outres.GetExpiration());
    return FGameLiftGetFleetRoleCredentialsOutcome(result);
  }
  else {
    return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftError(outcome.GetError()));
  }
  #else
  return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftGetFleetRoleCredentialsResult());
  #endif
}
```

## Destroy()
<a name="integration-server-sdk5-unreal-ref-destroy"></a>

Libera o SDK do servidor de jogos do Amazon GameLift Servers da memória. Como melhor prática, chame esse método antes `ProcessEnding()` e depois de encerrar o processo. Se você estiver usando uma frota Anywhere e não estiver encerrando os processos do servidor após cada sessão de jogo, chame `Destroy()` e reinicialize `InitSDK()` antes de notificar o Amazon GameLift Servers de que o processo está pronto para hospedar uma sessão de jogo com `ProcessReady()`.

### Sintaxe
<a name="integration-server-sdk5-unreal-ref-destroy-syntax"></a>

```
FGameLiftGenericOutcome Destroy();
```

### Parâmetros
<a name="integration-server-sdk5-unreal-ref-destroy-parameter"></a>

Não há parâmetros.

### Valor de retorno
<a name="integration-server-sdk5-unreal-ref-destroy-return"></a>

Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.

### Exemplo
<a name="integration-server-sdk5-unreal-ref-destroy-example"></a>

```
// First call ProcessEnding()
FGameLiftGenericOutcome processEndingOutcome = GameLiftSdkModule->ProcessEnding();
  
// Then call Destroy() to free the SDK from memory
FGameLiftGenericOutcome destroyOutcome = GameLiftSdkModule->Destroy();
  
// Exit the process with success or failure
if (processEndingOutcome.IsSuccess() && destroyOutcome.IsSuccess()) 
    {
    UE_LOG(GameServerLog, Log, TEXT("Server process ending successfully"));
}
else {
    if (!processEndingOutcome.IsSuccess()) {
        const FGameLiftError& error = processEndingOutcome.GetError();
        UE_LOG(GameServerLog, Error, TEXT("ProcessEnding() failed. Error: %s"),
        error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage);
    }
    if (!destroyOutcome.IsSuccess()) {
        const FGameLiftError& error = destroyOutcome.GetError();
        UE_LOG(GameServerLog, Error, TEXT("Destroy() failed. Error: %s"),
        error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage);
    }
}
```