Tutorial: Integração rápida com o wrapper do Amazon GameLift Servers - Amazon GameLift Servers

Tutorial: Integração rápida com o wrapper do Amazon GameLift Servers

Bem-vindo ao tutorial de integração do Amazon GameLift Servers. Neste tutorial, você implanta rapidamente seu servidor de jogos para ser hospedado em uma frota de recursos computacionais baseados em nuvem. Use este tutorial para evitar o trabalho de integrar o SDK do servidor para o Amazon GameLift Servers ao código do jogo e, em vez disso, implante seu jogo com a funcionalidade mínima para se comunicar com o serviço do Amazon GameLift Servers e executar sessões de jogo. Você configurará uma solução básica de hospedagem e a usará para experimentar toda a gama de recursos, como escalonamento automático e criação de partidas. Também é uma ótima maneira de hospedar um protótipo do seu jogo como parte de uma demonstração ao vivo ou para testes.

Principais benefícios desse método de integração:

  • Implante rapidamente seu servidor de jogos para hospedagem rápida.

  • Nenhuma alteração no código do jogo e nenhuma modificação necessária.

  • Use esse método com qualquer executável de jogo, independentemente do mecanismo de jogo.

  • Explore todas as ferramentas de gerenciamento do Amazon GameLift Servers, incluindo o monitoramento da atividade da sessão de jogo e a integridade da hospedagem.

nota

O wrapper é destinado à avaliação e ao uso básico na produção. Recursos avançados, como gerenciamento detalhado da sessão do jogador, exigem uma integração completa do SDK do servidor.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma Conta da AWS com permissões adequadas

  • AWS CLI instalada

  • Go 1.18+

  • Um servidor de jogos multijogador executável

  • Make (Linux/Mac)

  • Git instalado com uma conta ativa

Visão geral

Neste tutorial, você vai:

  1. Obtenha e construa o wrapper

  2. Prepare a versão do jogo

  3. Configure o wrapper

  4. Faça upload da compilação do servidor de jogos

  5. Crie a frota gerenciada do EC2

  6. Criar e conectar-se a uma sessão do jogo

  7. Monitore e gerencie seus servidores de jogos

  8. Dimensione seus servidores de jogos

Etapa 1: Obtenha e construa o wrapper do servidor de jogos

Use os comandos a seguir para obter a fonte do wrapper do servidor de jogos e criar o wrapper. Esses comandos usam SSH, mas você também pode acessar diretamente o repositório do Github.

Windows

> git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git > cd amazon-gamelift-servers-game-server-wrapper > powershell -file .\build.ps1

Mac e Linux

$ git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git $ cd amazon-gamelift-servers-game-server-wrapper $ make

Em uma compilação bem-sucedida, um diretório “de saída” é adicionado ao amazon-gamelift-servers-game-server-wrapper. Nesse diretório, há três pastas, uma para cada opção de frota de hospedagem compatível, que contêm um conjunto de artefatos de construção. Para este tutorial, você está implantando em frotas gerenciadas do EC2, então você usará a pasta gamelift-servers-managed-ec2.

Etapa 2: Preparar sua compilação do servidor do jogo

Nesta etapa, você prepara os arquivos de compilação do servidor do jogo para upload na Amazon GameLift Servers.

Crie o diretório de jogos.

Agora, prepare um diretório de jogos na sua máquina local. Esse diretório deve conter todos os arquivos que você precisa para executar seu servidor de jogos com o Amazon GameLift Servers. Isso inclui o wrapper do servidor do jogo, a compilação do servidor do jogo e o config.yaml que faz o wrapper funcionar com o servidor do jogo.

Use as seguintes etapas:

  1. Frota gerenciada do EC2 Na pasta de saída do wrapper do servidor do jogo, encontre o artefato de construção para implantação em uma frota EC2 gerenciada. A compilação será gravada em um diretório de saída, conforme indicado aqui: out\linux\amd64\gamelift-servers-managed-ec2.

  2. Copie o executável do servidor do jogo e todos os arquivos associados necessários para execução na pasta gamelift-servers-managed-ec2. Você pode ter diretórios aninhados conforme necessário.

Veja um exemplo de estrutura de diretório:

gamelift-servers-managed-ec2 │-- config.yaml │-- amazon-gamelift-servers-game-server-wrapper │-- MyGame │ │-- server-executable.exe │ │-- my-game-settings │ │ ......

Etapa 3: configurar o wrapper para sua frota

O Amazon GameLift Servers gerencia o ciclo de vida das instâncias computacionais de uma frota, criando novas instâncias com a criação do servidor instalada e reciclando instâncias conforme necessário. O serviço gerencia o ciclo de vida do processo do servidor de jogos que é executado em cada instância. Uma frota EC2 gerenciada pode ter instâncias em vários locais para oferecer suporte aos jogadores onde quer que estejam.

