Roteiro de desenvolvimento para hospedagem híbrida com Amazon GameLift Servers - 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á.

Roteiro de desenvolvimento para hospedagem híbrida com Amazon GameLift Servers

Este roteiro orienta você sobre como desenvolver uma solução de hospedagem para seu jogo multijogador. Amazon GameLift Serversoferece várias opções de hospedagem de jogos; para obter mais informações sobre essas opções, consulteSoluções do Amazon GameLift Servers.

Uma solução híbrida usa uma combinação de recursos de hospedagem, incluindo recursos baseados em nuvem gerenciados por Amazon GameLift Servers e seus próprios recursos de hospedagem autogerenciados. Para uma discussão mais detalhada sobre hospedagem híbrida, consulte este artigo: Hospedagem híbrida de servidores de jogos com Amazon GameLift Servers Anywhere. ComAmazon GameLift Servers, você pode configurar uma solução híbrida que usa componentes e processos comuns, para que você possa gerenciar centralmente uma frota global e mover cargas com facilidade entre todos os tipos de recursos.

Uma arquitetura híbrida consiste nos seguintes componentes:

  • Uma ou mais frotas Amazon GameLift Servers gerenciadas, que usam instâncias do Amazon Elastic Compute Cloud EC2 (Amazon) otimizadas para hospedagem de jogos multijogador.

  • Uma ou mais frotas Amazon GameLift Servers Anywhere, que usam seus recursos locais existentes ou outros recursos de hospedagem, incluindo seu gerenciamento de configuração e ferramentas de implantação. (Opcionalmente, você pode usar o AWS Systems Manager.)

  • Um único servidor de jogo construído, integrado ao SDK do servidorAmazon GameLift Servers, para ser implantado em todas as frotas.

  • Um único cliente de jogo e serviço de back-end, integrado ao AWS SDK, para interagir com o Amazon GameLift Servers serviço e solicitar sessões de jogo.

  • Uma Amazon GameLift Servers fila compartilhada para colocar novas sessões de jogo com os servidores de jogos disponíveis e equilibrar a carga em todas as frotas.

  • O Amazon GameLift Servers Agent, que é implantado com uma frota Anywhere, para simplificar as tarefas de gerenciamento de processos do servidor em todos os computadores em todas as frotas.

  • (Opcional) Um FlexMatch matchmaker para criar partidas multijogador e configurar sessões de jogo para elas.

Este roteiro apresenta um caminho simplificado para colocar seu jogo multijogador em funcionamento com sucesso em uma solução de hospedagem híbrida com. Amazon GameLift Servers Depois de configurar os componentes necessários, você pode continuar a iterar no desenvolvimento de jogos e personalizar a solução de hospedagem. À medida que você se aproxima do lançamento, consulte Preparando seu jogo para o lançamento com Amazon GameLift Servers hospedagem para obter ajuda na preparação da solução de hospedagem para uso em nível de produção.

Comece com o Amazon GameLift Servers plugin

Se você estiver desenvolvendo projetos com o Unreal Engine ou o Unity, comece a configurar seu jogo para hospedagem com o Amazon GameLift Servers plug-in. Com o plug-in, você pode adicionar o Amazon GameLift Servers SDKs ao seu projeto de jogo e usar os fluxos de trabalho guiados para criar uma versão funcional simples de uma solução de hospedagem híbrida com uma frota Anywhere e uma frota Amazon GameLift Servers gerenciada. Em seguida, você pode usar esses fundamentos para compilar e personalizar conforme necessário.

