Roteiro de desenvolvimento para hospedagem com um EC2 gerenciado pelo Amazon GameLift Servers
Este roteiro orienta como desenvolver uma solução de hospedagem EC2 gerenciada pelo Amazon GameLift Servers para seu jogo multijogador. O Amazon GameLift Servers oferece várias opções de hospedagem; para maiores informações sobre essas opções, consulte Opções de hospedagem de jogos do Amazon GameLift Servers.
Com a hospedagem gerenciada do Amazon GameLift Servers, o servidor de jogos é hospedado em recursos de computação virtual baseados na Nuvem AWS, que o Amazon GameLift Servers possui e opera com base na configuração. Você obtém a segurança, a confiabilidade e a disponibilidade global das instâncias do Amazon Elastic Compute Cloud (Amazon EC2), que são ainda mais otimizadas para uso com hospedagem de jogos multijogador. O Amazon GameLift Servers simplifica o gerenciamento de hospedagem com ferramentas como implantações automáticas de servidores, tratamento do ciclo de vida e ajuste de escala automático de capacidade.
Uma solução gerenciada do Amazon GameLift Servers é composta pelos seguintes componentes:
-
Uma compilação de servidor de jogos, integrada ao SDK do servidor do Amazon GameLift Servers, para ser implantada em todas as frotas.
-
Um cliente de jogo e um serviço de backend, integrados ao SDK da AWS, para interagir com o serviço do Amazon GameLift Servers e solicitar sessões de jogo.
-
Uma fila do Amazon GameLift Servers ou outro mecanismo de colocação para alocar novas sessões de jogo com servidores de jogos disponíveis em todas as frotas.
-
(Opcional) Um matchmaker do FlexMatch para criar partidas multijogador e configurar sessões de jogo para elas.
-
Uma ou mais frotas gerenciadas pelo Amazon GameLift Servers, que usam instâncias do Amazon Elastic Compute Cloud (Amazon EC2) otimizadas para hospedagem de jogos multijogador.
Esse roteiro apresenta um caminho simplificado para colocar o jogo multijogador em funcionamento com êxito com a hospedagem do Amazon GameLift Servers gerenciado pelo EC2. 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 Preparar para o início com hospedagem do Amazon GameLift Servers para obter ajuda na preparação da solução de hospedagem para uso em nível de produção.
Comece com o plug-in do Amazon GameLift Servers para Unreal Engine e Unity
Para uma implantação mais rápida, experimente o plug-in do Amazon GameLift Servers
Adicione a funcionalidade ao servidor de jogos para que ele possa se comunicar com o serviço do Amazon GameLift Servers quando for implantado para hospedagem.
-
Obtenha o SDK (versão 5.x) do servidor do Amazon GameLift Servers para o projeto de jogo. O SDK do servidor está disponível em C++, C# e Go. Faça download dos SDKs de um servidor do Amazon GameLift Servers
. -
Modifique o código do servidor de jogos para adicionar a funcionalidade do SDK do servidor. Para obter orientações, consulte Prepare um jogo para hospedagem com o Amazon GameLift Servers. No mínimo, faça o seguinte:
-
Adicione código para inicializar o SDK do Amazon GameLift Servers e estabelecer uma conexão do WebSocket com o serviço do Amazon GameLift Servers. Use a ação do SDK do servidor
InitSdk(). -
Adicione o código para informar ao serviço do Amazon GameLift Servers quando o processo do servidor estiver pronto para hospedar sessões de jogo. Use a ação do SDK do servidor
ProcessReady(). -
Implemente as funções de retorno de chamada necessárias:
OnProcessTerminate()eOnStartGameSession(). Com essas funções, os processos do servidor de jogos podem manter uma conexão com o serviço do Amazon GameLift Servers, iniciar uma sessão de jogo quando solicitado pelo Amazon GameLift Servers e responder a um prompt para encerrar o processo do servidor de jogos. -
Adicione o código para informar ao serviço do Amazon GameLift Servers quando o processo do servidor estiver encerrando uma sessão de jogo. Use a ação do SDK do servidor
ProcessEnding().
-
-
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 do Amazon GameLift Servers Anywhere para uma estação de trabalho local, conforme descrito em Configurar 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 CLI da AWS para solicitar uma nova sessão de jogo e verificar se o serviço do Amazon GameLift Servers solicita com sucesso 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 backend que serve como intermediário entre o cliente do jogo e o serviço do 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 backend se comunica com o serviço do Amazon GameLift Servers e fornece as informações de conexão para 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 Prepare um jogo para hospedagem com o Amazon GameLift Servers. No mínimo, faça o seguinte:
-
Obtenha o SDK da AWS para o Amazon GameLift Servers e adicione-o ao projeto de serviço de backend. Consulte os recursos do SDK do Amazon GameLift Servers para serviços de cliente.
-
Adicione código para inicializar um cliente Amazon GameLift Servers e armazenar as principais configurações. Consulte Configure a Amazon GameLift Servers API..
-
Adicione a funcionalidade para chamar a ação
CreateGameSession()do SDK da AWS e fornecer informações de conexão da sessão de jogo a um cliente de jogo. Consulte Criar uma sessão de jogo em uma frota específica.Chamar
CreateGameSession()é um ponto de partida conveniente para solicitar novas sessões de jogo. Depois de instalar um sistema de posicionamento de sessões de jogo (consulte a Etapa 3), você substituirá esse código por uma chamada paraStartGameSessionPlacement()(ouStartMatchmaking(), se estiver usando o FlexMatch).Para obter orientação sobre como projetar o serviço de backend, consulte Crie um serviço de backend para Amazon GameLift Servers.
-
-
Adicione a funcionalidade ao cliente de jogo que permite que os jogadores participem de uma sessão de jogo hospedada. O cliente de jogo faz solicitações para o serviço de backend, mas 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 do Amazon GameLift Servers Anywhere com uma estação de trabalho local para testes.
Para um desenvolvimento iterativo rápido ou ao trabalhar com equipes de várias pessoas, recomendamos que você configure um ambiente de teste baseado na nuvem. Essa solução do Kit de ferramentas do Amazon GameLift Servers imita o comportamento de uma frota gerenciada pelo Amazon GameLift Servers, mas permite que você atualize as compilações do servidor de jogos com o mínimo de tempo de resposta.
Personalize como você deseja que o Amazon GameLift Servers processe as solicitações de novas sessões de jogo e localize servidores de jogos disponíveis para hospedá-las. O Amazon GameLift Servers rastreia 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, o Amazon GameLift Servers busca o “melhor posicionamento possível” com base em um conjunto de prioridades definidas, como latência mínima, custo e disponibilidade.
-
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()emStartGameSessionPlacement(). 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 consultar 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 criação de partidas do FlexMatch. Para obter orientações, consulte o guia do desenvolvedor do Amazon GameLift Servers FlexMatch.
Até agora, você trabalhou com frotas do Anywhere autogerenciadas para testar e iterar os componentes do jogo e ajustou o posicionamento da sessão de jogo.A parte final da solução é configurar o tipo de recursos de hospedagem necessários para um sistema de produção. Para começar a planejar e configurar a produção, é recomendável fazer a transição para trabalhar com uma frota gerenciada do Amazon GameLift Servers.
-
Empacote a compilação do servidor de jogos e faça o upload no Amazon GameLift Servers. Crie um script de instalação com seus arquivos de compilação, dependências e software de suporte. Consulte Criar uma compilação personalizada do servidor de jogos para o Amazon GameLift Servers. É possível fazer o upload da compilação para o Amazon GameLift Servers usando o console ou a CLI da AWS.
Antes de fazer upload da compilação, decida em qual Região da AWS você quer criar uma frota. É necessário fazer upload da compilação para a mesma região. Para saber mais sobre como escolher a localização da frota, consulte Localizações geográficas.
-
Crie uma frota EC2 gerenciada. Quando você cria uma frota, o Amazon GameLift Servers começa imediatamente a implantar a compilação de servidor de jogos para hospedagem. Você pode configurar vários aspectos de uma frota gerenciada. Para obter orientações, consulte Criar uma frota EC2 gerenciada pelo Amazon GameLift Servers. 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 para a frota. 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 as frotas gerenciadas à fila. Na fila de sessões de jogo, substitua as frotas do Anywhere as frotas gerenciadas.
-
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 os recursos de hospedagem gerenciada. Algumas das decisões a serem consideradas incluem:
Considere adicionar frotas spot para reduzir custos. Consulte Reduza os custos de hospedagem de jogos com frotas Spot .
-
Se o servidor do jogo precisar comunicar outros recursos da AWS, configure os perfis do IAM para gerenciar o acesso. Consulte Conecte seu servidor de jogos hospedado pelo Amazon GameLift Servers a outros recursos da AWS.
Determine onde você deseja posicionar geograficamente os servidores de jogo. Adicione locais remotos às suas frotas gerenciadas. Consulte Personalizações dos recursos de hospedagem.
Otimize o desempenho da frota selecionando um tipo e um tamanho de instância e configurando o tempo de execução para executar vários processos do servidor. Consulte Otimize a configuração de runtime do servidor de jogos no Amazon GameLift Servers gerenciado.
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 Personalizar uma fila de sessões de jogo.
-
Configure o ajuste de escala automático da capacidade para atender à demanda esperada dos jogadores. Consulte Escalar capacidade de hospedagem de jogos com o Amazon GameLift Servers.
-
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 Como monitorar o Amazon GameLift Servers.
-
Automatize a implantação usando infraestrutura como código (IaC). Consulte Gerencie recursos de hospedagem do Amazon GameLift Servers usando CloudFormation.
O Amazon GameLift Servers oferece suporte para o uso de modelos do AWS CloudFormation para qualquer configuração específica da implantação. Também é possível usar o AWS Cloud Development Kit (AWS CDK) para definir os recursos do Amazon GameLift Servers. Para obter mais informações sobre o AWS CDK, consulte o Guia do desenvolvedor do AWS Cloud Development Kit (AWS CDK).
Para gerenciar a implantação de suas pilhas do CloudFormation, é recomendável o uso de ferramentas e serviços de integração e entrega contínuas (CI/CD), como o 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 ferramenta ou serviço de CI/CD, a implantação de recursos para uma nova versão do servidor de jogos pode ser assim:
-
Compile e teste o binário do servidor de jogos.
-
Faça o upload do binário para Amazon 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 CloudFormation dessas frotas.
-