SDK do servidor C# para Amazon GameLift Servers 4.x -- Ações - Amazon GameLift Servers

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# para Amazon GameLift Servers 4.x -- Ações

Use a referência do SDK do servidor para integrar seu jogo multijogador para hospedagem comAmazon GameLift Servers. Para obter orientação sobre o processo de integração, consulte Adicione Amazon GameLift Servers ao seu servidor de jogos.

nota

Essa referência é para uma versão anterior do SDK do servidor paraAmazon GameLift Servers. Para obter a versão mais recente, consulte SDK 5.x do servidor C# para Amazon GameLift Servers -- Ações.

SDK do servidor C# para Amazon GameLift Servers 4.x -- Tipos de dados

AcceptPlayerSession()

Notifica o Amazon GameLift Servers serviço de que um jogador com o ID de sessão de jogador especificado se conectou ao processo do servidor e precisa de validação. Amazon GameLift Serversverifica 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, o Amazon GameLift Servers altera o status do slot do jogador de RESERVED para ACTIVE.

Sintaxe

GenericOutcome AcceptPlayerSession(String playerSessionId)

Parâmetros

playerSessionId

ID exclusivo emitido Amazon GameLift Servers quando uma nova sessão de jogador é criada. O ID da sessão do jogador é especificado em um PlayerSession objeto, que é retornado em resposta a uma chamada do cliente para as ações da GameLift API StartGameSessionPlacement CreateGameSession,, DescribeGameSessionPlacement, ou DescribePlayerSessions.

Tipo: 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, String playerSessionId){ var acceptPlayerSessionOutcome = GameLiftServerAPI.AcceptPlayerSession(playerSessionId); if(acceptPlayerSessionOutcome.Success) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(acceptPlayerSessionOutcome.Error.ErrorMessage); } }

ActivateGameSession()

Notifica o serviç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(), 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 delegação onStartGameSession().