Edite o arquivo config.yaml para configurar o wrapper para registro, configuração de portas e inicialização do servidor.

  1. Defina as configurações de log. O wrapper do servidor de jogos gera mensagens de log para cada processo do servidor de jogos. Por padrão, o nível de log é definido como depurado para obter o máximo de detalhamento. Isso é muito útil durante a configuração e a solução de problemas e determina o quão detalhadas são as mensagens de log - nesse caso, as mais detalhadas. As opções incluem depuração, informações, aviso e erro (menos detalhado).

  2. Especifique o caminho para o diretório de log do servidor do jogo. O caminho padrão para os registros do servidor do jogo é ./game-server-logs. Esse diretório contém todos os registros gerados pelo seu servidor de jogo e cada instância os tem. Os registros são enviados automaticamente para Amazon GameLift Servers onde são acessados na guia Eventos. Consulte a seção de solução de problemas para maiores detalhes.

  3. Defina a configuração da porta de rede. Defina a porta do jogo para o que você preferir. Para este tutorial, especifique apenas uma porta, pois você criará uma frota que executa somente um processo de servidor de jogo simultâneo por instância. Se você decidir executar vários processos ao mesmo tempo, precisará configurar portas suficientes para cada processo simultâneo. O valor padrão é 37016, conforme mostrado no arquivo de configuração, mas, em geral, para frotas que usam compilações Linux, use as portas 22 e 1026-60000. Para frotas que usam compilações Windows, use as portas 1026-60000.

  4. Configure o caminho para o executável do servidor do jogo. Para o ./MyGame/my-server-executable.exe personalizar o caminho para o executável do servidor de jogos com o nome e a localização reais do mesmo. Esse é o ponto de entrada para iniciar o servidor do jogo.

  5. Configure os argumentos do servidor do jogo. No mínimo, especifique um argumento -port e use o mesmo valor de porta do jogo que você definiu anteriormente. O valor “pos” 0 indica que esse é o primeiro argumento. Adicione outros argumentos, conforme necessário. Esses argumentos são passados para o servidor do jogo quando ele é lançado, permitindo que você configure seu comportamento em runtime.

    1. Argumento: "--port"

    2. Valor: .: "{{.port number here}}"

    3. Posição: 0 (Primeiro argumento na lista)

Exemplo de configuração:

log-config: wrapper-log-level: debug game-server-logs-dir: ./game-server-logs ports: gamePort: 37016 game-server-details: executable-file-path: ./MyGame/my-server-executable game-server-args: - arg: "--port" val: "{{.gameport}}" pos: 0

Etapa 4: Faça upload da compilação do servidor de jogos

Agora você concluiu todos os elementos necessários da compilação do servidor de jogos (wrapper do servidor de jogos, config.yaml e arquivos do servidor de jogos) e está pronto para fazer o upload da compilação do jogo para o Amazon GameLift Servers para hospedagem. A maneira mais rápida de fazer o upload da versão do seu jogo é usando o comando AWS CLI upload-build, conforme mostrado no exemplo a seguir.

Fazendo o upload de uma versão de jogo com o Windows:

aws gamelift upload-build \ --name gamelift-test-2025-03-11-1 \ --build-version gamelift-test-2025-03-11-1 \ --build-root out/windows/amd64/gamelift-servers-managed-ec2 \ --operating-system WINDOWS_2022 \ --server-sdk-version 5.3.0 \ --region us-west-2
nota

Para versões Mac e Linux, use --operating-system AMAZON_LINUX_2023

Ao criar a compilação, registre a ID da compilação da resposta da API para usá-la na criação da frota.

Etapa 5: Criar a frota gerenciada do EC2

As etapas a seguir descrevem uma configuração mínima da frota, para que você possa começar a trabalhar o mais rápido possível.

