Adicione Amazon GameLift Servers ao seu servidor de jogos - 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á.

Adicione Amazon GameLift Servers ao seu servidor de jogos

Este tópico descreve como modificar o código do servidor de jogos para que os processos do servidor de jogos possam se comunicar com o Amazon GameLift Servers serviço. Use essas instruções para servidores de jogos que você planeja implantar em EC2 frotas Amazon GameLift Servers gerenciadas, frotas de contêineres gerenciados ou frotas em qualquer lugar.

Os processos do servidor do jogo se comunicam com o Amazon GameLift Servers serviço para receber instruções do serviço e relatar a integridade do processo do servidor e o status da sessão do jogo. Para obter informações detalhadas sobre as interações entre os componentes da solução de hospedagem de jogos (servidor de jogos, serviço de back-end, cliente de jogos eAmazon GameLift Servers), consulteInterações cliente/servidor do jogo com Amazon GameLift Servers.

Para preparar seu jogo para hospedagem, adicione o SDK do servidor Amazon GameLift Servers ao seu projeto de servidor de jogos. Se você estiver usando o Amazon GameLift Servers plug-in para Unreal Engine ou Unity, o SDK do servidor está incorporado e pronto para uso. O Server SDK está disponível em várias linguagens. Para obter mais informações sobre o suporte de ferramentas para servidores de jogos, incluindo o SDK do servidor, consulteObtenha ferramentas Amazon GameLift Servers de desenvolvimento.

Referências da API do Server SDK:

Inicializar o processo do servidor