Adicione funcionalidade ao seu servidor de jogos para que ele possa se comunicar com o Amazon GameLift Servers serviço quando ele for implantado para hospedagem. A mesma funcionalidade é necessária se o servidor do jogo estiver sendo executado em uma frota Amazon GameLift Servers gerenciada ou em uma frota Anywhere.

  • Obtenha o SDK do servidor para Amazon GameLift Servers (versão 5.x) para seu projeto de jogo. O SDK do servidor está disponível em C++, C# e Go. Baixe o SDK do servidor para Amazon GameLift Servers.

  • Modifique o código do servidor de jogos para adicionar a funcionalidade do SDK do servidor. Para obter orientações, consulte Integre jogos com servidores de jogos personalizados. No mínimo, faça o seguinte:

    • Adicione código para inicializar o Amazon GameLift Servers SDK e estabelecer uma WebSocket conexão com o Amazon GameLift Servers serviço. Use a ação InitSdk() do SDK do servidor. Inclua código para especificar os parâmetros do servidor ao executar em uma computação de frota Anywhere.

    • Adicione código para reportar ao Amazon GameLift Servers serviço quando o processo do servidor estiver pronto para hospedar sessões de jogo. Use a ação ProcessReady() do SDK do servidor.

    • Implemente as funções OnProcessTerminate() de retorno de chamada necessárias e. OnStartGameSession() Com essas funções, os processos do servidor de jogos podem manter uma conexão com o Amazon GameLift Servers serviço, iniciar uma sessão de jogo quando solicitado e responder a uma solicitação para encerrar o processo do servidor de jogos. Amazon GameLift Servers

    • Adicione código para reportar ao Amazon GameLift Servers serviço quando o processo do servidor estiver encerrando uma sessão de jogo. Use a ação ProcessEnding() do SDK do servidor.

  • Empacote a versão do servidor de jogos. Crie um script de instalação com seus arquivos de compilação, dependências e software de suporte. Consulte Criar um pacote dos arquivos de compilação do jogo. Recomendamos usar um bucket do Amazon Simple Storage Service (Amazon S3) para armazenar as versões da compilação do jogo.

  • Teste a integração do servidor de jogos. Para essa tarefa, recomendamos configurar uma frota Amazon GameLift Servers Anywhere com uma estação de trabalho local, conforme descrito emConfigure testes locais com o Amazon GameLift Servers Anywhere. Para esta etapa, instale manualmente a compilação do servidor de jogos no dispositivo de teste e inicie um processo no servidor. Use a AWS CLI para solicitar uma nova sessão de jogo e verifique se o Amazon GameLift Servers serviço solicita com êxito que o processo do servidor inicie uma sessão de jogo.

Crie uma forma do cliente de jogo solicitar a participação em uma sessão de jogo, obter informações de conexão e conectar-se diretamente a uma sessão de jogo hospedada. A abordagem mais comum é configurar a funcionalidade do serviço de back-end que serve como intermediária entre o cliente do jogo e o serviço. Amazon GameLift Servers Essa abordagem protege os recursos de hospedagem e oferece maior controle sobre como os jogadores são colocados nas sessões de jogo.

  • Crie uma funcionalidade de serviço de backend para hospedagem. O serviço de back-end se comunica com o Amazon GameLift Servers serviço e fornece informações de conexão a um cliente de jogo. Essa funcionalidade inclui iniciar sessões de jogo, colocar jogadores em jogos e recuperar informações da sessão de jogo. Para obter orientações, consulte Integre jogos com servidores de jogos personalizados. No mínimo, faça o seguinte:

  • Adicione a funcionalidade ao cliente de jogo que permite que os jogadores participem de uma sessão de jogo hospedada. O cliente do jogo faz solicitações para seu serviço de back-end, não diretamente para o. Amazon GameLift Servers Depois que o serviço de backend fornece as informações de conexão da sessão do jogo, o cliente de jogo se conecta diretamente à sessão do jogo para jogar.

  • Teste a integração do cliente de jogo. Você pode usar a mesma frota Amazon GameLift Servers Anywhere com uma estação de trabalho local para testes.

    Durante a fase de desenvolvimento, se você quiser testar como sua compilação de jogos se comporta em uma frota Amazon GameLift Servers gerenciada, recomendamos que você também configure um ambiente de teste baseado em nuvem. Essa solução Amazon GameLift Servers de kit de ferramentas imita o comportamento de uma frota gerenciada, mas permite que você atualize as compilações do servidor de jogos com o mínimo de tempo de resposta.

Personalize como você deseja Amazon GameLift Servers processar as solicitações de uma nova sessão de jogo e localize os servidores de jogos disponíveis para hospedá-las. Amazon GameLift Serversrastreia automaticamente a disponibilidade de todos os servidores de jogos em todas as frotas. Quando um cliente de jogo envia uma solicitação para participar de uma sessão de jogo, Amazon GameLift Servers procura o “melhor posicionamento possível” com base em um conjunto de prioridades definidas, como latência, custo e disponibilidade mínimos.

  • Crie uma fila de sessões de jogo para alocar uma nova sessão de jogo em servidores de jogos disponíveis. As filas são o principal mecanismo para posicionamento de sessões de jogo. Para obter orientações, consulte Criar uma fila de sessões de jogo.

    • No mínimo, adicione suas frotas Anywhere como destinos na fila. Todas as outras configurações são personalizações opcionais.

  • No código de serviço de backend, converta a chamada CreateGameSession() em StartGameSessionPlacement(). Consulte Criar uma sessão de jogo em uma fila com vários locais.

  • Crie um mecanismo para notificar um cliente de jogo quando uma sessão de jogo estiver pronta para ser iniciada. Durante o desenvolvimento, você pode pesquisar o status da sessão do jogo usando uma chamada para DescribeGameSessionPlacement. No entanto, antes de usar uma fila para processar grandes volumes, você precisará ativar as notificações de eventos. Consulte Configurar notificações de eventos para o posicionamento de sessões de jogo.

  • (Opcional) Adicione componentes de FlexMatch matchmaking. Para obter orientação, consulte o guia do Amazon GameLift ServersFlexMatch desenvolvedor.

