GameLift Servidor Amazon SDK 4.x para C++: ações - Amazon GameLift

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á.

GameLift Servidor Amazon SDK 4.x para C++: ações

Use a SDK referência do servidor Amazon GameLift C++ para integrar seu jogo multijogador para hospedagem na Amazon GameLift. Para obter orientação sobre o processo de integração, consulteAdicione GameLift a Amazon ao seu servidor de jogos.

nota

Essa referência é para uma versão anterior do GameLift servidor AmazonSDK. Para obter a versão mais recente, consulte GameLift Servidor Amazon SDK 5.x para C++: ações.

GameLift Servidor Amazon SDK 4.x para C++: tipos de dados

AcceptPlayerSession()

Notifica o GameLift serviço da Amazon de que um jogador com o ID de sessão de jogador especificado se conectou ao processo do servidor e precisa de validação. A Amazon GameLift verifica se o ID da sessão do jogador é válido, ou seja, se o ID do jogador reservou um espaço para o jogador na sessão do jogo. Depois de validado, a Amazon GameLift altera o status do slot do jogador de RESERVED paraACTIVE.

Sintaxe

GenericOutcome AcceptPlayerSession(const std::string& playerSessionId);

Parâmetros

playerSessionId

ID exclusiva emitida pelo GameLift serviço da Amazon em resposta a uma chamada para a GameLift API ação da AWS SDK Amazon CreatePlayerSession. O cliente do jogo faz referência a esse ID ao se conectar ao processo do servidor.

Tipo: std::string

Obrigatório: Sim

Valor de retorno

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

Exemplo

Este exemplo ilustra uma função para lidar com uma solicitação de conexão, incluindo a validação e rejeição de uma sessão de jogador inválida. IDs

void ReceiveConnectingPlayerSessionID (Connection& connection, const std::string& playerSessionId){ Aws::GameLift::GenericOutcome connectOutcome = Aws::GameLift::Server::AcceptPlayerSession(playerSessionId); if(connectOutcome.IsSuccess()) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(connectOutcome.GetError().GetMessage(); } }

ActivateGameSession()

Notifica o GameLift serviço da Amazon de que o processo do servidor iniciou uma sessão de jogo e agora está pronto para receber conexões de jogadores. Essa ação deve ser chamada como parte da função de retorno de chamada onStartGameSession(), depois que toda a inicialização da sessão tiver sido concluída.

Sintaxe

GenericOutcome ActivateGameSession();

Parâmetros

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

Valor de retorno

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

Exemplo

Este exemplo mostra ActivateGameSession() sendo chamado como parte da função de retorno de chamada onStartGameSession().

