SeaTyrants GameServer — Infraestructura MMORPG
Servidor de juego UDP de alta frecuencia en Kubernetes
Una infra MMORPG que sostiene 128 Hz, mapa a mapa, detrás de un proxy UDP.
La necesidad del cliente
Contexto
SeaTyrants es un MMORPG en tiempo real que debe atender a miles de jugadores con baja latencia y alta cadencia de servidor.
Problema
Ninguna infraestructura permitía dividir los mapas, mantener 128 Hz por tick y enrutar el tráfico UDP de forma escalable.
Objetivo
Construir una infraestructura Kubernetes capaz de escalar por mapa y sostener el tiempo real sobre la red UDP.
Lo que está en juego
Sostener una cadencia de 128 ticks por segundo en el servidor
Escalar horizontalmente mapa a mapa
Enrutar el tráfico UDP de forma fiable y eficiente
Gestionar la concurrencia (mutex, multi-threading) sin romper la cadencia
La solución propuesta
Qué se construyó
Una infra Kubernetes donde cada mapa corresponde a un pod dedicado, alimentada por un servidor UDP forkeado de ENET, un bus NATS orientado a eventos y un proxy UDP Quilkin en frente.
Por qué esta elección
Dividir por mapa permite escalar de forma independiente, Quilkin se encarga del enrutado UDP, NATS desacopla los servicios y ENET es uno de los protocolos UDP más sólidos para juegos en tiempo real.
Cómo responde a la necesidad
Un pod por mapa, multi-threading y mutexes en el proceso de juego, NATS para los eventos transversales, Quilkin para el enrutado UDP, balanceadores de carga del lado de la infra.
Funcionalidades clave
Un pod Kubernetes por mapa del juego
Servidor UDP basado en un fork de ENET
Cadencia de servidor a 128 Hz por tick
Bus de eventos NATS para la comunicación entre servicios
Proxy UDP Quilkin y balanceadores de carga en la infra
Sincronización mediante mutex y multi-threading
Resultados
Infra capaz de sostener el tiempo real para un MMORPG
Escalabilidad por mapa sin romper la cadencia del servidor
Arquitectura orientada a eventos lista para evolucionar
Stack técnico
Decisiones técnicas usadas en este proyecto.
¿Tienes una necesidad similar?
Hablemos de tu proyecto. Te ayudo a adaptar este enfoque a tu propio contexto.