Descripción general de Game Servers

Game Servers es un servicio de juegos administrado que se diseñó para que los equipos de infraestructura de los videojuegos puedan implementar y administrar flotas de servidores dedicados para juegos de todo el mundo. Game Servers proporciona administración de clústeres de servidores de videojuegos mediante Kubernetes para la organización de contenedores y Agones para la organización y el ciclo de vida de la flota de servidores de juegos. Puedes conectar y desconectar clústeres de la administración mediante Game Servers en cualquier momento sin afectar las sesiones de juego existentes. Después de desconectar un clúster, puedes continuar con la ejecución de una instalación de Agones de código abierto.

Tú controlas los clústeres del servidor para videojuegos con opciones globales de configuración del servidor para juegos, y definir las reglas para la ubicación y la cantidad de servidores que se deben activar, así como el objeto binario del servidor para juegos que se implementará. Game Servers crea paquetes Agones de forma automática según los lanzamientos administrados de manera central, lo que garantiza que se lancen de forma automática y segura en todos los clústeres administrados. En particular, las sesiones del juego en curso nunca se interrumpen porque un servidor para juegos en uso nunca se detiene.

Recursos de Game Servers

En esta sección, se describen los recursos principales con los que interactúas para administrar Game Servers. En la siguiente figura, se muestra cómo se usan estos recursos para implementar un proyecto de juego.

Una implementación de proyecto de juego de muestra
Figura 1. Ejemplo de implementación de proyecto de juego en Game Servers

Proyecto de Game Servers

Un entorno único, como producción o pruebas, y un proyecto de Google Cloud con Game Servers habilitado. Por lo general, para mejorar el aislamiento y la seguridad, sueles administrar un solo título de juego mediante varios proyectos de Google Cloud, como My Game production y My Game Testing.

Ubicación

La ubicación define el alcance de un recurso y el valor predeterminado es global, que proporciona la mayor disponibilidad y en el que los datos son redundantes en varias regiones de Google Cloud. Puedes configurar la ubicación de un recurso de forma manual en una región de Google Cloud específica (no se admiten todas las regiones). Si deseas controlar dónde se almacenan los datos o cuáles son tus dominios de conmutación por error, anula la configuración predeterminada global con una de las siguientes ubicaciones admitidas:

Ubicaciones admitidas

  • 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

Dominio

Game Servers está diseñado para admitir clústeres de Kubernetes que se ejecutan en Google Kubernetes Engine. Para aprovechar los conceptos de las regiones y zonas de Google Cloud, Game Servers presenta el concepto de metarregión de dominios. Un dominio es una agrupación definida por el usuario de clústeres de servidores para videojuegos según los requisitos de latencia del juego para las poblaciones de jugadores. Los dominios tienen una zona horaria asignada que les permite usar opciones de configuración de escalamiento basadas en el tiempo en clústeres dentro del dominio. Existen dominios dentro de una ubicación.

Clúster de servidor de videojuegos

Un clúster de servidor para videojuegos es un subrecurso de un recurso de dominio. Cada clúster del servidor para videojuegos corresponde a un espacio de nombres en un clúster de Kubernetes que ejecuta Agones que está registrado en un dominio. Los clústeres de servidores para videojuegos dentro de un dominio deben considerarse equivalentes desde la perspectiva de la experiencia del usuario con respecto a mediciones, como la latencia o el rendimiento del procesamiento. El uso de un espacio de nombres que no sea default requiere que el espacio de nombres se cree en Kubernetes y Agones esté configurado para usarlo.

Después de crear un clúster de servidor para videojuegos, Game Servers crea flotas de Agones y escaladores automáticos según sea necesario. Game Servers no altera las flotas de Agones creadas manualmente.

Después de borrar un clúster del servidor de juegos, Game Servers no borra ningún recurso en el clúster, incluidas las flotas de Agones y los escaladores automáticos creados por Game Servers.

Implementación del servidor para videojuegos

Una implementación del servidor para videojuegos es un registro global de una versión de software de servidor para videojuegos que se puede implementar en cualquiera o todos los clústeres de servidores para videojuegos en todo el mundo. Una implementación del servidor para videojuegos es el recurso superior de los recursos de configuración del servidor para videojuegos y de lanzamiento.

Implementa diferentes configuraciones en diferentes dominios
Figura 2. La versión 1.0 de configuración se lanzó en el dominio de EE.UU. y la versión 1.1 se lanzó en los dominios de Europa y Japón.

Configuración del servidor para videojuegos

La configuración del servidor para videojuegos es un subrecurso del recurso de implementación de un servidor para videojuegos que especifica el recuento de servidores, el búfer y la versión del servidor para videojuegos. Debes definir políticas de escalamiento en una configuración del servidor para videojuegos. Las políticas de escalamiento pueden ser estáticas o basadas en el tiempo, como se ilustra en los siguientes ejemplos:

  • Durante las horas de mayor demanda, debería haber suficientes servidores para admitir N asignaciones por minuto, durante las horas de menor demanda M asignaciones por minuto.
  • Para eventos de juegos planificados, aumenta la capacidad reservada en un N% para un intervalo de fecha y hora.

Lanzamiento

Un lanzamiento es un subrecurso de un recurso de implementación de un servidor para videojuegos que asigna la configuración del servidor para videojuegos a fin de orientarse a los dominios objetivo. De forma predeterminada, un lanzamiento asigna una configuración de servidor para videojuegos a todos los dominios. Para las pruebas A/B y las pruebas de la versión canary, puedes anular dominios específicos para recibir una configuración alternativa del servidor para videojuegos.

Arquitectura

Game Servers expone una API del plano de control disponible de manera global, a través de la cual puedes controlar los recursos que describen la implementación mediante llamadas a la API, Google Cloud Console o Google Cloud CLI, incluidas las siguientes:

  • Crear y modificar dominios
  • Crear, registrar y modificar clústeres de servidores para videojuegos en dominios
  • Crear, implementar y actualizar implementaciones de servidores para videojuegos, opciones de configuración de servidor para videojuegos y lanzamientos

Debe haber una cuenta de servicio de Kubernetes para que Agones administre los servidores de videojuegos en el espacio de nombres que pasas a Game Servers cuando creas un clúster de Game Servers. Si usas un espacio de nombres que no sea el predeterminado, por lo general, crearás esta cuenta de servicio como parte de la instalación de helm.

Se debe implementar una cuenta de servicio del proyecto de Google Cloud para que Game Servers se conecte a los clústeres de Agones. Esta cuenta de servicio se crea de forma automática la primera vez que creas un recurso, como un dominio o una implementación.

Cada implementación del servidor para videojuegos describe sus parámetros, equivalente a un GameServerSpec de Agones, y especifica una política para orientar los clústeres de servidores para videojuegos, en los que se deben crear flotas de servidores para juegos que ejecuten una compilación en particular. También puedes establecer preferencias de escalamiento de clúster individuales mediante políticas.

¿Qué sigue?