

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 o Amazon GameLift Servers
<a name="gamelift-roadmap-hybrid"></a>

Este roteiro orienta como desenvolver uma solução de hospedagem para o 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](gamelift-intro-flavors.md).

Uma solução híbrida usa uma combinação de recursos de hospedagem, incluindo recursos baseados na Nuvem gerenciados pelo 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 o Amazon GameLift Servers Anywhere.](https://aws.amazon.com/blogs/gametech/hybrid-game-server-hosting-with-amazon-gamelift-anywhere/) Com o Amazon GameLift Servers, você pode configurar uma solução híbrida que usa componentes e processos comuns, para que seja possível 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 única compilação de servidor de jogos, integrada ao SDK do servidor do Amazon GameLift Servers, para ser implantada em todas as frotas.
+ Um único 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 compartilhada do Amazon GameLift Servers para alocar novas sessões de jogo com servidores de jogos disponíveis e equilibrar a carga em todas as frotas.
+ (Opcional) Um atendente gerente de processo, que é implantado com uma frota Anywhere, para simplificar as tarefas de gerenciamento de processos do servidor nos recursos de computação 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.
+ Uma ou mais frotas do Amazon GameLift Servers Anywhere, que usam os recursos on-premises existentes ou outros recursos de hospedagem, incluindo o gerenciamento de configuração e as ferramentas de implantação. (Opcionalmente, você pode usar o AWS Systems Manager.)

Esse roteiro apresenta um caminho simplificado para lançar com sucesso o jogo multijogador em uma solução de hospedagem híbrida com o 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 [Preparar para o início com hospedagem do Amazon GameLift Servers](gamelift_quickstart_customservers_checklist.md) para obter ajuda na preparação da solução de hospedagem para uso em nível de produção.

**Comece com o plug-in Amazon GameLift Servers**  
Se estiver desenvolvendo projetos com o Unreal Engine ou o Unity, comece a configurar o jogo para hospedagem com o plug-in Amazon GameLift Servers. 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.

## Etapa 1: Prepare o servidor de jogos para trabalhar com o Amazon GameLift Servers
<a name="gamelift-roadmap-hybrid-step1"></a>

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. A mesma funcionalidade é necessária se o servidor do jogo estiver sendo executado em uma frota gerenciada do Amazon GameLift Servers ou em uma frota Anywhere.
+ **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\$1\$1, C\$1 e Go. [Faça download do SDK do servidor para o Amazon GameLift Servers.](https://aws.amazon.com/gamelift/servers/getting-started-sdks/)
+ **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](integration-intro.md). 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 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 `ProcessReady()` do SDK do servidor.
  + Implemente as funções de retorno de chamada necessárias: `OnProcessTerminate()` e `OnStartGameSession()`. 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 `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](gamelift-build-packaging.md). 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 com uma estação de trabalho local, conforme descrito em [Configurar testes locais com o Amazon GameLift Servers Anywhere](integration-testing.md). 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.

## Etapa 2: Prepare o cliente do jogo para entrar em sessões de jogo hospedadas.
<a name="gamelift-roadmap-hybrid-step2"></a>

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](integration-intro.md). No mínimo, faça o seguinte:
  + Obtenha o AWS SDK Amazon GameLift Servers e adicione-o ao seu projeto de serviço de back-end. Consulte os [recursos do SDK do Amazon GameLift Servers para serviços de cliente](gamelift-supported.md#gamelift-supported-clients).
  + Adicione código para inicializar um cliente Amazon GameLift Servers e armazenar as principais configurações. Consulte [Configure a Amazon GameLift Servers API.](gamelift-sdk-client-api.md#gamelift-sdk-client-api-initialize).
  + Adicione funcionalidade para chamar a ação do AWS SDK `CreateGameSession()` 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](gamelift-sdk-client-api.md#gamelift-sdk-client-api-create). 

    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 para `StartGameSessionPlacement()` (ou `StartMatchmaking()`, 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](gamelift_quickstart_customservers_designbackend.md).
+ **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. 

  Durante a fase de desenvolvimento, se quiser testar como sua compilação de jogos se comporta em uma frota gerenciada do Amazon GameLift Servers, recomendamos que você também configure um [ambiente de teste baseado na Nuvem](integration-dev-iteration-cloud.md). Essa solução do Kit de ferramentas do Amazon GameLift Servers 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. 

## Etapa 3: Configure o posicionamento da sessão de jogo
<a name="gamelift-roadmap-hybrid-step3"></a>

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](queues-creating.md).
  + 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](gamelift-sdk-client-api.md#gamelift-sdk-client-api-create).
+ **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](queue-notification.md).
+ (Opcional) **Adicione componentes de criação de partidas do FlexMatch.** Para obter orientações, consulte o [guia do desenvolvedor do Amazon GameLift Servers FlexMatch](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-intro.html).

## Etapa 4: Configure uma frota Anywhere com o Amazon GameLift Servers Agent
<a name="gamelift-roadmap-hybrid-step4"></a>

Até agora, você estava trabalhando com dispositivos locais (registrados como recursos de computação de frota Anywhere) para testar e iterar os componentes do 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 Agent para gerenciar algumas das principais tarefas de gerenciamento de host no computador. Consulte mais detalhes em [Trabalhar com o Amazon GameLift Servers Agent](integration-dev-iteration-agent.md).
+ **Obtenha o Amazon GameLift Servers Agent e adicione-o ao pacote de instalação do servidor de jogos.** Obtenha e crie o código-fonte do Agente, disponível no [ GitHub repositório do Amazon GameLift Servers Agente](https://github.com/aws/amazon-gamelift-agent). 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.
  + Chama `GetComputeAuthToken()` para autenticar servidores de jogos quando eles se conectam ao serviço do Amazon GameLift Servers. 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 Agent executa essas instruções e solicita periodicamente atualizações do serviço do Amazon GameLift Servers. 
+ **Configure ou modifique a fila de sessões de jogo conforme necessário.** Crie uma fila (ou atualize uma existente) e designe um destino para a frota Anywhere implantada com o Amazon GameLift Servers Agent.
+ **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.

## Etapa 5: Crie uma frota gerenciada baseada na nuvem
<a name="gamelift-roadmap-hybrid-step5"></a>

Crie uma frota EC2 gerenciada do Amazon GameLift Servers para complementar a 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. 
+ **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. Você pode usar o mesmo software de compilação com as frotas Anywhere e gerenciadas. Consulte [Criar uma compilação personalizada do servidor de jogos para o Amazon GameLift Servers](gamelift-build-cli-uploading.md). 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ções geográficas](gamelift-compute.md#gamelift-compute-location).
+ **Crie uma frota EC2 gerenciada.** Você pode usar o Amazon GameLift Servers console ou a AWS CLI para criar uma frota 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 [Crie uma EC2 frota Amazon GameLift Servers gerenciada](fleets-creating.md). 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 Agent.
+ **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. 

## Etapa 6: Personalize as frotas
<a name="gamelift-roadmap-hybrid-step6"></a>

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 [Conecte seu servidor de jogos Amazon GameLift Servers hospedado a outros AWS recursos](gamelift-sdk-server-resources.md).
+ Determine onde você deseja posicionar geograficamente os servidores de jogo. Adicione locais remotos às suas frotas gerenciadas. Consulte [Personalizações dos recursos de hospedagem](fleets-design.md).
+ Para frotas gerenciadas, considere usar frotas Spot para reduzir custos. Consulte [Reduza os custos de hospedagem de jogos com frotas Spot](fleets-spot.md).
+ 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 [Otimize a configuração de runtime do servidor de jogos no Amazon GameLift Servers gerenciado](fleets-multiprocess.md).
+ 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](queues-design.md).
+ Para frotas gerenciadas, configure a escalabilidade automática da capacidade para atender à demanda esperada dos jogadores. Consulte [Escalar capacidade de hospedagem de jogos com o Amazon GameLift Servers](fleets-manage-capacity.md).
+ 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 [Como monitorar o Amazon GameLift Servers](monitoring-overview.md). Crie grupos de métricas para agregar analytics para todos os recursos de hospedagem.
+ Automatize a implantação usando [infraestrutura como código (IaC)](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html). Consulte [Gerencie recursos de Amazon GameLift Servers hospedagem usando CloudFormation](resources-cloudformation.md).

  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](https://docs.aws.amazon.com/cdk/v2/guide/).

  Para gerenciar a implantação de suas 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 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.