Guia de início rápido: implantar um servidor para um jogo de código aberto

Implantar um servidor para um jogo de código aberto

Neste guia de início rápido, você aprenderá a trabalhar com domínios, clusters, implantações, configurações e implementações de servidor de jogos de jogos no Game Servers usando a Google Cloud CLI.


Para seguir as instruções detalhadas desta tarefa diretamente no console do Google Cloud, clique em Orientação:

Orientações


Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Verifique se você ativou a API Game Services.
  7. Ativar a API Game Services

Como escolher um shell

Para concluir este guia de início rápido, use o Cloud Shell ou o shell local.

O Cloud Shell é um ambiente de shell para gerenciar recursos hospedados no Google Cloud. O Cloud Shell vem pré-instalado com a ferramenta de linha de comando gcloud. A CLI gcloud fornece a interface de linha de comando principal para o Game Servers.

Cloud Shell

Para iniciar o Cloud Shell, execute os seguintes passos:

  1. Acesse o Console do Google Cloud.

    Console do Google Cloud

  2. No canto superior direito do console, clique no botão Ativar Cloud Shell:

Uma sessão do Cloud Shell é aberta dentro de um quadro inferior no console. Use esse shell para executar comandos gcloud.

Shell local

Instale a CLI gcloud.

Verifique se você definiu o projeto padrão desejado para a Google Cloud CLI. Caso contrário, será necessário especificar a sinalização --project explicitamente para cada comando mais tarde:

gcloud config list project

Caso contrário, execute o seguinte comando para definir um projeto padrão, substituindo PROJECT_ID pelo ID do projeto que você quer:

gcloud config set project PROJECT_ID

Execute o seguinte comando para verificar a versão da Google Cloud CLI. O Game Servers requer a versão 306.0.0 ou mais recente da CLI gcloud.

gcloud version

Para atualizar a instalação, execute o seguinte comando:

gcloud components update

Se você selecionar o shell local, talvez seja necessário instalar a ferramenta de linha de comando do Kubernetes kubectl:

gcloud components install kubectl

Como criar um cluster do Google Kubernetes Engine

Para criar um cluster do Google Kubernetes Engine:

  1. No Console do Cloud, ative a API Kubernetes Engine.

    Ativar a API

  2. Execute o seguinte comando para criar um cluster com custo otimizado com um nó na zona us-central1-a:

    gcloud container clusters create gcgs-quickstart \
    --cluster-version=1.23 \
    --tags=game-server \
    --scopes=gke-default \
    --num-nodes=1 \
    --no-enable-autoupgrade \
    --machine-type=e2-standard-2 \
    --zone=us-central1-a
    
  3. Execute o seguinte comando para recuperar as credenciais do cluster do GKE criado na etapa anterior:

    gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
    

    kubectl usa essas credenciais para executar comandos nos clusters do Kubernetes. Consulte Como configurar o acesso a clusters para o kubectl para mais informações.

Como instalar o Agones no GKE

Nesta seção, você instalará a plataforma de infraestrutura de jogos Agones de código aberto. Para instalar o Agones:

  1. Execute o seguinte comando para criar o namespace agones-system:

    kubectl create namespace agones-system
    
  2. Execute o seguinte comando para instalar o Agones:

    kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
    
  3. Confirme se o sistema Agones está em execução verificando o status dos pods do Kubernetes:

    kubectl get --namespace agones-system pods
    

    Todos os pods estão em um estado Running:

    NAME                                 READY   STATUS    RESTARTS   AGE
    agones-allocator-6694dcc89-7r75d     1/1     Running   0          28s
    agones-allocator-6694dcc89-m7ghq     1/1     Running   0          28s
    agones-allocator-6694dcc89-qp6cm     1/1     Running   0          28s
    agones-controller-56c98db844-llzzc   1/1     Running   0          22s
    agones-ping-d9d74c5c6-8kmt6          1/1     Running   0          24s
    agones-ping-d9d74c5c6-xwn4h          1/1     Running   0          24s
    

Como criar recursos do Game Servers

Para criar recursos do Game Servers:

  1. Crie um realm no mesmo local do cluster do GKE:

    gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
    
  2. Registre seu cluster do GKE do Agones no Game Servers e anexe-o ao realm criado na etapa anterior:

    gcloud game servers clusters create cluster-quickstart \
    --realm=realm-quickstart \
    --gke-cluster locations/us-central1-a/clusters/gcgs-quickstart \
    --namespace=default \
    --location us-central1 \
    --no-dry-run
    
  3. Crie uma implantação de Game Server usada para armazenar as mesmas configurações do servidor e, em seguida, implemente-as aos clusters do servidor de jogos:

    gcloud game servers deployments create deployment-quickstart
    

    Agora que você tem uma implantação de servidor de jogos, é possível adicionar uma configuração de servidor usando a CLI gcloud.

  4. Copie o seguinte manifesto de especificação da frota do Agones para um novo arquivo chamado fleet_configs.yaml no diretório atual:

    - name: fleet-spec-1
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              foo: bar
          spec:
            ports:
            - name: default
              portPolicy: Dynamic
              containerPort: 7654
            template:
              spec:
                containers:
                - name: simple-game-server
                  image: gcr.io/agones-images/simple-game-server:0.3
    
  5. Para criar a configuração do servidor de jogos, execute o seguinte comando:

    gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    
  6. Para atualizar a implementação, execute o seguinte comando:

    gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
    
  7. Para validar a implementação de uma frota no namespace padrão, execute o seguinte comando:

    kubectl get fleet
    

    Veja a seguir o resultado esperado:

    NAME                                     SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-deployment-quickstart-config-1   Packed       2         2         0           2       4s
    

    O resultado confirma que você implantou uma frota com duas réplicas de servidores UDP simples no cluster que estão prontas para aceitar conexões.