void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.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(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 player têm uma estrutura idêntica ao tipo de PlayerSessiondados da Amazon GameLift Servers API do AWS SDK.

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 NextTokene definir o valor limite como 10, Amazon GameLift Servers retornará os registros das primeiras 10 sessões de jogadores que correspondam à solicitação.

// Set request parameters var describePlayerSessionsRequest = new Aws.GameLift.Server.Model.DescribePlayerSessionsRequest() { GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, //gets the ID for the current game session Limit = 10, PlayerSessionStatusFilter = PlayerSessionStatusMapper.GetNameForPlayerSessionStatus(PlayerSessionStatus.ACTIVE) }; // Call DescribePlayerSessions Aws::GameLift::DescribePlayerSessionsOutcome playerSessionsOutcome = Aws::GameLift::Server::Model::DescribePlayerSessions(describePlayerSessionRequest);

GetGameSessionId()

Recupera o ID da sessão do jogo hospedada no momento pelo processo do servidor, caso o processo do servidor esteja ativo.

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

var getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();

GetInstanceCertificate()

Recupera a localização do arquivo de um certificado TLS 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 como GENERATED. 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, o retorno será um objeto GetInstanceCertificateOutcome que contém a localização do arquivo de certificado TLS 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 Referência da AWS Certificate Manager API.

Exemplo

var getInstanceCertificateOutcome = GameLiftServerAPI.GetInstanceCertificate();

GetSdkVersion()

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

Sintaxe

AwsStringOutcome GetSdkVersion()

Parâmetros

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

Valor de retorno

Se bem-sucedido, retornará a versão do SDK atual como um objeto AwsStringOutcome. 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

var getSdkVersionOutcome = GameLiftServerAPI.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 do servidor executa essa ação depois de receber um onProcessTerminate() retorno de chamada do Amazon GameLift Servers serviço. Amazon GameLift Serverspode ligar onProcessTerminate() pelos seguintes motivos: (1) por problemas de saúde (o processo do servidor relatou a integridade da porta ou não respondeu)Amazon GameLift Servers, (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 da instância 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

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

var getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

InitSDK()

Inicializa o Amazon GameLift Servers SDK. Esse método deve ser chamado na inicialização antes de qualquer outra inicialização relacionada ao Amazon GameLift Servers.

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

var initSDKOutcome = GameLiftServerAPI.InitSDK();

ProcessEnding()

Notifica o serviço Amazon GameLift Servers de que o processo do servidor está sendo desligado. 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

var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);

ProcessReady()

Notifica o serviço Amazon GameLift Servers de que o processo do servidor está pronto para hospedar sessões do jogo. Chame esse método depois de invocar InitSDK() 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.

Sintaxe

GenericOutcome ProcessReady(ProcessParameters processParameters)

Parâmetros

processParameters

Um objeto ProcessParameters 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.

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 delegação ProcessReady().

// Set parameters and call ProcessReady var processParams = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "C:\\game\\logs", "C:\\game\\error" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams); // Implement callback functions void OnGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); } void OnProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var ProcessEndingOutcome = GameLiftServerAPI.ProcessEnding(); } bool OnHealthCheck() { bool isHealthy; // complete health evaluation within 60 seconds and set health return isHealthy; }

RemovePlayerSession()

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

Sintaxe

GenericOutcome RemovePlayerSession(String playerSessionId)

Parâmetros

playerSessionId

ID exclusivo emitido Amazon GameLift Servers quando uma nova sessão de jogador é criada. O ID da sessão do jogador é especificado em um PlayerSession objeto, que é retornado em resposta a uma chamada do cliente para as ações da GameLift API StartGameSessionPlacement CreateGameSession,, DescribeGameSessionPlacement, ou DescribePlayerSessions.

Tipo: 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 os slots abertos em uma sessão de jogo criada com o FlexMatch. Veja também a ação do AWS SDK 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 a correspondência dos novos jogadores for bem-sucedida, o serviç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() para cancelar a solicitação original.

Sintaxe

StartMatchBackfillOutcome StartMatchBackfill (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. Essa informação é opcional. Caso nenhum ID seja fornecido, o Amazon GameLift Servers gerará um automaticamente.

  • O marcador de jogos para o qual a solicitação é enviada. O ARN completo da configuração é necessário. 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 ID do ticket de preenchimento correspondente ou falha com uma mensagem de erro.

Exemplo

// Build a backfill request var startBackfillRequest = new AWS.GameLift.Server.Model.StartMatchBackfillRequest() { TicketId = "a ticket ID", //optional MatchmakingConfigurationArn = "the matchmaker configuration ARN", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session //get player data for all currently connected players MatchmakerData matchmakerData = MatchmakerData.FromJson(gameSession.MatchmakerData); // gets matchmaker data for current players // get matchmakerData.Players // remove data for players who are no longer connected Players = ListOfPlayersRemainingInTheGame }; // Send backfill request var startBackfillOutcome = GameLiftServerAPI.StartMatchBackfill(startBackfillRequest); // Implement callback function for backfill void OnUpdateGameSession(GameSession myGameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }

StopMatchBackfill()

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

Sintaxe

GenericOutcome StopMatchBackfill (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 var stopBackfillRequest = new AWS.GameLift.Server.Model.StopMatchBackfillRequest() { TicketId = "a ticket ID", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "the matchmaker configuration ARN", //from the game session matchmaker data GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; var stopBackfillOutcome = GameLiftServerAPI.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 Amazon GameLift Servers serviço 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 Servers 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.

Exemplo

Este exemplo ilustra um processo de servidor no final de uma sessão de jogo.

// game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var terminateGameSessionOutcome = GameLiftServerAPI.TerminateGameSession(); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);

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 ação UpdateGameSession() na Referência da API Amazon GameLift Servers de serviço).

Sintaxe

GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)

Parâmetros

newPlayerSessionPolítica

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

Tipo: enumeração PlayerSessionCreationPolicy. 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.

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.

var updatePlayerSessionCreationPolicyOutcomex = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);