Mettons en scène un joueur : vous êtes en train de jouer la partie de votre vie (et vous aimeriez bien pouvoir la regarder en streaming aujourd'hui). Vous êtes en train d'aligner le coup de tête gagnant parfait et vous imaginez déjà l'affichage de l'écran de la victoire... et puis le jeu traîne en longueur. Vous êtes éliminé par votre adversaire. La partie est terminée.
Nous sommes tous passés par là lorsqu'un petit problème dans un jeu en temps réel vous a fait perdre votre moment de gloire et votre tour de victoire. La frustration engendrée par cette expérience a entraîné un regain de popularité pour les jeux entièrement auto-hébergés afin que vous puissiez contrôler votre propre destin en tant que joueur. Malheureusement, l'auto-hébergement n'est pas une option pour tous les jeux ni pour tous les joueurs. Et si nous vous disions qu'il existe un moyen de reléguer le lag dans l'ombre sans avoir à acheter et à entretenir votre propre matériel ?
Avec un peu de développement, vous pouvez construire votre propre paradis de jeu distribué en rapprochant le serveur de vous (le joueur) et en créant votre propre expérience à faible latence. Entrez dans le trio de puissance : Xonotic, K3set la puissance de l'informatique en périphérie avec Cloud d'Akamai.
Qu'est-ce que l'avantage ?
Au lieu de s'appuyer sur des centres de données massifs et centralisés situés à des centaines (voire des milliers) de kilomètres, l'informatique en périphérie rapproche la puissance de traitement de la source des données - dans ce cas, c'est vous. Cela réduit considérablement le temps de latence qui crée ce redoutable décalage, simplement parce que les données n'ont pas besoin de voyager aussi loin.
Pourquoi K3s ? Légèreté et agilité
K3s est une distribution Kubernetes légère. Considérez Kubernetes (ou K8s) comme un gestionnaire incroyablement intelligent et efficace pour vos applications, qui gère le déploiement, la mise à l'échelle et s'assure que tout fonctionne sans heurts. K3s est un dérivé de K8s spécialement conçu pour les environnements à ressources limitées. Il est petit, rapide et incroyablement efficace - et peut être votre assistant d'infrastructure de jeu.
Et Agones ? Le maestro des serveurs de jeux
Agones est un projet open-source, natif de Kubernetes, spécifiquement conçu pour gérer des serveurs de jeux dédiés. Il gère les complexités de la mise à l'échelle, de l'allocation et de l'exécution des instances de serveurs de jeu afin que vous puissiez vous concentrer sur le fragging et non sur la configuration des serveurs.
Construisons ! (La partie amusante)
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.
Étape 1 : Terraform Time - Poser les bases
Terraform est notre outil "Infrastructure as Code". Il nous permet de définir notre configuration de serveur dans un fichier, ce qui la rend reproductible et facile à gérer. Commençons par l'installer :
brew install terraform
(Remarque : si vous n'utilisez pas macOS, consultez le site Web deTerraform pour obtenir des instructions d'installation pour votre système d'exploitation).

Étape 2 : Mise en place du projet - Votre QG de jeu
Créons un répertoire pour notre projet :
mkdir xonotic
cd xonotic
Étape 3 : Le script Terraform - Construire votre serveur (et votre pare-feu !)
Créer un fichier nommé main.tf
et collez le code suivant.
C'est ici que la magie opère ! Nous définissons notre instance Linode, mettons en place un pare-feu et configurons tout ce dont nous avons besoin.
Dans ce cas, nous déployons une instance de calcul dédiée à Denver, l'une des régions de calcul distribuées d'Akamai. Nous recommandons d'utiliser l'instance dédiée de 8 Go qui dispose de 4 vCPU, ce qui est approprié pour plusieurs challengers.
Remarque : pour que cet exemple de code fonctionne tel quel, vous devrez avoir accès aux régions de calcul distribuées, dont la disponibilité est actuellement limitée.
# 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
}
Créez maintenant un fichier nommé terraform.tfvars
et ajoutez votre jeton API Linode et un mot de passe root (n'oubliez pas de remplacer les espaces réservés !):
linode_token = "your_linode_api_token"
root_password = "your_root_password"
admin_ip = "your_ipv4_address/32"
Note de sécurité importante : Gardez votre terraform.tfvars
fichier sécurisé et jamais l'intégrer dans un dépôt public !
Si vous n'êtes pas sûr de votre adresse IP actuelle, vous pouvez utiliser la commande suivante qui vous renverra votre adresse IP publique actuelle.
curl http://whatismyip.akamai.com
Étape 4 : Initialisation et application - Laissez Terraform faire son travail !
Commencez par initialiser Terraform:
terraform init
Ceci télécharge le Linode Provider. Ensuite, appliquez la configuration :
terraform apply
Vous serez invité à confirmer les modifications. Tapez yes
et appuyez sur Entrée. Terraform va maintenant provisionner votre instance Linode et configurer le pare-feu. Cela peut prendre quelques minutes. Prenez un café (ou, vous savez, entraînez-vous à viser...).
Étape 5 : SSH In - Votre serveur vous attend !
Une fois Terraform terminé, il fournira l'adresse IP de votre instance. Vous pouvez également trouver le nom DNS inversé dans l'onglet réseau de votre instance nouvellement créée sur le Linode Cloud Manager. Utilisez SSH pour vous connecter :
ssh root@your_instance_ip_or_dns
Remplacer your_instance_ip_or_dns
avec l'adresse IP ou le nom DNS actuel. Il vous sera demandé de saisir le mot de passe root que vous avez défini dans la section terraform.tfvars
.
Étape 6 : Installer K3s - La centrale Kubernetes légère
C'est étonnamment facile ! Il suffit de lancer cette commande sur votre instance Linode :
curl -sfL https://get.k3s.io | sh -
Cela permet de télécharger et d'installer K3s. Cela prendra une minute ou deux.
Étape 7 : Installer Agones - L'heure de l'orchestration du serveur de jeu !
Nous allons maintenant installer Agones, qui gérera nos serveurs de jeux Xonotic. Exécutez les commandes suivantes :
kubectl create namespace agones-system
kubectl apply --server-side -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/install/yaml/install.yaml
Cela crée un espace de noms dédié pour Agones et le déploie sur votre cluster K3s.
Étape 8 : Confirmer que les Agones fonctionnent - Vérifier le statut
Assurons-nous que tout se passe bien :
kubectl describe --namespace agones-system pods
Vous devriez voir une sortie indiquant que les pods Agones sont en cours d'exécution.
Étape 9 : Déployer et récupérer le statut du serveur de jeu Xonotic.
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
watch kubectl describe gameserver
Étape 10 : Obtenir l'adresse IP du serveur de jeu - Prêt à se connecter !
Obtenez une liste de vos serveurs de jeu et de leurs adresses IP :
kubectl get gs
Étape 11 : Client Xonotic - Téléchargement et installation
Si vous ne l'avez pas encore, téléchargez le client Xonotic pour votre système d'exploitation à partir de https://xonotic.org/.
Étape 12 : Connecter et jouer ! - C'est l'heure des fragments !
- Lancer Xonotic : Démarrer le client.
- Mode multijoueur : Go dans "Multiplayer".
- Connexion au serveur : Choisissez de rejoindre un serveur manuellement.
- Saisir l'IP et le port : Saisissez l'adresse IP et le port que vous avez obtenus de l'application
kubectl get gs
commandement. - Participez au jeu : Connectez-vous et profitez de l'expérience Xonotic à faible latence !
Nettoyer (quand vous avez fini de dominer)
Supprimer la flotte Agones et les instances du serveur de jeu :
kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
Vous pouvez alors utiliser terraform destroy
dans le répertoire de votre projet pour supprimer l'instance Linode et le pare-feu afin d'éviter tout coût supplémentaire.
Conclusion : L'avenir des jeux est entre vos mains
Vous venez de construire une installation de jeu puissante et à faible latence en utilisant l'informatique de pointe, les K3 et les Agones. Vous venez de construire une installation de jeu puissante et à faible latence utilisant l'informatique de périphérie, les K3 et les Agones, qui montre comment vous pouvez vous affranchir des serveurs appartenant aux fournisseurs de jeux et rapprocher votre expérience de jeu de votre domicile. Les jeux sont ainsi plus fluides, plus réactifs et plus amusants - et il n'y a plus de pertes dues à la latence.
Akamai met à la disposition de ses clients du Cloud Computing plus de 25 régions de calcul réparties dans le monde entier. Pour rapprocher encore plus les charges de travail de leur domicile, vous pouvez exploiter nos régions de calcul distribuées pour déployer des instances dédiées dans les grandes métropoles mal desservies par les fournisseurs de cloud computing, notamment Auckland, Johannesburg et Bogota. Ouvrez un compte, consultez la liste complète des régions distribuées disponibles et contactez nos consultants en cloud computing pour savoir si vous pouvez accéder aux ressources dans votre région ou pour créer un ticket d'assistance.
If you want to learn more, check out our guide on how to set up a Xonotic server with K3s and Agones.
Commentaires