Como testar a conectividade com o servidor de jogos

Para testar a conectividade com o servidor de jogos:

  1. Crie uma regra de firewall para abrir as portas UDP necessárias para se conectar ao cluster:

    gcloud compute firewall-rules create gcgs-quickstart-firewall \
    --allow udp:7000-8000 \
    --target-tags game-server \
    --description "Firewall to allow game server udp traffic"
    
  2. Em seguida, consiga o endereço IP e o número da porta de um servidor de jogos individual:

    kubectl get gameserver
    

    O comando retorna uma saída semelhante a esta:

    NAME                                                 STATE   ADDRESS          PORT   NODE                                             AGE
    fleet-deployment-quickstart-config-1-nndvr-5gvch   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    fleet-deployment-quickstart-config-1-nndvr-vqwpl   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    
  3. Para testar a conectividade, execute o comando Netcat. Para instalar o Netcat no Linux, execute o seguinte comando:

    sudo apt install netcat
    
  4. Para iniciar o teste, execute o seguinte comando:

    nc -u IP_ADDRESS PORT_NUMBER
    
  5. Em seguida, digite Hello e o comando retornará um resultado semelhante a este:

    Hello
    > ACK: Hello
    
  6. Use Ctrl+C para interromper o teste.

(Opcional) Implantar um servidor para um jogo de código aberto

Você pode atualizar o lançamento para implantar uma frota com duas réplicas de servidor de jogos de código aberto no cluster. Esses servidores de jogos são compatíveis com a versão multiplayer do jogo de corrida SuperTuxKart.

  1. Substitua o arquivo fleet_configs.yaml atual pela seguinte especificação de frota do Agones:

    - name: supertuxkart
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              version: "1.0"
          spec:
            ports:
            - name: default
              containerPort: 8080
            health:
              initialDelaySeconds: 30
              periodSeconds: 60
            template:
              spec:
                containers:
                - name: supertuxkart
                  image: gcr.io/agones-images/supertuxkart-example:0.3
    
  2. Não é possível atualizar uma configuração de servidor de jogos existente, porque eles são imutáveis. Crie uma nova configuração que faça referência ao manifesto de especificação atualizado da frota:

    gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    

  3. Atualize o lançamento com a nova configuração:

    gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
    

  4. Pegue o endereço IP e o número da porta de um servidor de jogos individual:

    kubectl get gameserver
    

  5. Fazer o download do cliente SuperTuxKart.

  6. Inicie o cliente do SuperTuxKart.

  7. Clique no botão On-line no menu principal e, em seguida, no botão Inserir endereço do servidor.

  8. Insira o endereço IP e o número da porta de um servidor de jogos individual (de uma etapa anterior).

  9. Clique em Iniciar corrida para começar o jogo.

Você pode fazer o download do cliente SuperTuxKart em outras plataformas para se conectar ao mesmo servidor e participar da corrida.

Limpeza

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

Se você não quiser manter nenhum dos recursos criados neste guia de início rápido, exclua o projeto:

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Como alternativa, se você quiser manter o projeto, siga estas etapas para excluir manualmente os recursos criados neste guia de início rápido:

  1. Para excluir a regra de firewall, execute o seguinte comando:

    gcloud compute firewall-rules delete gcgs-quickstart-firewall
    
  2. Para limpar a implementação padrão, execute o seguinte comando:

    gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
    
  3. Para excluir a configuração do servidor de jogos, execute o seguinte comando:

    gcloud game servers configs delete config-1 --deployment deployment-quickstart
    

    Se você tiver concluído a seção opcional, exclua a configuração adicional do servidor de jogos:

    gcloud game servers configs delete stk-1 --deployment deployment-quickstart
    
  4. Para excluir a implantação do servidor de jogos, execute o seguinte comando:

    gcloud game servers deployments delete deployment-quickstart
    
  5. Para excluir o cluster do servidor de jogos, execute o seguinte comando:

    gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
    
  6. Para excluir o realm, execute o seguinte comando:

    gcloud game servers realms delete realm-quickstart --location=us-central1
    
  7. Para desativar a API Game Services, execute o seguinte comando:

    gcloud services disable gameservices.googleapis.com
    
  8. Para excluir o cluster do GKE, execute o seguinte comando:

    gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
    

A seguir

Para uma introdução técnica aos conceitos do Game Servers, consulte a Visão geral do Game Servers.

Saiba mais sobre tarefas específicas do Game Servers no guia de instruções.

Analise o projeto de amostra de implantação do Terraform (em inglês).