Visão geral do Game Servers

O Game Servers é um serviço de jogo gerenciado criado para que equipes de infraestrutura de jogos implantem e gerenciem soluções globais de servidores dedicados de jogos. O Game Servers fornece gerenciamento de clusters de servidor de jogos usando o Kubernetes para orquestração de contêineres e Agones (links em inglês) para orquestração de frotas de servidores de jogos e gerenciamento de ciclo de vida. É possível conectar e desconectar clusters do gerenciamento por Game Servers a qualquer momento, sem qualquer impacto nas sessões de jogos existentes. Depois de desconectar um cluster, é possível continuar a execução de uma instalação do Agones de código aberto.

Controle os clusters de servidores de jogos usando configurações globais do servidor de jogos, definindo regras para o local e o número de servidores a serem ativados e quais binários do servidor de jogos implantar. O Game Servers cria as frotas do Agones automaticamente com base nas implementações gerenciadas centralmente, garantindo que elas sejam implementadas de maneira automática e segura em todos os clusters gerenciados. Em particular, as sessões de jogos em andamento nunca são interrompidas porque um servidor de jogos em uso nunca foi interrompido de repente.

Recursos do Game Servers

Nesta seção, descrevemos os principais recursos com que você interage para gerenciar servidores de jogos. A figura a seguir mostra como esses recursos são usados para implantar um projeto de jogo.

Uma amostra de implantação de projeto de jogo
Figura 1. Exemplo de implantação de projeto de jogo no Game Servers

Projeto do Game Servers

Um único ambiente, como produção ou teste, e é um projeto do Google Cloud com o Game Servers ativado. Para melhorar o isolamento e a segurança, normalmente você gerencia um único título de jogo usando vários projetos do Google Cloud, como My Game Production e My Game Testing.

Local

O local define o escopo de um recurso e o padrão é global, que fornece a maior disponibilidade e mostra onde os dados são redundantes em várias regiões do Google Cloud. É possível definir manualmente a localização de um recurso para uma região específica do Google Cloud (nem todas as regiões são compatíveis). Se você quiser controlar onde os dados são armazenados ou quais são seus domínios de failover, substitua a configuração global padrão por um dos seguintes locais compatíveis:

Locais compatíveis

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • europe-central2
  • europe-north1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • global
  • northamerica-northeast1
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west2

Realm

O Game Servers foi projetado para aceitar clusters do Kubernetes em execução no Google Kubernetes Engine. Para desenvolver os conceitos de regiões e zonas do Google Cloud, o Game Servers introduz o conceito de meta região de realms. Um realm é um agrupamento definido por clusters de servidores de jogos definidos pelo usuário com base nos requisitos de latência do jogo para populações de jogadores. Os domínios real têm um fuso horário atribuído que permite que as configurações de escalonamento baseadas em tempo sejam usadas em clusters dentro do realm. Os domínios existem em um local.

Cluster do servidor de jogos

Um cluster de servidores de jogos é um sub-recurso de um recurso realm. Cada cluster de servidor de jogos corresponde a um namespace em um cluster do Kubernetes que executa Agones registrado em um domínio. Os clusters de servidores de jogo em um realm precisam ser considerados equivalentes a partir da perspectiva da experiência do usuário, em relação a métricas como latência ou desempenho de computação. Usar um namespace diferente de default requer que o namespace seja criado no Kubernetes e o Agones configurado para usá-lo.

Depois de criar um cluster de servidor de jogos, o Game Servers cria grupos de frotas e escalonadores automáticos conforme necessário. O Game Servers não altera os componentes Agones criados manualmente.

Depois de excluir um cluster de servidor de jogos, o Game Servers não exclui nenhum recurso do cluster, incluindo as frotas Agones e autoescaladores criados por Game Servers.

Implantação do servidor de jogos

A implantação do servidor de jogos é um registro global de uma versão do software do servidor que pode ser implantada em qualquer cluster de servidor de jogos do mundo. Uma implantação de servidor de jogos é o recurso pai dos recursos de configuração do servidor de jogos e lançamento.

Implementar diferentes configurações para diferentes domínios
Figura 2. Configuração da versão 1.0 lançada para o mundo dos EUA, versão 1.1 implantada nos realms da Europa e do Japão

Configuração do servidor de jogos

Uma configuração de servidor de jogos é um sub-recurso de um recurso de implantação de servidor de jogos que especifica a contagem, o buffer e a versão do servidor de jogos do jogo. Você define políticas de escalonamento em uma configuração do servidor de jogos. As políticas de escalonamento podem ser estáticas ou baseadas em tempo, conforme ilustrado pelos exemplos a seguir:

  • Durante os horários de pico, deve haver servidores suficientes para serem compatíveis com N alocações por minuto, durante os horários de pico M de alocações por minuto.
  • Para eventos de jogo planejados, aumente a capacidade reservada em N% para um período e um intervalo de tempo.

Implantação

Um lançamento é um sub-recurso de um recurso de implantação de servidor de jogos que mapeia as configurações do servidor de jogos para segmentar realms. Por padrão, um lançamento atribui uma configuração de servidor de jogos a todos os domínios. Para testes A/B e testes canário, é possível modificar domínios específicos para receber uma configuração alternativa do servidor de jogos.

Arquitetura

O Game Servers expõe uma API de plano de controle disponível globalmente, por meio dos quais é possível controlar os recursos que descrevem a implantação usando chamadas de API, o Console do Cloud ou a ferramenta de linha de comando gcloud, incluindo:

  • Como criar e modificar domínios reais.
  • Criar, registrar e modificar clusters de servidores de jogos em domínios.
  • Criar, implantar e atualizar implantações do servidor de jogos, configurações do servidor de jogos e lançamentos.

Uma conta de serviço do Kubernetes precisa estar pronta para que o Agones gerencie servidores de jogos no namespace transmitido para o Game Servers ao criar um cluster do Game Servers. Se você estiver usando um namespace diferente do namespace padrão, crie essa conta de serviço como parte do helm install.

É necessário que uma conta de serviço do projeto do Google Cloud esteja ativada para que os servidores de jogos se conectem aos clusters do Agones. Essa conta de serviço é criada automaticamente quando você cria um recurso pela primeira vez, como um domínio ou uma implantação.

Cada implantação de servidor de jogos descreve os parâmetros do servidor de jogos, equivalentes a um GameServerSpec do Agones, e especifica uma política para direcionar clusters de servidor de jogos em que as frotas de servidores de jogos que executam uma versão específica precisam ser criadas. Também é possível definir preferências individuais de escalonamento de cluster usando políticas.

A seguir