Até agora, você estava trabalhando com dispositivos locais (registrados como Anywhere fleet computes) para testar e iterar os componentes do seu jogo. A próxima etapa é configurar o tipo de frota que você precisará para um sistema de produção. Comece com uma frota Anywhere e adicione o Amazon GameLift Servers Agente para gerenciar algumas das principais tarefas de gerenciamento de host no computador. Consulte mais detalhes em Trabalhe com o Amazon GameLift Servers agente.

  • Obtenha o Amazon GameLift Servers Agente e adicione-o ao pacote de instalação do servidor do jogo. Obtenha e crie o código-fonte do Agent, disponível no repositório do Amazon GameLift Servers Agent Github. Coloque o arquivo executável JAR resultante no mesmo diretório do executável de compilação do jogo.

  • Modifique o script de inicialização para o Agent conforme necessário. Certifique-se de que o executável do Agent seja iniciado assim que a computação começar a ser executada. Consulte o arquivo leia-me no repositório do Agent para obter ajuda com a instalação e a execução do Agent nos recursos de computação de hospedagem. Seu comando de inicialização deve incluir opções para especificar, no mínimo, o ID da frota Anywhere Região da AWS, um local personalizado e um nome de computação.

    O Agent gerencia automaticamente as seguintes tarefas para você. Portanto, se estiver lidando com essas tarefas com scripts, você poderá removê-los:

    • Chama RegisterCompute() para adicionar a computação a uma frota Anywhere.

    • Chamadas GetComputeAuthToken() para autenticar servidores de jogos quando eles se conectam ao Amazon GameLift Servers serviço. O Agent gerencia a obtenção e a atualização do token de autenticação, que pode ser usado por todos os processos do servidor de jogos em execução na computação.

    • Inicia novos processos do servidor na computação com base em um conjunto de instruções de tempo de execução.

  • Crie uma configuração de tempo de execução para computações na frota Anywhere. No mínimo, especifique o caminho de inicialização para o executável do servidor de jogos. Você pode usar o Amazon GameLift Servers console ou a AWS CLI para criar ou modificar instruções de tempo de execução para a frota. O Agente executa essas instruções e solicita periodicamente atualizações do Amazon GameLift Servers serviço.

  • Configure ou modifique a fila de sessões de jogo conforme necessário. Crie uma nova fila (ou atualize uma existente) e designe um destino para a frota Anywhere implantada com o Agente. Amazon GameLift Servers

  • Teste a integração do Agent com suas frotas Anywhere. Verifique se o Agent está iniciando corretamente os processos do servidor com base na configuração de tempo de execução.

Crie uma EC2 frota Amazon GameLift Servers gerenciada para complementar sua frota Anywhere. Se você configurou um ambiente de teste baseado na nuvem na Etapa 2 para acelerar o desenvolvimento, planeje criar uma frota gerenciada depois de concluir a maior parte do desenvolvimento e teste do jogo. Você precisa de uma frota totalmente gerenciada para definir e testar configurações adicionais, como a escalabilidade automática da capacidade.

  • Package a compilação do seu servidor de jogo e faça o upload paraAmazon GameLift Servers. Crie um script de instalação com seus arquivos de compilação, dependências e software de suporte. Você pode usar o mesmo software de compilação com as frotas Anywhere e gerenciadas. Consulte Implemente uma criação de servidor personalizada para Amazon GameLift Servers hospedagem. Você pode fazer o upload da sua compilação Amazon GameLift Servers usando o console ou a AWS CLI.

    Antes de enviar a compilação, decida em que Região da AWS você deseja criar a frota gerenciada. É necessário fazer o upload da compilação para a mesma região. Para saber mais sobre como escolher a localização da frota, consulte Localização da frota.

  • Crie uma EC2 frota gerenciada. Você pode usar o Amazon GameLift Servers console ou a AWS CLI para criar uma frota gerenciada. Quando você cria uma frota, começa Amazon GameLift Servers imediatamente a implantar sua versão de servidor de jogos para hospedagem. Você pode configurar vários aspectos de uma frota gerenciada. Para obter orientações, consulte Crie uma EC2 frota Amazon GameLift Servers gerenciada. No mínimo, faça o seguinte:

    • Dê um nome à frota e especifique qual compilação de jogo enviada deve ser implantada.

    • Escolha instâncias sob demanda para a frota e selecione um tipo de instância que esteja disponível na localização da frota. As frotas spot são uma opção valiosa, mas exigem design e configuração adicionais.

    • Crie uma configuração de tempo de execução com configurações semelhantes às usadas com a frota Anywhere. No mínimo, especifique o caminho de inicialização para o executável do servidor de jogos.

    • Especifique as configurações de porta para permitir que o tráfego de entrada acesse os servidores de jogos.

  • Adicione a frota gerenciada à fila de sessões de jogo compartilhadas. Atualize a fila da Etapa 4 para que ela inclua destinos tanto para a frota gerenciada quanto para a frota Anywhere implantada com o Amazon GameLift Servers Agente.

  • Teste a hospedagem de jogos com as frotas gerenciadas. Nesse ponto, você poderá testar todo o ciclo de hospedagem, com um cliente de jogo solicitando uma sessão de jogo, obtendo informações de conexão e se conectando com sucesso a uma sessão de jogo.

