Versetzen wir uns in die Lage eines Spielers: Sie haben das Spiel Ihres Lebens (und würden am liebsten ausgerechnet heute streamen). Sie sind dabei, den perfekten Kopfschuss zu landen, und stellen sich schon die Anzeige des Siegers auf dem Bildschirm vor ... und dann stockt das Spiel. Dein Gegner schaltet dich aus. Das Spiel ist vorbei.
Wir alle haben schon einmal erlebt, dass eine kleine Panne beim Spielen in Echtzeit den Moment des Ruhmes und der Siegesrunde gekostet hat. Die Frustration über genau diese Erfahrung hat dazu geführt, dass Spiele, die komplett selbst gehostet werden, immer beliebter werden, damit man als Spieler sein eigenes Schicksal in die Hand nehmen kann. Aber leider ist die Selbstverwaltung nicht für jedes Spiel oder jeden Spieler eine Option. Aber was wäre, wenn wir Ihnen sagen würden, dass es einen Weg gibt, Lag in das Schattenreich zu verbannen, ohne dass Sie Ihre eigene Hardware kaufen und warten müssen?
Mit ein wenig Entwicklungsarbeit können Sie Ihr eigenes verteiltes Spieleparadies aufbauen, indem Sie den Server näher zu Ihnen (dem Spieler) bringen und Ihr eigenes Erlebnis mit niedriger Latenz schaffen. Hier kommt das Power-Trio: Xonotic, K3sund die Leistung des Edge Computing mit Akamai Cloud.
Was ist eigentlich der Vorteil?
Anstatt sich auf riesige, zentralisierte Datenzentren zu verlassen, die Hunderte (oder sogar Tausende) von Kilometern entfernt sein können, bringt Edge Computing die Verarbeitungsleistung näher an die Datenquelle - in diesem Fall sind das Sie. Dadurch wird die Latenzzeit, die die gefürchtete Verzögerung verursacht, drastisch reduziert, weil die Daten nicht so weit reisen müssen.
Warum K3s? Leicht und wendig bleiben
K3s ist eine leichtgewichtige Kubernetes-Distribution. Stellen Sie sich Kubernetes (oder K8s) als einen unglaublich intelligenten und effizienten Manager für Ihre Anwendungen vor, der die Bereitstellung und Skalierung übernimmt und dafür sorgt, dass alles reibungslos läuft. K3s ist ein Ableger von K8s, der speziell für ressourcenbeschränkte Umgebungen entwickelt wurde. Es ist klein, schnell und unglaublich effektiv - und kann Ihnen bei der Gaming-Infrastruktur behilflich sein.
Und Agones? Der Game Server Maestro
Agones ist ein Open-Source-Projekt, das auf Kubernetes basiert und speziell für die Verwaltung dedizierter Spieleserver entwickelt wurde. Es kümmert sich um die Komplexität der Skalierung, Zuweisung und des Betriebs von Spieleserverinstanzen, sodass Sie sich auf das Fragmentieren konzentrieren können, anstatt sich mit Serverkonfigurationen herumzuschlagen.
Lasst uns anfangen zu bauen! (Der spaßige Teil)
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.
Schritt 1: Terraform Time - Das Fundament legen
Terraform ist unser "Infrastructure as Code"-Tool. Damit können wir unser Server-Setup in einer Datei definieren, wodurch es wiederholbar und einfach zu verwalten ist. Installieren Sie es zunächst:
brew install terraform
(Hinweis: Wenn Sie nicht mit macOS arbeiten, finden Sie auf der Terraform eine Installationsanleitung für Ihr Betriebssystem).

