

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

# Configuração para desenvolvimento iterativo com o Amazon GameLift Servers Anywhere
<a name="integration-dev-iteration"></a>

O Amazon GameLift Servers fornece ferramentas e soluções para ajudar você a configurar um ambiente de teste hospedado para uso durante o desenvolvimento do jogo. Com essas ferramentas, você pode criar um ambiente que espelhe a experiência real dos jogadores de hospedagem gerenciada com o Amazon GameLift Servers e ofereça suporte a um processo de desenvolvimento rápido e iterativo.

Com um ambiente de teste separado, você remove a sobrecarga de uma frota gerenciada do Amazon GameLift Servers durante o teste. Não é mais necessário fazer upload de cada nova iteração de compilação do servidor de jogos, criar uma frota para ela e esperar mais de 15 minutos para que seja ativada. Em vez disso, é possível criar uma compilação, atualizar rapidamente a frota de testes com a nova compilação, iniciá-la e começar os testes.

Usando uma frota do Amazon GameLift Servers Anywhere, você pode configurar um ambiente de teste usando um dispositivo local, como a estação de trabalho de desenvolvimento. Você também pode configurar um ambiente de teste usando um recurso de hospedagem baseado em nuvem.

Configure um ambiente de teste Anywhere para desenvolver e testar uma variedade de cenários, incluindo os seguintes: 
+ Teste a integração do servidor de jogos com o SDK do servidor Amazon GameLift Servers. Você pode testar mesmo sem um cliente de jogo ativo usando chamadas AWS CLI para iniciar novas sessões de jogo e acompanhar eventos de sessões de jogos.
+ Teste as interações entre o cliente de jogo, o serviço de backend e o serviço do Amazon GameLift Servers à medida que desenvolve componentes para o jogo. Ajuste a experiência do jogador ao ingressar em um jogo.
+ Experimente o design de matchmaker do FlexMatch. Teste as variações de conjuntos de regras e outras implementações de recursos de criação de parcerias. Configure e teste o preenchimento de criação de parcerias.
+ Teste outros recursos de hospedagem do Amazon GameLift Servers, como configurações de runtime (com o Amazon GameLift Servers Agent) para gerenciamento do ciclo de vida do servidor de jogos.
+ Crie, teste e repita rapidamente para validar todos os aspectos da experiência do jogador no jogo, incluindo interações multijogador, em um ambiente hospedado ao vivo. 

Posteriormente, ao preparar o jogo para o lançamento, será necessário adicionar frotas gerenciadas do Amazon GameLift Servers para ajustar as configurações de hospedagem e testar cenários adicionais, incluindo os seguintes: 
+ Experimente e teste designs de filas de sessões de jogos, incluindo o uso de frotas com vários locais, frotas spot e sob demanda e vários tipos de instâncias.
+ Teste as opções de posicionamento de sessões de jogos com frotas gerenciadas, incluindo o uso de políticas opcionais de latência e configurações de priorização da frota.
+ Configure o ajuste de escala de capacidade para atender à demanda dos jogadores, usando opções de ajuste de escala automático ou manual.
+ Configure AWS CloudFormation com frotas Amazon GameLift Servers gerenciadas para gerenciar seus recursos de hospedagem a longo prazo.