Ao se preparar para o lançamento do jogo, você precisará ajustar as soluções de hospedagem. Algumas das decisões a serem consideradas incluem:

  • Para frotas Anywhere, automatize o processo de iniciar e desligar recursos de computação conforme necessário, incluindo a instalação e a execução do software de servidor de jogos. Reciclar as computações é útil para garantir que sejam atualizadas regularmente, e encerrá-las pode economizar custos quando não forem necessárias.

  • Se o servidor do jogo precisar comunicar outros recursos da AWS , configure os perfis do IAM para gerenciar o acesso. Consulte Comunique-se com outros AWS recursos de suas frotas.

  • Determine onde você deseja posicionar geograficamente os servidores de jogo. Adicione locais remotos às suas frotas gerenciadas. Consulte Personalize seu Amazon GameLift Servers EC2 frotas gerenciadas.

  • Para frotas gerenciadas, considere usar frotas Spot para reduzir custos. Consulte Tutorial: Crie uma Amazon GameLift Servers fila com instâncias spot.

  • Otimize o desempenho da frota selecionando configurações de recursos de computação e configure as instruções de tempo de execução para executar o número ideal de processos de servidor por computação. Faça isso tanto para frotas Anywhere quanto para frotas gerenciadas. Consulte Gerencie como Amazon GameLift Servers lança servidores de jogos.

  • Experimente as opções de posicionamento de sessões de jogo para frotas gerenciadas, incluindo a personalização das configurações de priorização. Consulte Personalize uma fila de sessões de jogo.

  • Para frotas gerenciadas, configure a escalabilidade automática da capacidade para atender à demanda esperada dos jogadores. Consulte Escalando a capacidade de hospedagem de jogos com Amazon GameLift Servers.

  • Para frotas Anywhere, crie mecanismos para lidar com a escalabilidade de capacidade manual ou automatizada para atender à demanda esperada dos jogadores.

  • Projete e implemente o failover para outros recursos, se necessário. Configure frotas em espera em outras Regiões da AWS e modifique as filas e o ajuste de escala automático para lidar com failovers, se necessário.

  • Configure ferramentas de observabilidade de hospedagem, incluindo análises e registros em log. Consulte Monitoramento Amazon GameLift Servers. Crie grupos de métricas para agregar analytics para todos os recursos de hospedagem.

  • Automatize a implantação usando infraestrutura como código (IaC). Consulte Gerenciamento Amazon GameLift Servers recursos de hospedagem usando AWS CloudFormation.

    Amazon GameLift Serverssuporta o uso de AWS CloudFormation modelos para qualquer configuração específica da implantação. Você também pode usar o AWS Cloud Development Kit (AWS CDK) para definir seus Amazon GameLift Servers recursos. Para obter mais informações sobre o AWS CDK, consulte o Guia do AWS Cloud Development Kit (AWS CDK) desenvolvedor.

    Para gerenciar a implantação de suas AWS CloudFormation pilhas, recomendamos o uso de ferramentas e serviços de integração contínua e entrega contínua (CI/CD), como. AWS CodePipeline Essas ferramentas ajudam você a implantar automaticamente ou com aprovação sempre que você cria o binário do servidor de jogos. Com uma CI/CD ferramenta ou serviço, a implantação de recursos para uma nova versão do servidor de jogos pode ter a seguinte aparência:

    • Compile e teste o binário do servidor de jogos.

    • Faça o upload do binário paraAmazon GameLift Servers.

    • Implante novas frotas com a nova compilação.

    • Adicione as novas frotas à fila de sessões de jogo e remova as frotas com a versão de compilação anterior.

    • Quando as frotas com a compilação anterior não estiverem mais hospedando sessões de jogo ativas, exclua as pilhas do AWS CloudFormation dessas frotas.