Ir al contenido principal
BlogComputeSin retardo, todo frag: Mejora tus juegos con Xonotic, K3s y Edge Computing

Sin Lag, Todo Frag: Mejora tus juegos con Xonotic, K3s y Edge Computing

No_Lag_All_Frag_Level_Up_Your_Gaming

Pongámonos en la situación de un jugador: estás jugando la partida de tu vida (y desearías estar retransmitiendo hoy precisamente). Estás alineando el tiro a la cabeza perfecto para ganar y ya te estás imaginando la pantalla de la victoria... y entonces el juego se detiene. Tu oponente te elimina. Se acabó la partida.

A todos nos ha pasado que un pequeño fallo en el juego en tiempo real nos cueste nuestro momento de gloria y la vuelta de la victoria. La frustración ante esta experiencia ha hecho que resurja la popularidad de los juegos totalmente autogestionados, que te permiten controlar tu propio destino como jugador. Pero, por desgracia, el autoalojamiento no es una opción para todos los juegos ni para todos los jugadores. ¿Y si te dijéramos que hay una forma de desterrar el lag al reino de las sombras sin tener que comprar y mantener tu propio hardware?

Con sólo un poco de desarrollo, puedes construir tu propio paraíso de juego distribuido acercando el servidor a ti (el jugador) y creando tu propia experiencia de baja latencia. Entra en el trío de poder: Xonotic, K3sy el poder del edge computing con Nube de Akamai.

¿Qué es la ventaja?

En lugar de depender de centros de datos masivos y centralizados que pueden estar a cientos (o incluso miles) de kilómetros de distancia, la computación de borde acerca la capacidad de procesamiento a la fuente de datos, que en este caso eres tú. Esto reduce drásticamente la latencia que crea ese temido retraso, simplemente porque los datos no necesitan viajar tan lejos.

¿Por qué K3s? Ligereza y agilidad

K3s es una distribución ligera de Kubernetes. Piense en Kubernetes (o K8s) como un gestor increíblemente inteligente y eficiente para sus aplicaciones que se encarga del despliegue, el escalado y de asegurarse de que todo funciona sin problemas. K3s es una rama de K8s diseñada específicamente para entornos con recursos limitados. Es pequeño, rápido e increíblemente eficaz, y puede ser su ayudante en la infraestructura de juegos.

¿Y Agones? El Maestro del Servidor de Juegos

Agones es un proyecto de código abierto nativo de Kubernetes diseñado específicamente para gestionar servidores de juegos dedicados. Se encarga de las complejidades de escalar, asignar y ejecutar instancias de servidores de juegos para que puedas centrarte en fragmentar, no en jugar con las configuraciones de los servidores.

¡A construir! (La parte divertida)

We’re going to set up a Xonotic server (a fast-paced, free, open-source FPS) on a Linode instance, managed by K3s and Agones. Get ready to experience Xonotic like never before! If you’d like to follow our full guide, go to the docs.

Paso 1: Tiempo de Terraform : sentar las bases

Terraform es nuestra herramienta de "infraestructura como código". Nos permite definir la configuración de nuestro servidor en un archivo, haciéndolo repetible y fácil de gestionar. En primer lugar, instalarlo:

brew install terraform

(Nota: Si no utiliza macOS, consulte el sitio webTerraform para obtener instrucciones de instalación para su sistema operativo).

Paso 2: Configuración del proyecto - Tu sede de juego

Vamos a crear un directorio para nuestro proyecto:

mkdir xonotic

cd xonotic

Paso 3: El script Terraform - Construyendo tu servidor (¡y cortafuegos!)

Cree un archivo llamado main.tf y pega el siguiente código. 

¡Aquí es donde ocurre la magia! Definimos nuestra instancia de Linode, configuramos un cortafuegos y configuramos todo lo que necesitamos. 

