Implementa un servidor para un juego de código abierto
En esta guía de inicio rápido, aprenderás a trabajar con dominios, clústeres, implementaciones, configuraciones y lanzamientos de servidores de juegos en Game Servers con Google Cloud CLI.
Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guía:
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
- Asegúrate de haber habilitado la API de los servicios de juego. Habilitar la API de servicios de juego
Elige un shell
Para completar esta guía de inicio rápido, puedes usar Cloud Shell o tu shell local.
Cloud Shell es un entorno de shell que se usa para administrar recursos alojados en Google Cloud. Cloud Shell ya viene instalado con la herramienta de línea de comandos de gcloud
. Gcloud CLI proporciona la interfaz de línea de comandos principal para Game Servers.
Cloud Shell
Para iniciar Cloud Shell, sigue estos pasos:
Ve a la consola de Google Cloud.
Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: .
Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola.
Usa esta shell para ejecutar los comandos de gcloud
.
Shell local
Instala la CLI de gcloud
Verifica que hayas configurado el proyecto predeterminado que deseas para Google Cloud CLI (de lo contrario, debes especificar la marca --project
de forma explícita para cada comando más adelante):
gcloud config list project
Si no puedes ejecutar el siguiente comando para configurar un proyecto predeterminado, reemplaza PROJECT_ID
por el ID del proyecto deseado:
gcloud config set project PROJECT_ID
Ejecuta el siguiente comando para verificar tu versión de Google Cloud CLI.
Game Servers requiere la versión 306.0.0
o una posterior de gcloud CLI.
gcloud version
Para actualizar la instalación, ejecuta el siguiente comando:
gcloud components update
Si seleccionas la shell local, es posible que debas instalar la herramienta de línea de comandos de Kubernetes kubectl
:
gcloud components install kubectl
Crea un clúster de Google Kubernetes Engine
Para crear un clúster de Google Kubernetes Engine, sigue estos pasos:
En la consola de Cloud, habilita la API de Kubernetes Engine.
Ejecuta el siguiente comando para crear un clúster de costo optimizado con un nodo en la 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
Ejecuta el siguiente comando a fin de recuperar las credenciales para el clúster de GKE que creaste en el paso anterior:
gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
kubectl
usa estas credenciales para ejecutar comandos en tus clústeres de Kubernetes. Consulta Configura el acceso del clúster para kubectl a fin de obtener más información.
Instala Agones en GKE
En esta sección, instalarás la plataforma de infraestructura de videojuegos Agones de código abierto. Para instalar Agones, sigue estos pasos:
Ejecuta el siguiente comando para crear el espacio de nombres
agones-system
:kubectl create namespace agones-system
Ejecuta el siguiente comando para instalar Agones:
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
Para verificar que el sistema Agones esté en ejecución, verifica el estado de los Pods de Kubernetes:
kubectl get --namespace agones-system pods
Se espera que todos los Pods estén en el 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
Crea recursos de Game Servers
Para crear recursos de Game Servers, sigue estos pasos:
Crea un dominio en la misma ubicación que el clúster de GKE:
gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
Registra tu clúster de GKE de Agones con Game Servers y conéctalo al dominio que creaste en el paso 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
Crea una implementación de Game Servers, que se usa para almacenar todas las opciones de configuración de Game Servers y, luego, implementarlas en los clústeres de tu servidor de juegos:
gcloud game servers deployments create deployment-quickstart
Ahora que tienes una implementación de servidor de juegos, puedes agregarle una configuración de servidor de juegos mediante gcloud CLI.
Copia el siguiente ejemplo de manifiesto de especificaciones de la flota de Agones en un archivo nuevo llamado
fleet_configs.yaml
en el directorio actual:- 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
Para crear la configuración del servidor de juegos, ejecuta el siguiente comando:
gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
Para actualizar el lanzamiento, ejecuta el siguiente comando:
gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
Para validar el lanzamiento de una flota en el espacio de nombres predeterminado, ejecuta el siguiente comando:
kubectl get fleet
A continuación, se muestra el resultado esperado:
NAME SCHEDULING DESIRED CURRENT ALLOCATED READY AGE fleet-deployment-quickstart-config-1 Packed 2 2 0 2 4s
El resultado confirma que implementaste una flota con dos réplicas de servidor UDP simples en tu clúster que están listas para aceptar conexiones.
Prueba la conectividad con el servidor de juegos
Para probar la conectividad al servidor de juegos, haz lo siguiente:
Crea una regla de firewall a fin de abrir los puertos UDP necesarios para conectarte al clúster:
gcloud compute firewall-rules create gcgs-quickstart-firewall \ --allow udp:7000-8000 \ --target-tags game-server \ --description "Firewall to allow game server udp traffic"
A continuación, obtén la dirección IP y el número de puerto que corresponden a un servidor para juegos individual:
kubectl get gameserver
El comando muestra un resultado similar al siguiente:
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
Para probar la conectividad, ejecuta el comando Netcat. Para instalar Netcat en Linux, ejecuta el siguiente comando:
sudo apt install netcat
Para iniciar la prueba, ejecuta el siguiente comando:
nc -u IP_ADDRESS PORT_NUMBER
A continuación, escribe
Hello
y el comando mostrará un resultado similar al siguiente:Hello > ACK: Hello
Usa Ctrl+C para detener la prueba.
Implementa un servidor para un título de juego de código abierto (opcional)
Puedes actualizar el lanzamiento para implementar una flota con dos réplicas de servidor de videojuegos de código abierto en tu clúster. Estos servidores de videojuegos son compatibles con la versión multijugador del juego de carrera SuperTuxKart.
Reemplaza el archivo existente
fleet_configs.yaml
por las siguientes especificaciones de la flota de 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
No puedes actualizar una configuración de servidor para videojuegos existente porque son inmutables. Crea una configuración nueva que haga referencia al manifiesto de especificaciones de la flota actualizado:
gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
Actualiza el lanzamiento con la configuración nueva:
gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
Obtén la dirección IP y el número de puerto que corresponden a un servidor para videojuegos individual:
kubectl get gameserver
Inicia el cliente SuperTuxKart.
Haz clic en el botón Online en el menú principal y, luego, en el botón Enter server address.
Ingresa la dirección IP y el número de puerto para un servidor de juegos individual (de un paso anterior).
Haz clic en Start race para empezar el juego.
Puedes descargar el cliente de SuperTuxKart en otras plataformas para conectarte al mismo servidor y participar en la carrera.
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en esta página.
Si no deseas conservar ninguno de los recursos que creaste en esta guía de inicio rápido, puedes borrar el proyecto:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Como alternativa, si deseas conservar el proyecto, completa los siguientes pasos para borrar de forma manual los recursos que creaste en esta guía de inicio rápido:
Para borrar la regla de firewall, ejecuta el siguiente comando:
gcloud compute firewall-rules delete gcgs-quickstart-firewall
Para borrar el lanzamiento predeterminado, ejecuta el siguiente comando:
gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
Para borrar la configuración del servidor de juegos, ejecuta el siguiente comando:
gcloud game servers configs delete config-1 --deployment deployment-quickstart
Si completaste la sección opcional, borra la configuración adicional del servidor de juegos:
gcloud game servers configs delete stk-1 --deployment deployment-quickstart
Para borrar la implementación del servidor de juegos, ejecuta el siguiente comando:
gcloud game servers deployments delete deployment-quickstart
Para borrar el clúster del servidor de juegos, ejecuta el siguiente comando:
gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
Para borrar el dominio, ejecuta el siguiente comando:
gcloud game servers realms delete realm-quickstart --location=us-central1
Para inhabilitar la API de servicios de juegos, ejecuta el siguiente comando:
gcloud services disable gameservices.googleapis.com
Para borrar el clúster de GKE, ejecuta el siguiente comando:
gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
¿Qué sigue?
Para obtener una introducción técnica a los conceptos de Game Servers, consulta la descripción general de Game Servers.
Obtén más información sobre las tareas específicas de Game Servers en las guías prácticas.
Revisa el proyecto de muestra de implementación de Terraform.