Schritt 2: Projekteinrichtung - Ihr Spiel-Hauptquartier
Legen wir ein Verzeichnis für unser Projekt an:
mkdir xonotic
cd xonotic
Schritt 3: Das Terraform - Aufbau des Servers (und der Firewall!)
Erstellen Sie eine Datei mit dem Namen main.tf
und fügen Sie den folgenden Code ein.
Hier passiert die Magie! Wir definieren unsere Linode-Instanz, richten eine Firewall ein und konfigurieren alles, was wir brauchen.
In diesem Fall stellen wir eine dedizierte Compute-Instanz in Denver bereit, einer der verteilten Compute-Regionen von Akamai. Wir empfehlen die 8 GB Dedicated-Instanz mit 4 vCPUs, die für mehrere Challenger geeignet ist.
Hinweis: Sie müssen Zugang zu den verteilten Rechenregionen erhalten, die derzeit nur in begrenztem Umfang verfügbar sind, damit dieser Beispielcode in der vorliegenden Form funktioniert.
# 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
}
Erstellen Sie nun eine Datei mit dem Namen terraform.tfvars
und fügen Sie Ihr Linode API-Token und ein Root-Passwort hinzu (vergessen Sie nicht, die Platzhalter zu ersetzen!):
linode_token = "your_linode_api_token"
root_password = "your_root_password"
admin_ip = "your_ipv4_address/32"
Wichtiger Sicherheitshinweis: Behalten Sie Ihr terraform.tfvars
Datei sicher und niemals Übertragen Sie es in ein öffentliches Repository!
Wenn Sie sich über Ihre aktuelle IP-Adresse nicht sicher sind, können Sie den folgenden Befehl verwenden, der Ihre aktuelle öffentliche IP-Adresse zurückgibt.
curl http://whatismyip.akamai.com
Schritt 4: Initialisieren und Anwenden - Lassen Sie Terraform seine Arbeit machen!
Initialisieren Sie zunächst Terraform:
terraform init
Dadurch wird der Linode-Provider heruntergeladen. Wenden Sie dann die Konfiguration an:
terraform apply
Sie werden aufgefordert, die Änderungen zu bestätigen. Geben Sie ein. yes
und drücken Sie Enter. Terraform wird nun Ihre Linode-Instanz bereitstellen und die Firewall einrichten. Dies kann ein paar Minuten dauern. Holen Sie sich einen Kaffee (oder, Sie wissen schon, üben Sie Ihr Ziel...).
Schritt 5: SSH - Ihr Server erwartet Sie!
Sobald Terraform fertig ist, gibt es die IP-Adresse Ihrer Instanz aus. Sie können den Reverse-DNS-Namen auch auf der Netzwerk-Registerkarte Ihrer neu erstellten Instanz im Linode Cloud Manager finden. Verwenden Sie SSH zum Verbinden:
ssh root@your_instance_ip_or_dns
Ersetzen your_instance_ip_or_dns
mit der aktuellen IP-Adresse oder dem DNS-Namen. Sie werden aufgefordert, das Root-Passwort einzugeben, das Sie in terraform.tfvars
.
Schritt 6: Installieren Sie K3s - das leichtgewichtige Kubernetes-Kraftpaket
Das ist erstaunlich einfach! Führen Sie einfach diesen Befehl auf Ihrer Linode-Instanz aus:
curl -sfL https://get.k3s.io | sh -
Dadurch wird K3s heruntergeladen und installiert. Es wird ein oder zwei Minuten dauern.
Schritt 7: Installieren Sie Agones - Zeit für die Orchestrierung des Spieleservers!
Jetzt installieren wir Agones, das unsere Xonotic-Spieleserver verwalten wird. Führen Sie diese Befehle aus:
kubectl create namespace agones-system
kubectl apply --server-side -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/install/yaml/install.yaml
Dadurch wird ein dedizierter Namespace für Agones erstellt und auf Ihrem K3s-Cluster bereitgestellt.
Schritt 8: Bestätigen Sie, dass Agones läuft - Prüfen Sie den Status
Lassen Sie uns dafür sorgen, dass alles reibungslos funktioniert:
kubectl describe --namespace agones-system pods
Sie sollten eine Ausgabe sehen, die anzeigt, dass die Agones-Pods ausgeführt werden.
Schritt 9: Bereitstellen und Abrufen des Xonotic Game Server-Status.
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
watch kubectl describe gameserver
Schritt 10: Abrufen der Spielserver-IP - Bereit zum Verbinden!
Erstellen Sie eine Liste Ihrer Spieleserver und deren IP-Adressen:
kubectl get gs
Schritt 11: Xonotic Client - Herunterladen und Installieren
Wenn Sie ihn noch nicht haben, laden Sie den Xonotic-Client für Ihr Betriebssystem von https://xonotic.org/ herunter .
Schritt 12: Verbinden und spielen! - Frag Time!
- Xonotic starten: St arten Sie den Client.
- Mehrspieler-Modus: Go zu "Multiplayer".
- Server-Verbindung: Wählen Sie diese Option, um einem Server manuell beizutreten.
- Geben Sie IP und Port ein: Geben Sie die IP-Adresse und den Port ein, die Sie von der
kubectl get gs
-Befehls ersetzt. - Nehmen Sie am Spiel teil: Verbinden Sie sich und genießen Sie Ihr Xonotic-Erlebnis mit niedriger Latenz!
Aufräumen (wenn Sie mit dem Dominieren fertig sind)
Die Agones-Flotte und die Spielserver-Instanzen entfernen:
kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
Sie können dann terraform destroy
in Ihrem Projektverzeichnis, um die Linode-Instanz und die Firewall zu entfernen, damit keine weiteren Kosten entstehen.
Schlussfolgerung: Die Zukunft des Spielens liegt in Ihren Händen
Sie haben soeben eine leistungsstarke Spieleinrichtung mit niedriger Latenz aufgebaut, die Edge-Computing, K3s und Agones verwendet. Dies zeigt, wie Sie sich nicht mehr vollständig auf die Server von Spieleanbietern verlassen müssen, sondern Ihr Spielerlebnis näher an Ihr Zuhause bringen können. Das macht das Spielen flüssiger, reaktionsschneller und macht mehr Spaß - und keine latenzbedingten Verluste mehr.
Akamai verfügt über mehr als 25 weltweit verteilte Core-Compute-Regionen, die unseren Cloud-Computing-Kunden zur Verfügung stehen. Um Workloads noch näher an Ihr Zuhause zu bringen, können Sie unsere verteilten Rechenregionen nutzen, um dedizierte Instanzen in großen, von Cloud-Anbietern unterversorgten Metropolen wie Auckland, Johannesburg und Bogotá bereitzustellen. Melden Sie sich für ein Konto an, sehen Sie sich die vollständige Liste der verfügbaren verteilten Regionen an, und setzen Sie sich mit unseren Cloud-Beratern in Verbindung, um herauszufinden, ob Sie für den Zugriff auf Ressourcen an Ihrem Standort berechtigt sind, oder erstellen Sie ein Support-Ticket.
If you want to learn more, check out our guide on how to set up a Xonotic server with K3s and Agones.
Kommentare