En este caso, estamos desplegando una instancia de computación dedicada en Denver, una de las regiones de computación distribuida de Akamai. Recomendamos utilizar la instancia dedicada de 8 GB, que cuenta con 4 vCPU, lo que resulta adecuado para varios retadores.

Nota: Para que este código de ejemplo funcione tal cual, deberá obtener acceso a las regiones de cálculo distribuido, cuya disponibilidad es actualmente limitada.

# Specify the required Terraform provider

terraform {

  required_providers {

    linode = {

      source = "linode/linode"

      version = ">= 1.27.0"  # Ensure a version that supports metadata

    }

  }

}

# Define variables for sensitive information

variable "linode_token" {

  description = "Linode API token"

  type        = string

  sensitive   = true

}

variable "root_password" {

  description = "Root password for the instance"

  type        = string

  sensitive   = true

}

variable "admin_ip" {

  description = "IPv4 address to be used to access the instance"

  type        = string

  sensitive   = true

}

# Configure the Linode provider

provider "linode" {

  token = var.linode_token

}

# Define the cloud-init configuration

data "template_file" "cloud_init" {

  template = <<EOF

#cloud-config

package_update: true

package_upgrade: true

runcmd:

  - apt update -y

  - apt upgrade -y

EOF

}

# Create a 8GB dedicated Linode instance in Denver

resource "linode_instance" "my_instance" {

  label     = "xonotic-game-server"

  region    = "us-den-1"

  type      = "g6-dedicated-edge-4"

  image     = "linode/ubuntu20.04"

  root_pass = var.root_password

  booted    = true

  metadata {

    user_data = base64encode(data.template_file.cloud_init.rendered)

  }

}

# Create a firewall to allow incoming traffic on port 22 and 7000-8000

resource "linode_firewall" "my_firewall" {

  label = "xonotic-firewall"

# Drop everything that is not covered by an explicitly rule

  inbound_policy = "DROP"

# Allow all outbound traffic

  outbound_policy = "ACCEPT"

  # Rule to allow SSH (port 22)

  inbound {

    label    = "allow-ssh"

    action   = "ACCEPT"

    protocol = "TCP"

    ports    = "22"

    ipv4     = [var.admin_ip]

  }

  # Rule to allow custom port range (7000-8000)

  inbound {

    label    = "allow-custom-ports"

    action   = "ACCEPT"

    protocol = "UDP"

    ports    = "7000-8000"

    ipv4     = ["0.0.0.0/0"]

    ipv6     = ["::/0"]

  }

  # Rule to allow Agones port 8080

  inbound {

    label    = "allow-custom-ports"

    action   = "ACCEPT"

    protocol = "TCP"

    ports    = "8080"

    ipv4     = ["0.0.0.0/0"]

    ipv6     = ["::/0"]

  }

  # Associate the firewall with the instance

  linodes = [linode_instance.my_instance.id]

}

# Output the instance's IP address

output "instance_ip" {

  value = linode_instance.my_instance.ip_address

}

Ahora, cree un archivo llamado terraform.tfvars y añade tu token de la API de Linode y una contraseña de root (¡no olvides reemplazar los marcadores de posición!):

linode_token  = "your_linode_api_token"

root_password = "your_root_password"

admin_ip = "your_ipv4_address/32"

Nota de seguridad importante: Mantenga su terraform.tfvars archivo seguro y nunca envíalo a un repositorio público.

Si no está seguro de su dirección IP actual, puede utilizar el siguiente comando que le devolverá su dirección IP pública actual.

curl http://whatismyip.akamai.com

Paso 4: Inicializar y aplicar - ¡Deja que Terraform haga lo suyo!

En primer lugar, inicialice Terraform:

terraform init

Esto descarga el Proveedor Linode. A continuación, aplica la configuración:

terraform apply

Se te pedirá que confirmes los cambios. Escriba yes y pulsa Enter. Terraform aprovisionará tu instancia de Linode y configurará el cortafuegos. Esto puede tardar unos minutos. Tómate un café (o, ya sabes, practica tu puntería...).