Para criar uma frota:

  1. Faça login no Console de gerenciamento da AWS e navegue até o Amazon GameLift Servers.

  2. Na barra de menus, na parte superior da janela do console, verifique em qual região sua compilação está. Anote isso porque sua frota precisa estar na mesma região ou você não conseguirá encontrar ou escolher sua construção.

  3. No painel de navegação na seção EC2 Gerenciado, selecione Versões.

  4. Selecione a versão que você enviou anteriormente para exibir a página de detalhes da Versão.

  5. Na seção Frotas, escolha Criar Frota, que exibe a página de detalhes de frota de Definição de EC2 Gerenciada, na qual você pode rastrear o status da sua frota, bem como visualizar os eventos de criação da frota na guia Eventos.

  6. Preencha o nome e a descrição e escolha Avançar.

  7. Na página Definir detalhes da instância, a região da compilação é mostrada por padrão. Escolha outras regiões que você deseja adicionar.

  8. Para Tipo de frota, escolha On-Demand.

  9. Em Tipos de instância, escolha c5.large e selecione Avançar.

  10. Em Configuração de runtime, como sua versão de jogo carregada usa o wrapper, você precisa apontar para o executável do wrapper. Para servidores de jogos em Windows, é C:\game\amazon-gamelift-servers-game-server-wrapper.exe. Para servidores de jogos Linux, isso é /local/game/amazon-gamelift-servers-game-server-wrapper.

    Por exemplo, .: LaunchPath": "/local/game/amazon-gamelift-servers-game-server-wrapper", "ConcurrentExecutions": 1, "Parameters": "—port 37016

    Além disso, configure os valores da porta do jogo com um intervalo que permita a porta que foi definida nos parâmetros de inicialização da configuração config.yaml e do runtime. A porta de entrada no config.yaml não precisa corresponder à especificada na configuração de runtime da frota, mas em runtime, se a configuração especificar uma porta diferente, esse valor substituirá o que está no config.yaml. Os parâmetros de inicialização inseridos na configuração do runtime também substituem o que está no config.yaml.

  11. Na página Revisar e criar, verifique novamente todas as configurações e escolha Enviar para criar sua frota. O status da frota mudará à medida que aumenta a capacidade de hospedar o servidor do jogo e, em breve, mostrará o status de Ativo. Quando a ativação estiver concluída e a frota implantada, o serviço inicia o wrapper que está pronto para receber uma solicitação de sessão de jogo.

Etapa 6: Criar e conectar-se a uma sessão do jogo

Quando o status da sua frota mostra Ativo, isso significa que os servidores do jogo estão prontos e aguardando para hospedar uma sessão de jogo. Para iniciar uma sessão de jogo, faça uma solicitação de sessão de jogo ao serviço do Amazon GameLift Servers. Aqui, você usará a AWS CLI para fazer essa solicitação.

nota

Lembre-se de que criar uma sessão de jogo usando a AWS CLI é útil para testar e se familiarizar com o processo. Em algum momento, você adicionará chamadas programáticas do AWS SDK ao serviço de backend do jogo como parte do sistema de criação de partidas ou posicionamento de sessões de jogo do seu jogo.

Use o seguinte para criar uma sessão de jogo:

aws gamelift create-game-session \ --fleet-id <FLEET_ID> \ --game-properties '[{"Key": "exampleProperty", "Value": "exampleValue"}]' \ --maximum-player-session-count 3 \ --region us-west-2

Você também pode passar propriedades personalizadas do jogo para o executável do servidor. Consulte os argumentos do servidor de jogo no README para obter detalhes. Ao receber a chamada create-game-session, os Amazon GameLift Servers informam o wrapper para iniciar o executável do servidor de jogos e iniciar uma sessão de jogo. O que está no config.yaml afeta a configuração do servidor do jogo e os parâmetros de inicialização definidos no console determinam a configuração da sessão de jogo em si.

Exemplo de formato para adicionar propriedades do jogo:

defaultArgs: - arg: "--port" val: "{{.GamePort}}" pos: 0 - arg: "--ipAddress" val: "{{.IpAddress}}" pos: 1 - arg: "--gameSessionId" val: "{{.GameSessionId}}" pos: 2

Etapa 7: Gerencie e monitore sua frota

Agora que sua frota de servidores de jogos está configurada e uma sessão de jogo foi iniciada, você pode gerenciá-la e monitorá-la no console do Amazon GameLift Servers. A melhor maneira de fazer isso é na página de detalhes da frota, onde você pode editar os detalhes da frota ou alterar o dimensionamento e a capacidade da frota na guia Escalonamento. Consulte a seção a seguir sobre como escalar seus servidores de jogos.

Escolha a guia Métricas para visualizar gráficos que descrevem o monitoramento das métricas de atividade e hardware. Para obter detalhes sobre os gráficos de métricas, escolha o link Informações ao lado do ID da sua frota. Além disso, embora você possa monitorar de perto seus servidores de jogos na guia Métricas, você também pode adicionar alarmes a essas métricas no painel do CloudWatch.

Para navegar até o painel do CloudWatch a partir do console:

  1. Digite “CloudWatch” na barra de pesquisa e escolha na lista de resultados da pesquisa para exibir a visão geral do CloudWatch.

  2. Role para baixo e escolha Exibir painel do GameLift para ver gráficos com base nas principais métricas de suas frotas e sessões de jogo.

Etapa 8: Dimensione seus servidores de jogos