void onStartGameSession(Aws::GameLift::Model::GameSession myGameSession) { // game-specific tasks when starting a new game session, such as loading map GenericOutcome outcome = Aws::GameLift::Server::ActivateGameSession(); }

DescribePlayerSessions()

Recupera dados da sessão do jogador, inclusive configurações, metadados da sessão e dados do jogador. Use essa ação para obter informações de uma única sessão de jogador, para todas as sessões de jogador em uma sessão de jogo, ou para todas as sessões de jogador associadas a um único ID de jogador.

Sintaxe

DescribePlayerSessionsOutcome DescribePlayerSessions ( const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest);

Parâmetros

describePlayerSessionsSolicitação

Um objeto DescribePlayerSessionsRequest que descreve quais sessões de jogador recuperar.

Obrigatório: Sim

Valor de retorno

Se bem-sucedido, retorna um objeto DescribePlayerSessionsOutcome que contém um conjunto de objetos de sessão do jogador que atendem aos parâmetros de solicitação. Os objetos de sessão do jogador têm uma estrutura idêntica ao tipo de GameLift API PlayerSessiondados AWS SDK da Amazon.

Exemplo

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

// Set request parameters Aws::GameLift::Server::Model::DescribePlayerSessionsRequest request; request.SetPlayerSessionStatusFilter(Aws::GameLift::Server::Model::PlayerSessionStatusMapper::GetNameForPlayerSessionStatus(Aws::GameLift::Server::Model::PlayerSessionStatus::Active)); request.SetLimit(10); request.SetGameSessionId("the game session ID"); // can use GetGameSessionId() // Call DescribePlayerSessions Aws::GameLift::DescribePlayerSessionsOutcome playerSessionsOutcome = Aws::GameLift::Server::DescribePlayerSessions(request);

GetGameSessionId()

Recupera um identificador exclusivo para a sessão do jogo hospedada no momento pelo processo do servidor, caso o processo do servidor esteja ativo. O identificador é retornado no ARN formato:arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID string>.

Para processos inativos que ainda não foram ativados com uma sessão de jogo, a chamada retorna Success=True e GameSessionId="" (uma string vazia).

Sintaxe

AwsStringOutcome GetGameSessionId();

Parâmetros

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

Valor de retorno

Se bem-sucedido, retornará o ID da sessão de jogo como um objeto AwsStringOutcome. Se não for bem-sucedido, retornará uma mensagem de erro.

Exemplo

Aws::GameLift::AwsStringOutcome sessionIdOutcome = Aws::GameLift::Server::GetGameSessionId();

GetInstanceCertificate()

Recupera a localização do arquivo de um TLS certificado codificado por pem que está associado à frota e suas instâncias. AWS Certificate Manager gera esse certificado quando você cria uma nova frota com a configuração do certificado definida comoGENERATED. Use esse certificado para estabelecer uma conexão segura com um cliente de jogo e para criptografar a comunicação entre cliente e servidor.

Sintaxe

GetInstanceCertificateOutcome GetInstanceCertificate();

Parâmetros

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

Valor de retorno

Se for bem-sucedido, retornará um GetInstanceCertificateOutcome objeto contendo a localização do arquivo de TLS certificado e da cadeia de certificados da frota, que estão armazenados na instância. Um arquivo de certificado raiz, extraído da cadeia de certificados, também é armazenado na instância. Se não for bem-sucedido, retornará uma mensagem de erro.

Para obter mais informações sobre o certificado e os dados da cadeia de certificados, consulte Elementos de GetCertificate resposta na AWS Certificate Manager API referência.

Exemplo

Aws::GameLift::GetInstanceCertificateOutcome certificateOutcome = Aws::GameLift::Server::GetInstanceCertificate();

GetSdkVersion()

Retorna o número da versão atual do SDK em uso.

Sintaxe

AwsStringOutcome GetSdkVersion();

Parâmetros

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

Valor de retorno

Se for bem-sucedido, retornará a SDK versão atual como um AwsStringOutcome objeto. A string retornada inclui apenas o número da versão (exemplo, "3.1.5"). Se não for bem-sucedido, retornará uma mensagem de erro.

Exemplo

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

GetTerminationTime()

Retorna a hora em que um processo do servidor está programado para ser desligado, se essa informação estiver disponível. Um processo de servidor executa essa ação depois de receber um onProcessTerminate() retorno de chamada do GameLift serviço da Amazon. A Amazon GameLift pode ligar onProcessTerminate() pelos seguintes motivos: (1) quando o processo do servidor relatou problemas de saúde ou não respondeu à Amazon GameLift, (2) ao encerrar a instância durante um evento de redução ou (3) quando uma instância está sendo encerrada devido a uma interrupção do Spot.

Se o processo tiver recebido um retorno de chamada onProcessTerminate(), o valor retornado será o tempo estimado de encerramento. Se o processo não tiver recebido um retorno de chamada onProcessTerminate(), uma mensagem de erro será retornada. Saiba mais sobre como desligar um processo do servidor.

Sintaxe

AwsLongOutcome GetTerminationTime();

Parâmetros

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

Valor de retorno

Se for bem-sucedido, retornará o horário de término como um objeto AwsLongOutcome. O valor é o tempo de término, expresso em tiques decorridos desde 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 rescisão estiver disponível, o retornará uma mensagem de erro.

Exemplo

Aws::GameLift::AwsLongOutcome TermTimeOutcome = Aws::GameLift::Server::GetTerminationTime();

Iniciar SDK ()

Inicializa a Amazon GameLift SDK. Esse método deve ser chamado no lançamento, antes que qualquer outra inicialização GameLift relacionada à Amazon ocorra.

Sintaxe

InitSDKOutcome InitSDK();

Parâmetros

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

Valor de retorno

Se for bem-sucedido, retornará um InitSdkOutcome objeto indicando que o processo do servidor está pronto para ser chamadoProcessReady().

Exemplo

Aws::GameLift::Server::InitSDKOutcome initOutcome = Aws::GameLift::Server::InitSDK();

ProcessEnding()

Notifica o GameLift serviço da Amazon de que o processo do servidor está sendo encerrado. Esse método deverá ser chamado depois de todas as outras tarefas de limpeza, inclusive desligar todas as sessões de jogos ativas. Este método deve sair com um código de saída zero; um código de saída diferente de zero resulta em uma mensagem de evento indicando que o processo não foi encerrado corretamente.

Depois que o método sair com um código de 0, você poderá encerrar o processo com um código de saída bem-sucedido. Você também poderá sair do processo com um código de erro. Se você sair com um código de erro, o evento da frota indicará que o processo foi encerrado de forma anormal (SERVER_PROCESS_TERMINATED_UNHEALTHY).

Sintaxe

GenericOutcome ProcessEnding();

Parâmetros

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

Valor de retorno

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

Exemplo

Aws::GameLift::GenericOutcome outcome = Aws::GameLift::Server::ProcessEnding(); if (outcome.Success) exit(0); // exit with success // otherwise, exit with error code exit(errorCode);

ProcessReady()

Notifica o GameLift serviço da Amazon de que o processo do servidor está pronto para hospedar sessões de jogo. Chame esse método depois de invocar Iniciar SDK () e concluir todas as tarefas de configuração necessárias antes que o processo do servidor possa hospedar uma sessão do jogo. Esse método deve ser chamado somente uma vez por processo.

Essa chamada é síncrona. Para fazer uma chamada assíncrona, use ProcessReadyAsync(). Consulte Inicializar o processo do servidor para obter mais detalhes.

Sintaxe

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

Parâmetros

processParameters

Um objeto ProcessParameters que fornece as seguintes informações sobre o processo do servidor:

  • Nomes dos métodos de retorno de chamada, implementados no código do servidor do jogo, que o GameLift serviço da Amazon invoca para se comunicar com o processo do servidor.

  • Número da porta em que o processo de servidor está escutando.

  • Caminho para qualquer arquivo específico da sessão de jogo que você deseja que a Amazon capture e GameLift armazene.

Obrigatório: Sim

Valor de retorno

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

Exemplo

Este exemplo ilustra as implementações das funções de chamada e retorno de chamada ProcessReady().

// Set parameters and call ProcessReady std::string serverLog("serverOut.log"); // Example of a log file written by the game server std::vector<std::string> logPaths; logPaths.push_back(serverLog); int listenPort = 9339; Aws::GameLift::Server::ProcessParameters processReadyParameter = Aws::GameLift::Server::ProcessParameters( std::bind(&Server::onStartGameSession, this, std::placeholders::_1), std::bind(&Server::onProcessTerminate, this), std::bind(&Server::OnHealthCheck, this), std::bind(&Server::OnUpdateGameSession, this), listenPort, Aws::GameLift::Server::LogParameters(logPaths)); Aws::GameLift::GenericOutcome outcome = Aws::GameLift::Server::ProcessReady(processReadyParameter); // Implement callback functions void Server::onStartGameSession(Aws::GameLift::Model::GameSession myGameSession) { // game-specific tasks when starting a new game session, such as loading map GenericOutcome outcome = Aws::GameLift::Server::ActivateGameSession (maxPlayers); } void Server::onProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup GenericOutcome outcome = Aws::GameLift::Server::ProcessEnding(); } bool Server::onHealthCheck() { bool health; // complete health evaluation within 60 seconds and set health return health; }

ProcessReadyAsync()

Notifica o GameLift serviço da Amazon de que o processo do servidor está pronto para hospedar sessões de jogo. Este método deve ser chamado assim que o processo do servidor estiver pronto para hospedar uma sessão de jogo. Os parâmetros especificam os nomes das funções de retorno de chamada para GameLift a Amazon ligar em determinadas circunstâncias. O código do servidor de jogos deve implementar essas funções.

Essa chamada é assíncrona. Para fazer uma chamada síncrona, use ProcessReady(). Consulte Inicializar o processo do servidor para obter mais detalhes.

Sintaxe

GenericOutcomeCallable ProcessReadyAsync( const Aws::GameLift::Server::ProcessParameters &processParameters);

Parâmetros

processParameters

Um objeto ProcessParameters que fornece as seguintes informações sobre o processo do servidor:

  • Nomes dos métodos de retorno de chamada, implementados no código do servidor do jogo, que o GameLift serviço da Amazon invoca para se comunicar com o processo do servidor.

  • Número da porta em que o processo de servidor está escutando.

  • Caminho para qualquer arquivo específico da sessão de jogo que você deseja que a Amazon capture e GameLift armazene.

Obrigatório: Sim

Valor de retorno

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

Exemplo

// Set parameters and call ProcessReady std::string serverLog("serverOut.log"); // This is an example of a log file written by the game server std::vector<std::string> logPaths; logPaths.push_back(serverLog); int listenPort = 9339; Aws::GameLift::Server::ProcessParameters processReadyParameter = Aws::GameLift::Server::ProcessParameters( std::bind(&Server::onStartGameSession, this, std::placeholders::_1), std::bind(&Server::onProcessTerminate, this), std::bind(&Server::OnHealthCheck, this), std::bind(&Server::OnUpdateGameSession, this), listenPort, Aws::GameLift::Server::LogParameters(logPaths)); Aws::GameLift::GenericOutcomeCallable outcome = Aws::GameLift::Server::ProcessReadyAsync(processReadyParameter); // Implement callback functions void onStartGameSession(Aws::GameLift::Model::GameSession myGameSession) { // game-specific tasks when starting a new game session, such as loading map GenericOutcome outcome = Aws::GameLift::Server::ActivateGameSession (maxPlayers); } void onProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup GenericOutcome outcome = Aws::GameLift::Server::ProcessEnding(); } bool onHealthCheck() { // perform health evaluation and complete within 60 seconds return health; }

RemovePlayerSession()

Notifica o GameLift serviço da Amazon de que um jogador com o ID de sessão de jogador especificado se desconectou do processo do servidor. Em resposta, a Amazon GameLift altera a vaga do jogador para disponível, o que permite que ela seja atribuída a um novo jogador.

Sintaxe

GenericOutcome RemovePlayerSession( const std::string& playerSessionId);

Parâmetros

playerSessionId

ID exclusiva emitida pelo GameLift serviço da Amazon em resposta a uma chamada para a GameLift API ação da AWS SDK Amazon CreatePlayerSession. O cliente do jogo faz referência a esse ID ao se conectar ao processo do servidor.

Tipo: std::string

Obrigatório: Sim

Valor de retorno

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

Exemplo

Aws::GameLift::GenericOutcome disconnectOutcome = Aws::GameLift::Server::RemovePlayerSession(playerSessionId);

StartMatchBackfill()

Envia uma solicitação para encontrar novos jogadores para vagas abertas em uma sessão de jogo criada com FlexMatch. Veja também a AWS SDK ação StartMatchBackfill(). Com essa ação, as solicitações de alocação de correspondência podem ser iniciadas por um processo do servidor de jogos que esteja hospedando a sessão do jogo. Saiba mais sobre o recurso FlexMatch de preenchimento.

Esta ação é assíncrona. Se novos jogadores forem combinados com sucesso, o GameLift serviço Amazon fornece dados atualizados do matchmaker invocando 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() para cancelar a solicitação original.

Sintaxe

StartMatchBackfillOutcome StartMatchBackfill ( const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startBackfillRequest);

Parâmetros

StartMatchBackfillRequest

Um objeto StartMatchBackfillRequest que fornece 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, a Amazon GameLift gerará automaticamente um.

  • O marcador de jogos para o qual a solicitação é enviada. A configuração completa ARN é necessária. Esse valor pode ser obtido dos dados do marcador da sessão do jogo.

  • ID da sessão de jogo que está sendo alocada.

  • Dados disponíveis de marcação para os jogadores atuais da sessão do jogo.

Obrigatório: Sim

Valor de retorno

Retorna um StartMatchBackfillOutcome objeto com o tíquete de preenchimento da partida ou uma falha com uma mensagem de erro. O status do tíquete pode ser rastreado usando a AWS SDK ação DescribeMatchmaking().

Exemplo

// Build a backfill request std::vector<Player> players; Aws::GameLift::Server::Model::StartMatchBackfillRequest startBackfillRequest; startBackfillRequest.SetTicketId("a ticket ID"); //optional, autogenerated if not provided startBackfillRequest.SetMatchmakingConfigurationArn("the matchmaker configuration ARN"); //from the game session matchmaker data startBackfillRequest.SetGameSessionArn("the game session ARN"); // can use GetGameSessionId() startBackfillRequest.SetPlayers(players); //from the game session matchmaker data // Send backfill request Aws::GameLift::StartMatchBackfillOutcome backfillOutcome = Aws::GameLift::Server::StartMatchBackfill(startBackfillRequest); // Implement callback function for backfill void Server::OnUpdateGameSession(Aws::GameLift::Server::Model::GameSession gameSession, Aws::GameLift::Server::Model::UpdateReason updateReason, std::string backfillTicketId) { // handle status messages // perform game-specific tasks to prep for newly matched players }

StopMatchBackfill()

Cancela uma solicitação de alocação de correspondência ativa criada com StartMatchBackfill(). Veja também a AWS SDK ação StopMatchmaking(). Saiba mais sobre o recurso FlexMatch de preenchimento.

Sintaxe

GenericOutcome StopMatchBackfill ( const Aws::GameLift::Server::Model::StopMatchBackfillRequest &stopBackfillRequest);

Parâmetros

StopMatchBackfillRequest

Um objeto StopMatchBackfillRequest que identifica o tíquete de marcação de jogos para cancelar:

  • ID do tíquete atribuído à solicitação de alocação sendo cancelada

  • o marcador de jogo que recebeu a solicitação de alocação

  • a sessão do jogo associada à solicitação de alocação

Obrigatório: Sim

Valor de retorno

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

Exemplo

// Set backfill stop request parameters Aws::GameLift::Server::Model::StopMatchBackfillRequest stopBackfillRequest; stopBackfillRequest.SetTicketId("the ticket ID"); stopBackfillRequest.SetGameSessionArn("the game session ARN"); // can use GetGameSessionId() stopBackfillRequest.SetMatchmakingConfigurationArn("the matchmaker configuration ARN"); // from the game session matchmaker data Aws::GameLift::GenericOutcome stopBackfillOutcome = Aws::GameLift::Server::StopMatchBackfillRequest(stopBackfillRequest);

TerminateGameSession()

Esse método foi descontinuado com a versão 4.0.1. Em vez disso, o processo do servidor deve ser chamado ProcessEnding() após o término de uma sessão de jogo.

Notifica o GameLift serviço da Amazon de que o processo do servidor encerrou a sessão atual do jogo. Essa ação é chamada quando o processo do servidor permanece ativo e pronto para hospedar uma nova sessão de jogo. Ele deve ser chamado somente após a conclusão do procedimento de encerramento da sessão de jogo, pois indica à Amazon GameLift que o processo do servidor está imediatamente disponível para hospedar uma nova sessão de jogo.

Essa ação não será chamada se o processo do servidor for encerrado após o término da sessão do jogo. Em vez disso, chame ProcessEnding() para sinalizar que tanto a sessão do jogo quanto o processo do servidor estão terminando.

Sintaxe

GenericOutcome TerminateGameSession();

Parâmetros

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

Valor de retorno

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

UpdatePlayerSessionCreationPolicy()

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. Veja também a AWS SDK ação UpdateGameSession().

Sintaxe

GenericOutcome UpdatePlayerSessionCreationPolicy( Aws::GameLift::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy);

Parâmetros

newPlayerSessionPolítica

Valor de string que indica se a sessão do jogo aceita novos jogadores.

Tipo: Aws:GameLift: :Model:: PlayerSessionCreationPolicy enum. Os valores válidos são:

  • ACCEPT_ ALL — Aceite todas as sessões de novos jogadores.

  • DENY_ ALL — Negar todas as sessões de novos jogadores.

Obrigatório: Sim

Valor de retorno

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

Exemplo

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

Aws::GameLift::GenericOutcome outcome = Aws::GameLift::Server::UpdatePlayerSessionCreationPolicy(Aws::GameLift::Model::PlayerSessionCreationPolicy::ACCEPT_ALL);

Destroy()

Limpa a memória alocada por init SDK () durante a inicialização do servidor do jogo. Use esse método depois de finalizar um processo no servidor do jogo para evitar o desperdício de memória do servidor.

Sintaxe

GenericOutcome Aws::GameLift::Server::Destroy();

Parâmetros

Não há parâmetros.

Valor de retorno

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

Exemplo

Este exemplo limpa a memória alocada pelo init SDK após o término de um processo do servidor de jogos.

if (Aws::GameLift::Server::ProcessEnding().IsSuccess()) { Aws::GameLift::Server::Destroy(); exit(0); }