Paso 5: SSH In - ¡Tu servidor te espera!

Una vez Terraform haya terminado, mostrará la dirección IP de tu instancia. También puedes encontrar el nombre DNS inverso en la pestaña de red de tu instancia recién creada en el Linode Cloud Manager. Utiliza SSH para conectarte:

ssh root@your_instance_ip_or_dns

Sustituir your_instance_ip_or_dns con la dirección IP real o el nombre DNS. Se te pedirá la contraseña de root que estableciste en terraform.tfvars.

Paso 6: Instalar K3s - La central ligera de Kubernetes

Es sorprendentemente fácil. Simplemente ejecute este comando en su instancia de Linode:

curl -sfL https://get.k3s.io | sh -

Esto descarga e instala el K3s. Tardará uno o dos minutos.

Paso 7: Instalar Agones - ¡Hora de orquestar el servidor de juego!

Ahora instalaremos Agones, que gestionará nuestros servidores de juego Xonotic. Ejecuta estos comandos:

kubectl create namespace agones-system

kubectl apply --server-side -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/install/yaml/install.yaml

Esto crea un espacio de nombres dedicado para Agones y lo despliega en su cluster K3s.

Paso 8: Confirmar que Agones está funcionando - Comprobar el estado

Asegurémonos de que todo funciona correctamente:

kubectl describe --namespace agones-system pods

Debería ver una salida indicando que los pods Agones se están ejecutando.

Paso 9: Despliegue y obtenga el estado del Servidor de Juegos Xonotic.

kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml

 watch kubectl describe gameserver

Paso 10: Obtenga la IP del servidor de juego - ¡Listo para conectarse!
Obtén una lista de tus servidores de juego y sus direcciones IP:

kubectl get gs

Paso 11: Cliente Xonotic - Descargar e instalar

Si aún no lo tienes, descarga el cliente Xonotic para tu sistema operativo desde https://xonotic.org/.

Paso 12: ¡Conecta y juega! - ¡Hora de los fragmentos!

  1. Inicie Xonotic: Inicie el cliente.
  2. Modo Multijugador: Go a "Multijugador".
  3. Conexión al servidor: Elige unirte a un servidor manualmente.
  4. Introduzca IP y Puerto: Introduzca la dirección IP y el puerto que obtuvo del kubectl get gs comando.
  5. Únete al juego: Conéctate y disfruta de tu experiencia Xonotic de baja latencia.

Limpieza (cuando acabas de dominar)

Para eliminar la flota de Agones y las instancias del servidor de juego:

kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml

A continuación, puede utilizar terraform destroy en el directorio de tu proyecto para eliminar la instancia de Linode y el cortafuegos para evitar más costes.

Conclusión: El futuro del juego está en tus manos

Acabas de crear una configuración de juego potente y de baja latencia con Edge Computing, K3 y Agones. Esto demuestra cómo puede dejar de depender por completo de los servidores propiedad de los proveedores de juegos y acercar su experiencia de juego a casa. Esto hace que el juego sea más fluido, más sensible y más divertido - y no más pérdidas inducidas por la latencia. 

Akamai tiene más de 25 regiones de computación central distribuidas globalmente disponibles para nuestros clientes de cloud computing. Para llevar las cargas de trabajo aún más cerca de casa, puede aprovechar nuestras regiones de computación distribuida para implementar instancias dedicadas en las principales áreas metropolitanas desatendidas por los proveedores de cloud computing, como Auckland, Johannesburgo y Bogotá. Regístrese para obtener una cuenta, consulte la lista completa de regiones distribuidas disponibles y póngase en contacto con nuestros consultores de cloud computing para ver si puede acceder a los recursos de su ubicación o crear un ticket de soporte.

If you want to learn more, check out our guide on how to set up a Xonotic server with K3s and Agones.

Comentarios

Dejar una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.