**Fast Build Update Tool (somente para desenvolvimento)**  
Com EC2 frotas gerenciadas, para implantar uma atualização de compilação do servidor de jogos, você precisa carregar cada nova compilação Amazon GameLift Servers e criar uma nova frota para ela.   
A Fast Build Update Tool permite que você ignore essas etapas durante o desenvolvimento, economizando tempo e permitindo uma iteração de desenvolvimento mais rápida. Com essa ferramenta, você pode atualizar rapidamente os arquivos de compilação de jogos em todos os computadores de uma frota existente. A ferramenta oferece várias opções: você pode substituir uma compilação inteira do jogo ou alterar 6 arquivos específicos, além de gerenciar como reiniciar os processos do servidor de jogos após as atualizações. Ela também permite atualizar computadores individuais em uma frota.  
Para obter a Fast Build Update Tool e saber mais sobre como usá-la, acesse o repositório do Amazon GameLift Servers Toolkit para a [Fast Build Update Tool no Github](https://github.com/aws/amazon-gamelift-toolkit/tree/main/fast-build-update-tool). 

**Topics**
+ [Criar um ambiente de teste baseado em nuvem](integration-dev-iteration-cloud.md)
+ [Configurar testes locais com o Amazon GameLift Servers Anywhere](integration-testing.md)
+ [Teste a integração usando o Local do Amazon GameLift Servers](integration-testing-local.md)

# Criar um ambiente de teste baseado em nuvem
<a name="integration-dev-iteration-cloud"></a>

**nota**  
Este tópico aborda testes iterativos para jogos integrados ao SDK versão 5.x do servidor Amazon GameLift Servers. Se o jogo usa o SDK do servidor versão 4.x ou anterior, consulte [Teste a integração usando o Local do Amazon GameLift Servers](integration-testing-local.md).

Use uma frota do Amazon GameLift Servers Anywhere para compilar e testar iterativamente os componentes de jogos em um ambiente hospedado na Nuvem. Crie uma frota Anywhere com recursos de hospedagem e uma conexão com o serviço do Amazon GameLift Servers, execute os servidores de jogos neles e teste as funcionalidades do jogo conforme necessário. 

**Implante uma frota em qualquer lugar com o Amazon GameLift Servers Agent**  
Se a versão do servidor de jogos estiver integrada ao SDK 5.x ou posterior do Amazon GameLift Servers, você poderá implantá-la em uma frota baseada na Nuvem com o Amazon GameLift Servers Agent. O Agent é um processo em segundo plano que gerencia os ciclos de vida do servidor de jogos e outras tarefas em cada unidade de computação de uma frota. Essas tarefas incluem registrar a computação em uma frota Anywhere, adquirir um token de autenticação e processos de servidor de starting/stopping jogos com base em um conjunto de instruções. O Agent é controlado pela configuração de tempo de execução de uma frota, que você pode atualizar a qualquer momento durante o ciclo de vida da frota. (O Agent é implantado automaticamente em frotas gerenciadas do EC2.) Para obter mais informações e fazer o download do Agente, consulte o [Amazon GameLift Servers GitHubrepositório.](https://github.com/aws/amazon-gamelift-agent)

## Configurar testes iterativos com o Amazon EC2
<a name="integration-dev-iteration-cloud-ec2"></a>

Use o fluxo de trabalho guiado nesta [solução do kit de ferramentas do Amazon GameLift Servers]( https://github.com/aws/amazon-gamelift-toolkit/tree/main/development-instance-with-amazon-gamelift-anywhere-and-gamelift-agent) para configurar um ambiente de hospedagem baseado em Nuvem que espelhe a experiência de hospedagem gerenciada com o Amazon GameLift Servers. 

O GitHub repositório fornece um conjunto de scripts que automatizam a maioria dos processos para configurar um ambiente de teste com o Amazon GameLift Servers Anywhere e o Amazon GameLift Servers Agent. Ele também fornece orientação para atualizar o ambiente sempre que você tiver uma nova versão do servidor de jogos para testar. Você pode executar um único script que implanta um ambiente de teste com um exemplo de compilação de servidor de jogos ou seguir cada etapa para configurá-lo com sua própria compilação de servidor de jogos. 

Nesse fluxo de trabalho, você trabalhará inteiramente no Console de gerenciamento da AWS, usando AWS CloudShell para executar scripts e concluir tarefas de linha de comando. 

**nota**  
Para as tarefas deste tutorial, você precisa de um usuário de AWS conta com permissões para os seguintes serviços: Amazon GameLift Servers AWS CloudShell,, Amazon S3 AWS Systems Manager, Amazon EC2 e. AWS Identity and Access Management Os usuários com acesso administrativo à AWS conta já têm as permissões necessárias. 

O fluxo de trabalho abrange as seguintes tarefas: 
+ **Empacote uma compilação de servidor de jogos para o Amazon GameLift Servers.**O fluxo de trabalho fornece um script para compilar um exemplo de servidor de jogos C\$1\$1, que já foi integrado ao SDK para a versão do Amazon GameLift Servers 5.x do servidor e está pronto para hospedagem. Como alternativa, você pode trabalhar com seu próprio projeto de jogo se tiver concluído a integração.
+ **Configure um bucket do Amazon Simple Storage Service para armazenar compilações e dependências de servidores de jogos.** Ao produzir novas versões das compilações de jogo, você pode armazená-las no S3 e usar os scripts para atualizar a frota Anywhere para testes de jogo.
+ **Obtenha e construa o Amazon GameLift Servers Agent.** O Agent gerencia os processos do servidor de jogos em um recurso de hospedagem com base na configuração. Ele usa a mesma lógica e se comporta de forma idêntica à hospedagem do EC2 gerenciada pelo Amazon GameLift Servers. 
+ **Configure uma frota Anywhere para seus recursos de hospedagem.** Com uma frota Anywhere, você pode usar o serviço do Amazon GameLift Servers para hospedar recursos que não são gerenciados pelo Amazon GameLift Servers. Nesta etapa, você também definirá a configuração do tempo de execução, que instrui o Amazon GameLift Servers Agent sobre quando e como iniciar os processos do servidor de jogos.
+ **Configure uma instância do Amazon EC2.** Esse é o seu ambiente de teste para testes iterativos. É muito mais rápido usar uma instância do EC2 padrão em vez de uma instância totalmente gerenciada do Amazon GameLift Servers (que é otimizada para uso em nível de produção). Com uma instância do EC2 padrão, você pode atualizar o servidor do jogo de forma rápida e contínua conforme necessário.
+ **Implante a compilação do servidor de jogos e o Amazon GameLift Servers Agent na instância do Amazon EC2.**O fluxo de trabalho fornece um script que obtém a versão mais recente da compilação do jogo e todas as dependências e a instala na instância do EC2. Nesse fluxo de trabalho, as dependências incluem o Amazon GameLift Servers Agente e o CloudWatch Agente.
+ **Iniciar o o Amazon GameLift Servers Agent** Depois de instalado, o Agent inicia e começa a executar as instruções automaticamente. Isso inclui: 
  + Registre a instância do EC2 como uma computação na frota do Amazon GameLift Servers Anywhere. 
  + Estabeleça uma WebSocket conexão com o Amazon GameLift Servers serviço e obtenha a configuração de tempo de execução mais recente. 
  + Inicie os processos do servidor de jogos com base nas instruções na configuração do tempo de execução. Nesse fluxo de trabalho, o Agent é instruído a iniciar um único processo do executável do servidor de jogos. 
+ **Teste os cenários de jogo.** Com o ambiente de teste configurado e a versão mais recente do servidor de jogos instalada, você pode começar os testes. O fluxo de trabalho percorre várias etapas de teste, incluindo o início de uma sessão de jogo. Acesse os registros do servidor do CloudWatch jogo para acompanhar o progresso à medida que a sessão do jogo começa e se prepara para aceitar jogadores. 

  Ao desenvolver os componentes do jogo, incluindo um cliente de jogo e um serviço de backend do lado do cliente, você pode incluí-los nos cenários de teste. Use um cliente de jogo para solicitar uma sessão de jogo, recuperar informações de conexão do serviço do Amazon GameLift Servers e conectar-se diretamente à sessão do jogo.
+ **Implante uma nova compilação de servidor de jogos e repita os testes.** Ao desenvolver o jogo, você pode gerar novas compilações de servidores de jogos e, em seguida, implantá-las rapidamente no ambiente de teste do EC2 para testes. Faça upload delas para o bucket do Amazon S3 e use os scripts de fluxo de trabalho para atualizar o ambiente de teste.

## Transição do jogo para as frotas gerenciadas do Amazon GameLift Servers
<a name="integration-dev-iteration-cloud-transition"></a>

Depois de concluir os testes de desenvolvimento e estar pronto para se preparar para o lançamento, este é um bom momento para migrar para as frotas gerenciadas do Amazon GameLift Servers. Use frotas gerenciadas para ajustar e testar os recursos de hospedagem de jogos. Implemente a solução de posicionamento de sessões de jogo (filas e matchmakers), selecione o hardware de hospedagem ideal (incluindo frotas spot) e os locais e escolha uma estratégia para escalar a capacidade. Talvez você também queira começar a usar AWS CloudFormation para gerenciar com mais eficiência os ciclos de vida de todos os seus recursos de hospedagem de jogos, incluindo frotas, filas e matchmakers.

É necessário um esforço mínimo para fazer a transição de uma frota de testes Anywhere baseada na Nuvem para uma frota gerenciada pelo Amazon GameLift Servers. Não é necessário alterar nenhum código de jogo, e você pode reutilizar as mesmas filas e matchmakers. Realize as seguintes tarefas: 
+ **Criar um recurso de compilação do Amazon GameLift Servers.** Com uma frota de testes do Anywhere, é necessário implantar manualmente a compilação e as dependências do servidor de jogos em cada computação da frota. Com uma frota gerenciada, faça upload do pacote de compilação de jogos para o Amazon GameLift Servers, que o implanta automaticamente em todos os recursos de computação da frota. Consulte [Criar uma compilação personalizada do servidor de jogos para o Amazon GameLift Servers](gamelift-build-cli-uploading.md) para obter detalhes sobre como empacotar os arquivos de compilação de jogos e criar um recurso de compilação com arquivos em um bucket do Amazon S3.
+ **Crie uma frota gerenciada.** Crie uma frota usando o console ou a AWS CLI, especificando uma frota EC2 gerenciada. Esse tipo de frota exige configurações adicionais, incluindo a especificação do recurso de compilação e dos tipos de instância. Você pode usar a mesma configuração de tempo de execução para gerenciar o ciclo de vida do servidor de jogos em cada computação da frota. Consulte [Crie uma EC2 frota Amazon GameLift Servers gerenciada](fleets-creating.md) para obter detalhes sobre como criar uma frota gerenciada.
+ **Redirecione os aliases da frota (opcional).** Se você configurar aliases para usar com as frotas do Anywhere, poderá reutilizar os mesmos aliases para as frotas gerenciadas. Consulte [Criar um alias da Amazon GameLift Servers](aliases-creating.md) para obter detalhes sobre como criar ou atualizar um alias.

# Configurar testes locais com o Amazon GameLift Servers Anywhere
<a name="integration-testing"></a>

**nota**  
Este tópico aborda testes locais para jogos integrados ao SDK versão 5.x do servidor Amazon GameLift Servers. Se o jogo usa o SDK do servidor versão 4.x ou anterior, consulte [Teste a integração usando o Local do Amazon GameLift Servers](integration-testing-local.md).

Use uma frota Amazon GameLift Servers Anywhere e seu próprio hardware para criar e testar iterativamente os componentes do jogo em um ambiente hospedado simulado. Configure uma frota Anywhere e registre um dispositivo local para estabelecer uma conexão com o serviço do Amazon GameLift Servers. Instale a compilação do servidor de jogos no dispositivo, inicie um processo de servidor de jogos e teste a funcionalidade do jogo conforme necessário. Você pode atualizar a compilação do servidor de jogos sempre que necessário para testar cada nova iteração de compilação.

Com uma frota Anywhere, você pode testar usando a AWS CLI ou com scripts de teste. Se você integrou um cliente de jogo ao Amazon GameLift Servers, é possível executar o cliente no mesmo dispositivo local ou em um dispositivo diferente. 

Testar localmente com uma frota Anywhere é particularmente útil para testar a integração do servidor de jogos com o Amazon GameLift Servers. Você tem visibilidade total de todas as atividades de hospedagem na máquina local, bem como de eventos e dados de registro em log. 

**nota**  
Você está usando o plug-in do Amazon GameLift Servers para Unreal Engine ou Unity? Essas ferramentas incluem fluxos de trabalho guiados para configurar testes locais com uma frota Anywhere. Siga a documentação para [Plug-in para Unity: configurar testes locais com o Amazon GameLift Servers Anywhere](unity-plug-in-anywhere.md) ou [Plugin para Unreal: Hospede seu jogo localmente com Amazon GameLift Servers Anywhere](unreal-plugin-anywhere.md).

**Topics**
+ [Configurar uma frota Anywhere local](#integration-testing-anywhere-fleet)
+ [Atualizar e instalar o servidor de jogos](#integration-testing-dev)
+ [Testar atividades de sessões de jogo](#integration-testing-test)
+ [Faça iterações em seu servidor de jogos](#fleet-anywhere-iteration)
+ [Transição do jogo para as frotas gerenciadas do Amazon GameLift Servers](#fleet-anywhere-transition)

## Configurar uma frota Anywhere local
<a name="integration-testing-anywhere-fleet"></a>

Siga estas etapas para criar uma frota Anywhere para a estação de trabalho local. Para obter instruções detalhadas sobre o uso da AWS CLI ou do Console de gerenciamento da AWS forAmazon GameLift Servers, consulte. [Criar uma frota Amazon GameLift Servers Anywhere](fleets-creating-anywhere.md)

**Para criar a frota Anywhere**

1. **Crie um local personalizado para a estação de trabalho local. (AWS CLI ou console).** Um local personalizado é simplesmente um rótulo para o recurso de computação que você planeja incluir na frota Anywhere. Os nomes de locais personalizados devem começar com `custom-`. Por exemplo: `custom-my_laptop`. Consulte [Criar uma política personalizada](fleets-creating-anywhere.md#fleet-anywhere-location).

1. **Crie uma frota Anywhere (AWS CLI ou console).** Nesta etapa, crie o recurso de frota com o local personalizado para a estação de trabalho local. Consulte [Criar uma frota Anywhere](fleets-creating-anywhere.md#fleet-anywhere-create).

   Anote o valor do ID ou ARN da nova frota. Você precisará desse valor na próxima etapa.

1. **Registre sua estação de trabalho local como uma computação de frota (somente AWS CLI).** Uma frota Anywhere precisa ter pelo menos um recurso de computação para hospedar os servidores de jogos. Consulte [Adicionar um recurso de computação à frota](fleets-creating-anywhere.md#fleet-anywhere-compute). Para adicionar uma computação à frota, você precisa das seguintes informações: 
   + Um nome de recurso de computação. Cada recurso de computação em uma frota deve ter um nome exclusivo.
   + O identificador da frota Anywhere. Você pode usar o `FleetID` ou o `FleetArn`.
   + As informações de conexão do recurso de computação. Especifique um `IpAddress` ou `DnsName`. É assim que o Amazon GameLift Servers e os clientes de jogos se conectarão aos servidores de jogos.
   + Um local personalizado na frota Anywhere.

   Anote o valor de retorno do `GameLiftServiceSdkEndpoint`. Você precisará desse valor ao atualizar o servidor de jogos para funcionar em uma frota Anywhere.

## Atualizar e instalar o servidor de jogos
<a name="integration-testing-dev"></a>

Essa tarefa pressupõe que você já tenha integrado uma compilação de servidor de jogos com o SDK 5.x do servidor Amazon GameLift Servers. O processo de integração envolve adicionar o código ao servidor de jogos para que ele possa interagir com o serviço do Amazon GameLift Servers para iniciar e gerenciar sessões de jogo. 

Para uma frota Anywhere, é necessário definir manualmente determinadas configurações do servidor de jogos. Em uma frota gerenciada do Amazon GameLift Servers, essas configurações são definidas automaticamente. 

**Como preparar o servidor de jogos para uma frota Anywhere**

1. **Obtenha um token de autenticação.** O servidor de jogos deve incluir um token de autenticação em cada comunicação com o serviço do Amazon GameLift Servers. Os tokens de autenticação do Amazon GameLift Servers têm curta duração e devem ser atualizados regularmente.

   Como prática recomendada, crie um script para concluir as seguintes tarefas:
   + Chame a ação da AWS CLI. `get-compute-auth-token`
   + Armazene o valor do token retornado onde os processos do servidor de jogos possam recuperá-lo, como em uma variável de ambiente na computação local.

   Instale o script com o servidor de jogos no recurso de computação. Defina o script para ser executado antes de iniciar o primeiro processo do servidor de jogos. Enquanto os processos do servidor de jogos estiverem ativos, execute o script regularmente para manter um token de autenticação válido. Todos os processos do servidor de jogos no recurso de computação podem usar o mesmo token de autenticação.

1. **Atualize seu código de servidor de jogos de Amazon GameLift Servers.** Ao integrar o código do servidor de jogos ao SDK do servidor para o Amazon GameLift Servers, você adicionou uma chamada à ação `InitSdk()`. Quando o servidor de jogos é executado em uma frota Anywhere, essa chamada requer parâmetros adicionais do servidor. Para obter mais informações, consulte [Inicializar o processo do servidor](gamelift-sdk-server-api.md#gamelift-sdk-server-initialize) e [SDK 5.x do servidor para Amazon GameLift Servers](reference-serversdk.md) para a linguagem de desenvolvimento. Os parâmetros do servidor são:
   + `webSocketUrl`: defina esse parâmetro para o valor `GameLiftServiceSdkEndpoint`, que é retornado quando você registra uma computação na frota. 
   + `hostId`— Defina esse parâmetro com o nome de computação que você especifica ao registrar uma computação na frota Anywhere.
   + `fleetId`: defina esse parâmetro para o ID da frota Anywhere.
   + `authToken`: defina esse parâmetro como o token, que é retornado em resposta a uma solicitação para recuperar um token de autenticação para uma computação. 
   + `processId`: defina esse parâmetro para identificar um processo do servidor de jogos que está sendo executado na computação local. Cada processo simultâneo do servidor de jogos deve ter um ID de processo exclusivo.

   Os valores dos parâmetros do servidor que cada processo do servidor de jogos usa precisam ser específicos para a computação da frota do Anywhere em que o processo está sendo executado. Para obter detalhes sobre como obter os valores apropriados para um cálculo, consulte [Adicionar um recurso de computação à frota](fleets-creating-anywhere.md#fleet-anywhere-compute). Como prática recomendada, defina `webSocketUrl`, `hostId`, `fleetId` e `authToken` como variáveis de ambiente na computação local. Todos os processos do servidor executados na computação usarão esses valores. 

1. Instale a versão do servidor de jogos na computação local. Inclua todas as dependências necessárias para executar o servidor de jogos.

1. Inicie um ou mais processos do servidor de jogos em execução na computação local. Quando o processo do servidor de jogos chama a ação `ProcessReady()` do SDK do servidor, o processo está pronto para hospedar uma sessão de jogo.

## Testar atividades de sessões de jogo
<a name="integration-testing-test"></a>

Teste a integração do servidor de jogos trabalhando com sessões de jogo. Se você não tiver um cliente de jogo integrado à funcionalidade do Amazon GameLift Servers, poderá usar a AWS CLI para iniciar sessões de jogo. Teste os seguintes cenários:
+ **Crie uma sessão de jogo.** [create-game-session ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-game-session.html)Comando de chamada (ou a operação [ CreateGameSession](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateGameSession.html)da API). Especifique o ID e a localização personalizada da frota Anywhere. Essa chamada retorna um identificador exclusivo para a nova sessão de jogo.
+ **Verifique o status da sessão do jogo.**[describe-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-game-sessions.html)Comando de chamada (ou a ação [DescribeGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_DescribeGameSessions.html)da API). Especifique o ID da sessão do jogo. Essa chamada retorna informações detalhadas da sessão do jogo, incluindo seu status. As sessões de jogo no status Ativo estão prontas para os jogadores se conectarem. Para obter uma lista de todas as sessões de jogo da frota, chame o [list-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/list-game-sessions.html)comando (ou a ação da [ListGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_ListGameSessions.html)API).
+ **Conecte-se à sessão do jogo.** Se o cliente tiver a capacidade de entrar em uma sessão de jogo, use as informações de conexão incluídas nas informações da sessão do jogo.

## Faça iterações em seu servidor de jogos
<a name="fleet-anywhere-iteration"></a>

Você pode usar a mesma frota Anywhere e a mesma computação para testar outras versões da versão do servidor de jogos. 

1. **Apague a `GameSession` existente.** Se o processo do servidor de jogos travar ou não chamar `ProcessEnding()`, o Amazon GameLift Servers apagará a `GameSession` depois que o servidor de jogos parar de enviar verificações de integridade.

1. **Gere uma nova compilação de servidor de jogos.** Faça alterações no servidor de jogos e empacote uma versão revisada. 

1. **Atualize a compilação do servidor de jogos na computação local.** Sua frota Anywhere anterior ainda está ativa e seu laptop ainda está registrado como um recurso computacional na frota.

1. **Obtenha um token de autorização atualizado.** Chame o comando da [get-compute-auth-token](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/get-compute-auth-token.html)CLI e armazene o token na computação local. 

1. **Inicie um ou mais processos do servidor de jogos em execução na computação local.** Quando o processo do servidor de jogos chama `ProcessReady()`, ele está pronto para ser usado para testes.

## Transição do jogo para as frotas gerenciadas do Amazon GameLift Servers
<a name="fleet-anywhere-transition"></a>

Depois de concluir os testes de desenvolvimento e estar pronto para se preparar para o lançamento, este é um bom momento para migrar para as frotas gerenciadas do Amazon GameLift Servers. Use frotas gerenciadas para ajustar e testar os recursos de hospedagem de jogos. Implemente a solução de posicionamento de sessões de jogo (filas e matchmakers), selecione o hardware de hospedagem ideal (incluindo frotas spot) e os locais e escolha uma estratégia para escalar a capacidade. Talvez você também queira começar a usar AWS CloudFormation para gerenciar com mais eficiência os ciclos de vida de todos os seus recursos de hospedagem de jogos, incluindo frotas, filas e matchmakers.

Você precisa fazer algumas pequenas modificações para fazer a transição de uma frota de testes local do Anywhere para uma frota gerenciada pelo Amazon GameLift Servers. Você pode reutilizar as mesmas filas e matchmakers. Realize as seguintes tarefas: 
+ **Altere a chamada de código do servidor de jogos para `InitSdk()`.** Remova os parâmetros do servidor. Para uma frota gerenciada, o Amazon GameLift Servers acompanha automaticamente essas informações.
+ **Criar um recurso de compilação do Amazon GameLift Servers.** Com uma frota de testes do Anywhere, é necessário implantar manualmente a compilação e as dependências do servidor de jogos em cada computação da frota. Com uma frota gerenciada, você cria e carrega o pacote de compilação de jogos no Amazon GameLift Servers, que o implanta automaticamente em todas as computações da frota. Consulte [Criar uma compilação personalizada do servidor de jogos para o Amazon GameLift Servers](gamelift-build-cli-uploading.md) para obter detalhes sobre como empacotar os arquivos de compilação de jogos e criar um recurso de compilação com arquivos em um bucket do Amazon S3. Não inclua scripts que registrem uma computação e obtenham um token de autenticação, pois o Amazon GameLift Servers gerencia automaticamente essas tarefas com frotas gerenciadas.
+ **Crie uma frota gerenciada.** Crie uma frota usando o console ou a AWS CLI, especificando uma frota gerenciada pelo EC2. Esse tipo de frota exige configurações adicionais, incluindo a especificação do recurso de compilação e dos tipos de instância. Você também precisa definir uma configuração de tempo de execução para gerenciar o ciclo de vida do servidor de jogos em cada computação da frota. Consulte [Crie uma EC2 frota Amazon GameLift Servers gerenciada](fleets-creating.md) para obter detalhes sobre como criar uma frota gerenciada.
+ **Redirecione os aliases da frota (opcional).** Se você configurar aliases para usar com as frotas do Anywhere, poderá reutilizar os mesmos aliases para as frotas gerenciadas. Consulte [Criar um alias da Amazon GameLift Servers](aliases-creating.md) para obter detalhes sobre como criar ou atualizar um alias.

# Teste a integração usando o Local do Amazon GameLift Servers
<a name="integration-testing-local"></a>

**nota**  
Este tópico aborda testes para jogos integrados ao SDK somente para a versão 3.x e 4.x do Amazon GameLift Servers. O pacote de SDK do seu servidor inclui uma versão compatível do Amazon GameLift Servers Local. Se você estiver usando o SDK do servidor versão 5.x, consulte [Teste local com GameLift Server SDK 5.x](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/integration-testing-local.html) para testes locais com uma frota Amazon GameLift Servers Anywhere. Para obter orientação sobre a migração do SDK 4.x para o 5.x, consulte [Migrar para o GameLift Server SDK 5.x](https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-serversdk5-migration.html).

Use o Amazon GameLift Servers Local para executar uma versão limitada do serviço gerenciado do Amazon GameLift Servers em um dispositivo local e testar a integração do jogo com ele. Esta ferramenta é útil ao fazer o desenvolvimento iterativo na integração do jogo. Fazer upload de cada nova compilação no Amazon GameLift Servers e configurar uma frota para hospedar o jogo é uma alternativa que poderá levar vários minutos ou mais a cada vez. 

Com o Amazon GameLift Servers Local, é possível verificar o seguinte:
+ O servidor de jogos está integrado corretamente ao Server SDK e se comunicando corretamente com o serviço do Amazon GameLift Servers para iniciar novas sessões de jogos, aceitar novos jogadores e relatar integridade e status. 
+ O cliente do jogo está integrado corretamente ao AWS SDK para o Amazon GameLift Servers e é capaz de recuperar informações sobre sessões de jogos existentes, iniciar novas sessões de jogos, adicionar jogadores a jogos e se conectar à sessão do jogo.

Amazon GameLift Servers O Amazon GameLift Servers Local é uma ferramenta da linha de comando que inicia uma versão autocontida do serviço do. Amazon GameLift Servers O Local também fornece um log de eventos em execução de inicialização do processo do servidor, verificações de integridade e chamadas à API, além de respostas. Amazon GameLift Servers O Local reconhece um subconjunto das ações do SDK AWS para o Amazon GameLift Servers. Você pode fazer chamadas pela AWS CLI ou pelo cliente do jogo. Todas as ações de API são realizadas localmente, assim como acontece no web service do Amazon GameLift Servers.

Cada processo do servidor deve hospedar apenas uma única sessão de jogo. A sessão do jogo é o executável que você usa para se conectar ao Amazon GameLift Servers Local. Quando a sessão do jogo estiver concluída, você deverá chamar `GameLiftServerSDK::ProcessEnding` e sair do processo. Ao testar localmente com o Amazon GameLift Servers Local, você pode iniciar vários processos de servidor. Cada processo se conectará ao Amazon GameLift Servers Local. Em seguida, você pode criar uma sessão de jogo para cada processo do servidor. Quando sua sessão de jogo terminar, o processo do servidor de jogos deverá sair. Em seguida, você deve iniciar manualmente outro processo do servidor. 

O Amazon GameLift Servers local oferece os seguintes APIs:
+ CreateGameSession
+ CreatePlayerSession
+ CreatePlayerSessions
+ DescribeGameSessions
+ DescribePlayerSessions

## Configurar o Amazon GameLift Servers local
<a name="integration-testing-local-start"></a>

O Amazon GameLift Servers Local é fornecido como um arquivo `.jar` executável que acompanha o [Server SDK](https://aws.amazon.com/gamelift/servers/getting-started/). Ele pode ser executado no Windows ou no Linux e usado com qualquer linguagem compatível com o Amazon GameLift Servers. Para o SDK versão 4.0.2, você pode baixá-lo nas [versões oficiais do GitHub.](https://github.com/amazon-gamelift/amazon-gamelift-servers-csharp-server-sdk/releases) O arquivo GameLiftLocal.jar está incluído no artefato Gamelift-CSharp-ServersDK-4.0.2.zip.

Para executar o Local, você também deve ter instalado os itens a seguir.
+ Uma compilação do SDK do servidor para a versão do Amazon GameLift Servers 3.1.5 a 4.x.
+ Java 8 

## Testar um servidor de jogos
<a name="integration-testing-local-server"></a>

Se quiser testar apenas o servidor de jogos, é possível usar a AWS CLI para simular chamadas do cliente do jogo ao serviço do Amazon GameLift Servers Local. Isso verifica se o servidor de jogos está funcionando conforme esperado com o seguinte: 
+ O servidor de jogos é executado corretamente e inicializa o SDK do servidor para o Amazon GameLift Servers.
+ Como parte do processo de inicialização, o servidor de jogos notifica o Amazon GameLift Servers de que o servidor está pronto para hospedar sessões de jogos.
+ O servidor de jogos envia o status da integridade para o Amazon GameLift Servers a cada minuto durante a execução.
+ O servidor de jogos responde a solicitações para iniciar uma nova sessão de jogo.

1. **Inicie o Amazon GameLift Servers Local.**

   Abra uma janela de prompt de comando, navegue até o diretório que contém o arquivo `GameLiftLocal.jar` e o execute. Por padrão, o Local escuta solicitações de clientes de jogos na porta 8080. Para especificar um número de porta diferente, use o parâmetro `-p`, conforme mostrado no seguinte exemplo:

   ```
   java -jar GameLiftLocal.jar -p 9080
   ```

   Após a inicialização do Local, você vê logs indicando que dois servidores locais foram iniciados, um escutando o servidor de jogos e um escutando o cliente do jogo ou a AWS CLI. Os logs continuam informando a atividade nos dois servidores locais, inclusive a comunicação com e de componentes do jogo.

1. **Inicie o servidor de jogos.**

   Inicie o servidor de jogos integrado ao Amazon GameLift Servers localmente. Você não precisa alterar o endpoint do servidor de jogos. 

   Na janela do prompt de comando do Local, as mensagens de log indicam que o servidor de jogos se conectou ao serviço do Amazon GameLift Servers Local. Isso significa que o servidor de jogos inicializou com êxito o Amazon GameLift Servers Server SDK (com `InitSDK()`). Ele chamou `ProcessReady()` com os caminhos de log mostrados e, se for bem-sucedido, estará pronto para hospedar uma sessão de jogo. Embora o servidor de jogos esteja em execução, o Amazon GameLift Servers registra em log o relatório de status da integridade do servidor de jogos. O seguinte exemplo do sistema de mensagens de log mostra um servidor de jogos integrado com êxito:

   ```
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK connected: /127.0.0.1:64247 
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK pid is 17040, sdkVersion is 3.1.5 and sdkLanguage is CSharp
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - NOTE: Only SDK versions 3.1.5 and above are supported in GameLiftLocal!
   16:50:53,451  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady received from: /127.0.0.1:64247 and ackRequest requested? true
   16:50:53,543  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady data: logPathsToUpload: "C:\\game\\logs"
   logPathsToUpload: "C:\\game\\error"
   port: 1935
           
   16:50:53,544  INFO || - [HostProcessManager] nioEventLoopGroup-3-1 - Registered new process true, true,
   16:50:53,558  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onReportHealth received from /127.0.0.1:64247 with health status: healthy
   ```

   Entre as mensagens de erro e aviso em potencial estão as seguintes:
   + Erro: "ProcessReady não encontrou um processo com pID: *<ID do processo>*\$1 O InitSDK() foi invocado?"
   + Aviso: "ProcessReady não encontrou um processo com pID: *<ID do processo>*\$1 ProcessReady(...) é invocado mais de uma vez?"

1. **Inicie o AWS CLI.**

   Assim que o servidor de jogos chamar `ProcessReady()` com êxito, você poderá começar a fazer chamadas de cliente. Abra outra janela do prompt de comando e inicie a ferramenta AWS CLI. A AWS CLI, por padrão, usa o endpoint de serviço web do Amazon GameLift Servers. Você deve substituí-lo pelo endpoint do Local em todas as solicitações usando o parâmetro `--endpoint-url`, conforme mostrado na solicitação de exemplo a seguir.

   ```
   AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080  --fleet-id fleet-123
   ```

   Na janela do prompt de comando da AWS CLI, os comandos `AWS gamelift` resultam em respostas conforme documentado em [ Referência de comando da AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/gamelift).

1. **Crie uma sessão de jogo.**

   Com a AWS CLI, envie uma solicitação [CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html). A solicitação deve seguir a sintaxe esperada. Para Local, o parâmetro `FleetId` pode ser definido como qualquer string válida (`^fleet-\S+`).

   ```
   AWS gamelift create-game-session --endpoint-url http://localhost:9080 --maximum-player-session-count 2 --fleet-id
       fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
   ```

   Na janela do prompt de comando do Local, as mensagens de log indicam que o Amazon GameLift Servers Local enviou para o servidor de jogos uma chamada de retorno `onStartGameSession`. Se uma sessão de jogo for criada com êxito, o servidor de jogos responderá invocando `ActivateGameSession`.

   ```
   13:57:36,129  INFO || - [SDKInvokerImpl]
           Thread-2 - Finished sending event to game server to start a game session:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6.
           Waiting for ack response.13:57:36,143  INFO || - [SDKInvokerImpl]
           Thread-2 - Received ack response: true13:57:36,144  INFO || -
           [CreateGameSessionDispatcher] Thread-2 - GameSession with id:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6
           created13:57:36,227  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate received from: /127.0.0.1:60020 and ackRequest
           requested? true13:57:36,230  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate data: gameSessionId:
           "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890"
   ```

   Na janela da AWS CLI, o Amazon GameLift Servers responde com um objeto de sessão do jogo, incluindo um ID de sessão do jogo. O novo status da sessão do jogo é Ativação. O status mudará para Ativo assim que o servidor de jogos invocar ActivateGameSession. Se você quiser ver o status alterado, use a AWS CLI para chamar `DescribeGameSessions()`.

   ```
   {
       "GameSession": {
         "Status": "ACTIVATING",
         "MaximumPlayerSessionCount": 2,
         "FleetId": "fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
         "GameSessionId": "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890",
         "IpAddress": "127.0.0.1",
         "Port": 1935
       }
   }
   ```

## Testar um servidor e um cliente de jogo
<a name="integration-testing-local-client"></a>

Para verificar a integração completa do jogo, inclusive a conexão de jogadores com jogos, você pode executar o servidor de jogos e o cliente localmente. Isso permite testar chamadas programáticas pelo cliente do jogo para o Amazon GameLift Servers Local. Você pode verificar as seguintes ações: 
+ O cliente do jogo está fazendo solicitações do AWS SDK com êxito para o serviço do Amazon GameLift Servers Local, inclusive para criar sessões de jogos, recuperar informações sobre sessões de jogos existente e criar sessões de jogadores.
+ O servidor de jogos está validando corretamente jogadores quando eles tentam participar de uma sessão do jogo. Para jogadores validados, o servidor de jogos pode recuperar dados do jogador (se implementado).
+ O servidor de jogos informa uma conexão perdida quando um jogador deixa o jogo.
+ O servidor de jogos informa o encerramento de uma sessão do jogo.

1. **Inicie o Amazon GameLift Servers Local.**

   Abra uma janela de prompt de comando, navegue até o diretório que contém o arquivo `GameLiftLocal.jar` e o execute. Por padrão, o Local escuta solicitações de clientes de jogos na porta 8080. Para especificar um número de porta diferente, use o parâmetro `-p`, conforme mostrado no seguinte exemplo.

   ```
   ./gamelift-local -p 9080
   ```

   Após a inicialização do Local, você vê logs mostrando que dois servidores locais foram iniciados, um escutando o servidor de jogos e um escutando o cliente do jogo ou a AWS CLI.

1. **Inicie o servidor de jogos.**

   Inicie o servidor de jogos integrado ao Amazon GameLift Servers localmente. Consulte [Testar um servidor de jogos](#integration-testing-local-server) para obter mais detalhes sobre logs de mensagens.

1. **Configure o cliente do jogo do Local e o inicie.**

   Para usar o cliente do jogo com o serviço do Amazon GameLift Servers Local, é necessário fazer as seguintes alterações na configuração do cliente do jogo, conforme descrito em [Configure a Amazon GameLift Servers API.](gamelift-sdk-client-api.md#gamelift-sdk-client-api-initialize):
   + Altere o objeto `ClientConfiguration` a fim de apontar para o endpoint do Local, como `http://localhost:9080`.
   + Defina um valor de ID da frota de destino. Para Local, você não precisa de um ID de frota real; defina a frota de destino como qualquer string válida (`^fleet-\S+`), como `fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d`.
   + Defina credenciais da AWS. Para Local, você não precisa de credenciais da AWS reais; você pode definir a chave de acesso e a chave secreta como qualquer string. 

   ​Na janela do prompt de comando do Local, assim que você iniciar o cliente do jogo, as mensagens de log deverão indicar que ele inicializou `GameLiftClient` e que se comunicou com êxito com o serviço do Amazon GameLift Servers. 

1. **O cliente do jogo teste chama o serviço do Amazon GameLift Servers.**

   Verifique se o cliente do jogo foi bem-sucedido fazendo qualquer uma ou todas as seguintes chamadas à API:
   + [CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html)
   + [DescribeGameSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html)
   + [CreatePlayerSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSession.html)
   + [CreatePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSessions.html)
   + [DescribePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.html)

   Na janela do prompt de comando do Local, somente chamadas para `CreateGameSession()` resultam em mensagens de log. Mensagens de log mostram quando o Amazon GameLift Servers Local solicita que o servidor de jogos inicie uma sessão do jogo (`onStartGameSession` retorno de chamada) e recebe um `ActivateGameSession` bem-sucedido quando o servidor de jogos o invoca. Na janela da AWS CLI, todas as chamadas à API resultam em respostas ou mensagens de erro conforme documentado. 

1. **Verifique se o servidor de jogos está validando novas conexões de jogador.**

   Depois de criar uma sessão de jogo e uma sessão de jogador, estabeleça uma conexão direta com a sessão do jogo.

   Na janela do prompt de comando do Local, as mensagens de log devem mostrar que o servidor de jogos enviou uma solicitação `AcceptPlayerSession()` para validar a nova conexão do jogador. Se você usar a AWS CLI para chamar `DescribePlayerSessions()`, o status da sessão do jogador deverá mudar de Reservado para Ativo.

1. **Verifique se o servidor de jogos está informando o status do jogo e do jogador para o serviço do Amazon GameLift Servers.**

   Para que o Amazon GameLift Servers gerencie a demanda do jogador e informe corretamente as métricas, o servidor de jogos deve informar diversos status ao Amazon GameLift Servers. Verifique se o Local está registrando em log eventos relacionados às ações a seguir. Também convém usar a AWS CLI para rastrear alterações feitas no status.
   + O jogador se desconecta de uma sessão de jogo – As mensagens de log do Local devem mostrar que o servidor de jogos chama . Uma chamada à AWS CLI para `DescribePlayerSessions()` deve refletir uma alteração feita no status de `Active` para `Completed`. Também convém chamar `DescribeGameSessions()` para verificar se a contagem de jogadores atual da sessão do jogo diminui em um.
   + **A sessão do jogo termina** – As mensagens de log do Local do Amazon GameLift Servers devem mostrar que o servidor de jogos chama `TerminateGameSession()`. 
**nota**  
A orientação anterior era chamar `TerminateGameSession()` ao encerrar uma sessão de jogo. Esse método foi descontinuado com o Server SDK do Amazon GameLift Servers v4.0.1. Consulte [Encerrar uma sessão de jogo](gamelift-sdk-server-api.md#gamelift-sdk-server-shutdownsession). 
   + **O processo do servidor foi finalizado** – As mensagens de log do Local do Amazon GameLift Serversdevem mostrar que o servidor de jogos chama `ProcessEnding()`. Uma chamada à AWS CLI para `DescribeGameSessions()` deve refletir uma alteração feita no status de `Active` para `Terminated` (ou `Terminating`).

## Variações com o local
<a name="integration-testing-local-special"></a>

Ao usar o Amazon GameLift Servers Local, lembre-se do seguinte:
+ Diferentemente do web service do Amazon GameLift Servers, o Local não rastreia o status da integridade do servidor e inicia o retorno de chamada `onProcessTerminate`. O Local simplesmente deixa de registrar em log relatórios de integridade do servidor de jogos.
+ Para chamadas para o AWS SDK, os IDs da frota não são validados e podem ser qualquer valor de string que atenda aos requisitos de parâmetro (`^fleet-\S+`).
+ Os IDs da sessão do jogo criada com o Local têm uma estrutura diferente. Eles incluem a string `local`, conforme mostrado aqui:

  ```
  arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6
  ```