SeaTyrants GameServer — Infrastructure MMORPG
Game server UDP haute fréquence sur Kubernetes
Une infra MMORPG qui tient le 128 Hz, map par map, derrière un proxy UDP.
Le besoin client
Contexte
SeaTyrants est un MMORPG temps réel qui doit gérer des milliers de joueurs avec une latence faible et une cadence serveur élevée.
Problème
Pas d'infra capable de découper les maps, maintenir le 128 Hz par tick et router le trafic UDP de manière scalable.
Objectif
Construire une infrastructure Kubernetes capable de scaler par map et de tenir le temps réel sur le réseau UDP.
Les enjeux
Tenir une cadence de 128 ticks par seconde côté serveur
Scaler horizontalement carte par carte
Router le trafic UDP de manière fiable et performante
Gérer la concurrence (mutex, multi-threading) sans casser la cadence
La solution proposée
Ce qui a été construit
Une infra Kubernetes où chaque map du jeu correspond à un pod dédié, alimentée par un serveur UDP fork de ENET, un bus NATS event-driven et un proxy UDP Quilkin en frontal.
Pourquoi ce choix
Découper par map permet de scaler indépendamment, Quilkin gère le routage UDP, NATS découple les services et ENET reste l'un des protocoles UDP les plus solides pour le jeu temps réel.
Comment ça répond au besoin
Un pod par map, multi-threading et mutex côté processus de jeu, NATS pour les événements transverses, Quilkin pour le routage UDP, load balancers côté infra pour absorber la charge.
Les fonctionnalités clés
Un pod Kubernetes par map de jeu
Serveur UDP basé sur un fork de ENET
Cadence serveur à 128 Hz par tick
Bus d'événements NATS pour la communication inter-services
Proxy UDP Quilkin et load balancers côté infrastructure
Synchronisation par mutex et multi-threading
Les résultats
Infra capable de tenir le temps réel pour un MMORPG
Scalabilité par map sans casser la cadence serveur
Architecture event-driven prête à évoluer
Stack technique
Choix techniques utilisés sur ce projet.
Vous avez un besoin similaire ?
Parlons de votre projet. Je vous aide à transposer cette approche à votre propre contexte.