Na próxima etapa, você configura o ajuste de escala automático. Use o ajuste de escala automático para escalar de forma dinâmica sua capacidade de frota em resposta à atividade de servidor de jogo. À medida que os jogadores chegam e iniciam as sessões de jogos, o ajuste de escala automático adiciona mais instâncias; à medida que a demanda de jogadores diminui, o ajuste de escala automático libera instâncias não utilizadas. Esta é uma forma eficiente para minimizar os recursos de hospedagem e os custos, enquanto ainda fornece uma experiência de jogador agradável e rápida.

Ao se preparar para o lançamento do jogo, você deve configurar o ajuste de escala automático para suas frotas. O auto scaling é recomendado como uma forma eficiente para minimizar os recursos de hospedagem e os custos, enquanto ainda fornece uma experiência de jogador agradável e rápida.

Como definir manualmente capacidade de frota

Como definir manualmente capacidade de frota

  1. Acesse a guia Escalonamento na página de detalhes da sua frota.

  2. Selecione um local e escolha Editar.

  3. Altere o valor das instâncias desejadas e altere as configurações de tamanho Mínimo e Máximo para escalar além dos valores atuais e escolha Confirmar.

nota

Use a configuração máxima de instâncias como uma medida paliativa para evitar custos e escalabilidade excessivos.

Para usar o ajuste de escala automático com base em destino

Para usar o ajuste de escala automático com base em destino

O escalonamento automático baseado em metas (rastreamento de metas) vincula o escalonamento da frota à porcentagem de sessões de jogo disponíveis. À medida que os jogadores começam a jogar seu jogo e as sessões de jogo disponíveis diminuem, ele responde adicionando automaticamente mais instâncias à frota.

  1. Em Política de ajuste de escala automático baseada em metas, escolha Adicionar política e defina a capacidade da frota de mudar automaticamente quando atingir o limite da porcentagem de sessões de jogo disponíveis que você definiu. Um buffer maior pode lidar melhor com picos, fazendo com que novos jogadores entrem nos jogos rapidamente, mas também pode aumentar os custos de hospedagem.

  2. Escolha Confirmar para aceitar as alterações.

O ajuste de escala automático baseado em regras oferece um controle mais granular, como a capacidade de vincular o escalonamento a outras métricas da frota e definir limites personalizados e respostas de escalabilidade. Ele oferece opções poderosas, mas também requer o uso da CLI e testes significativos para entender como as regras personalizadas se comportam em ação. Este tutorial se concentra em primeiro configurar a abordagem baseada em metas.

Solução de problemas comuns

A seguir estão os problemas comuns que você pode encontrar ao executar seus servidores e sessões de jogo. Quando o servidor ou a sessão do jogo não estão funcionando corretamente, a primeira etapa é verificar os logs, o que pode revelar um dos problemas descritos abaixo para novas implantações ou jogos em produção.

O seguinte geralmente é revelado nos logs:

  • O processo do servidor do jogo não pode ser iniciado. Isso pode ser um erro na configuração do wrapper. Verifique se o arquivo tem o caminho de inicialização correto e os parâmetros e argumentos de inicialização corretos.

  • A compilação do servidor de jogos não pode ser executada. Provavelmente é um erro no código do jogo.

  • Os jogadores não conseguem se conectar às sessões de jogo. É provável que seja um erro de configuração da porta.

  • Conexões atrasadas ou lentas. Analise as políticas e os limites de escalabilidade.

  • Sem conexão. Verifique as regras e a configuração portuária da sua frota.

Para ver os registros de eventos da sua frota do Amazon GameLift Servers

Para ver os registros de eventos da sua frota do Amazon GameLift Servers

  1. Abra o Amazon GameLift Servers Console.

  2. Na página Detalhes da frota, escolha a guia Eventos e baixe o log. Você também pode monitorar métricas de atividade e hardware para a integridade do servidor de jogos e ativações de sessões de jogos na guia Métricas.

Para visualizar logs da sessão de jogo

Para visualizar logs da sessão de jogo

  1. No console, abra sua frota e abra a guia Sessões do jogo.

  2. Escolha um ID de sessão do jogo na lista para exibir a página de visão geral.

  3. Escolha Baixar logs para baixar um arquivo de log localmente.

Para ver os logs da sessão do jogo com a CLI, use a GetGameSessionLogURL API. O Amazon GameLift Servers armazena automaticamente os logs por 14 dias.

Você também pode configurar os Amazon CloudWatch logs para sua frota. Isso fornece recursos adicionais de log e integração com outros serviços de monitoramento do AWS.

Para acesso aos logs em tempo real ou períodos de retenção estendidos por meio do CloudWatch:

  1. Na parte superior do painel do console do Amazon GameLift Servers, digite “CloudWatch” na barra de pesquisa e escolha-o no menu suspenso de resultados.

  2. Acesse os grupos de logs do CloudWatch e pesquise sessões específicas. O método mais fácil é clicar em Pesquisar tudo e filtrar usando gameSessionId ou clientId.

Próximas etapas