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!
- Inicie Xonotic: Inicie el cliente.
- Modo Multijugador: Go a "Multijugador".
- Conexión al servidor: Elige unirte a un servidor manualmente.
- Introduzca IP y Puerto: Introduzca la dirección IP y el puerto que obtuvo del
kubectl get gs
comando. - Ú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