Adicione código para estabelecer comunicação com o Amazon GameLift Servers serviço e informe quando o processo do servidor do jogo estiver pronto para hospedar uma sessão de jogo. Esse código deve ser executado antes de qualquer Amazon GameLift Servers código.

  1. Inicialize um cliente de Amazon GameLift Servers API InitSdk() chamando. Se você estiver preparando seu servidor de jogos para ser executado em EC2 frotas Amazon GameLift Servers gerenciadas, use o padrão InitSDK()(C++) (C#) (Unreal) (Go) (C++) sem parâmetros. O cliente da API gerencia a conexão com o Amazon GameLift Servers serviço para você.

    Se você estiver preparando seu servidor de jogos para uso em uma frota Amazon GameLift Servers Anywhere:

    Inicialize o cliente Amazon GameLift Servers da API chamando InitSdk() com o seguinte: ServerParameters

    • O URL do Websocket usado para se conectar ao servidor do 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 que contém sua computação Amazon GameLift Servers Anywhere.

    • O token de autorização gerado pela Amazon GameLift Servers operaçãoGetComputeAuthToken.

  2. Notifique o serviço de que o processo do servidor de jogos está pronto para hospedar uma sessão de jogo. Chame ProcessReady() (C++) (C#) (Unreal) (Go) (C++) com o seguinte. ProcessParameters Cada processo do servidor de jogo deve ser chamado ProcessReady() apenas uma vez.

    • O número da porta do processo do servidor. Quando o processo do servidor inicia uma sessão de jogo, ele fornece a porta para o Amazon GameLift Servers serviço, que atualiza as informações da sessão do jogo. Seu jogo pode recuperar essas informações e fornecê-las aos clientes do jogo, que as usam para se conectar ao processo do servidor e participar da sessão do jogo.

    • Os locais dos arquivos que você Amazon GameLift Servers deseja armazenar para você. Isso pode incluir registros de sessão de jogo e outros arquivos que o processo do servidor gera durante uma sessão de jogo. Embora Amazon GameLift Servers salve esses arquivos temporariamente na computação em que o processo do servidor está sendo executado, eles só ficam disponíveis até que a instância seja encerrada. Você pode acessar os arquivos armazenados por meio do Amazon GameLift Serversconsole ou chamando a operação da Amazon GameLift Servers API GetGameSessionLogUrl().

      Se você estiver preparando seu servidor de jogos para uso em uma frota de contêineres Amazon GameLift Servers gerenciados:

      Você não precisa especificar parâmetros de registro para uma frota de contêineres. Em vez disso, envie a sessão do jogo e outros dados de registro para a saída padrão. As frotas de contêineres capturam automaticamente toda a saída padrão do contêiner como um fluxo de log.

    • As seguintes funções de retorno de chamada permitem Amazon GameLift Servers enviar mensagens ou solicitações para um processo do servidor de jogos. Você deve implementar cada uma dessas funções no código do servidor do jogo. Para obter mais informações, consulte ProcessParameters (C++) (C#) (Unreal) (Go) .

      • (Opcional) onHealthCheck — Amazon GameLift Servers chama essa função regularmente para solicitar um relatório de status de saúde do servidor.

      • onStartGameSession— Amazon GameLift Servers chama essa função em resposta à solicitação do cliente CreateGameSession().

      • onProcessTerminate— Amazon GameLift Servers força o processo do servidor a parar, permitindo que ele seja desligado normalmente.

      • (Opcional) onUpdateGameSession — Amazon GameLift Servers entrega um objeto de sessão de jogo atualizado ao servidor do jogo ou fornece uma atualização de status em uma solicitação de preenchimento de partida. O recurso FlexMatchde preenchimento requer esse retorno de chamada.

    Você também pode configurar um servidor de jogos para que ele possa acessar com segurança outros AWS recursos que você possui ou controla. Para obter mais informações, consulte Comunique-se com outros AWS recursos de suas frotas.

(Opcional) Reportar a integridade do processo do servidor

Adicione código ao seu servidor de jogo para implementar a função onHealthCheck() de retorno de chamada. Amazon GameLift Serversinvoca esse método de retorno de chamada periodicamente para coletar métricas de saúde. Para implementar essa função de retorno de chamada, faça o seguinte:

  • Avalie o status da integridade do processo do servidor. Por exemplo, convém informar o processo do servidor como não íntegro caso alguma dependência externa falhar.

  • Conclua a avaliação de integridade e responda ao retorno de chamada dentro de 60 segundos. Se Amazon GameLift Servers não receber uma resposta nesse período, ele automaticamente considera que o processo do servidor não está íntegro.

  • Retornar um valor Booliano: verdadeiro para íntegro, falso para não íntegro.

Se você não implementar um retorno de chamada de verificação de integridade, Amazon GameLift Servers considere que o processo do servidor está íntegro, a menos que o servidor não responda.

O Amazon GameLift Servers serviço usa a integridade do processo do servidor para encerrar processos não íntegros e liberar recursos. Se um processo do servidor continuar sendo reportado como não íntegro ou não responder por três verificações de integridade consecutivas, o serviço poderá encerrar o processo e iniciar um novo. O serviço coleta métricas sobre a integridade do processo do servidor de uma frota.

(Opcional) Obtenha um certificado TLS

e o processo do servidor estiver em execução em uma frota com a geração de certificado TLS ativada, você poderá recuperar o certificado para estabelecer uma conexão segura com um cliente de jogo e criptografar a comunicação entre cliente e servidor. Uma cópia do certificado é armazenada na instância. Para obter a localização do arquivo, chame GetComputeCertificate() (C++) (C#) (Unreal) (Go) .

Iniciar uma sessão de jogo

Adicione código para implementar a função onStartGameSession de retorno de chamada. Amazon GameLift Serversinvoca esse retorno de chamada para iniciar uma sessão de jogo no processo do servidor.

A onStartGameSession função usa um GameSessionobjeto como parâmetro de entrada. Esse objeto inclui informações importantes sobre a sessão do jogo, como o número máximo de jogadores. Também pode incluir dados do jogo e dados do jogador. A implementação da função deve realizar as seguintes tarefas:

  • Encerrar ações para criar uma sessão de jogo com base nas propriedades GameSession. No mínimo, o servidor do jogo deve associar o ID da sessão do jogo, que os clientes do jogo referenciam ao se conectar ao processo do servidor.

  • Processe os dados do jogo e os dados do jogador conforme necessário. Esses dados estão no objeto de GameSession.

  • Notifique o Amazon GameLift Servers serviço quando uma nova sessão de jogo estiver pronta para aceitar jogadores. Chame a operação ActivateGameSession() da API do servidor (C++) (C#) (Unreal) (Go) . Em resposta a uma chamada bem-sucedida, o serviço altera o status da sessão do jogo paraACTIVE.

(Opcional) Validar um jogador

Se você estiver monitorando o status das sessões dos jogadores, adicione um código para validar um novo jogador quando ele se conectar a um servidor de jogo. Amazon GameLift Serversrastreia os jogadores atuais e os slots de sessão de jogo disponíveis.

Para validação, um cliente de jogo que tenta entrar em uma sessão de jogo deve incluir um ID de sessão de jogador. Amazon GameLift Serversgera esse ID quando seu jogo inicia novas sessões de jogo chamando StartGameSessionPlacement() ou StartMatchmaking(). Nessas solicitações, um espaço aberto em uma sessão de jogo é reservado para a sessão do jogador.

Quando o processo do servidor do jogo recebe uma solicitação de conexão do cliente do jogo, ele chama AcceptPlayerSession() (C++) (C#) (Unreal) (Go) com o ID da sessão do jogador. Em resposta, Amazon GameLift Servers verifica se o ID da sessão do jogador corresponde a um espaço aberto reservado na sessão do jogo. Depois de Amazon GameLift Servers validar o ID da sessão do jogador, o processo do servidor aceita a conexão. O jogador pode então entrar na sessão do jogo. Se Amazon GameLift Servers não validar o ID da sessão do jogador, o processo do servidor nega a conexão.

(Opcional) Informar o término de uma sessão de jogador

Se você estiver acompanhando o status das sessões dos jogadores, adicione um código para notificar Amazon GameLift Servers quando um jogador sair da sessão do jogo. Esse código deve ser executado sempre que o processo do servidor detectar uma queda na conexão. Amazon GameLift Serversusa essa notificação para rastrear os jogadores atuais e os slots disponíveis na sessão do jogo.

Para lidar com conexões perdidas em seu código, adicione uma chamada à operação de API do servidor RemovePlayerSession() (C++) (C#) (Unreal) (Go) (C++) com o ID de sessão do jogador correspondente.

Encerrar uma sessão de jogo

Adicione código à sequência de desligamento do processo do servidor para notificar Amazon GameLift Servers quando uma sessão de jogo estiver terminando. Para reciclar e atualizar os recursos de hospedagem, encerre cada processo do servidor após a conclusão da sessão do jogo.

No início do código de desligamento do processo do servidor, chame a operação ProcessEnding() da API do servidor (C++) (C#) (Unreal) (Go) g . Essa chamada notifica Amazon GameLift Servers que o processo do servidor está sendo encerrado. Amazon GameLift Serversaltera o status da sessão do jogo e o status do processo do servidor paraTERMINATED. Após chamar ProcessEnding(), é seguro que o processo seja encerrado.

Responder a uma notificação de desligamento do processo do servidor

Adicione código para encerrar o processo do servidor em resposta a uma notificação do Amazon GameLift Servers serviço. O serviço envia essa notificação quando o processo do servidor relata consistentemente que não está íntegro ou se a instância em que o processo do servidor está sendo executado está sendo encerrada. Amazon GameLift Serverspode interromper uma instância como parte de um evento de redução de capacidade ou em resposta à interrupção da Instância Spot. A interrupção da Instância Spot fornece um aviso de dois minutos, o que dá tempo ao processo do servidor para desconectar os jogadores normalmente, preservar os dados do estado do jogo e realizar outras tarefas de limpeza.

Para lidar com uma notificação de desligamento, faça as seguintes alterações no código do servidor do jogo:

  • Implemente a função de retorno de chamada onProcessTerminate()(C++) (C#) (Unreal) (Go) (C++). Essa função deve chamar o código que encerra o processo do servidor.

  • Chame a operação GetTerminationTime() da API do servidor (C++) (C#) (Unreal) (Go) a partir do código de desligamento do servidor do jogo. Se Amazon GameLift Servers tiver emitido uma chamada para interromper o processo do servidor, GetTerminationTime() retornará o tempo estimado de encerramento.

  • No início do código de desligamento do servidor do jogo, chame a operação de API do servidor ProcessEnding() (C++) (C#) (Unreal) (Go) . Essa chamada notifica o serviço do Amazon GameLift Servers sobre o encerramento do processo do servidor. Em seguida, o serviço altera o status do processo do servidor paraTERMINATED. Após chamar ProcessEnding(), é seguro que o processo seja encerrado.