Zum Inhalt springen
BlogBerechnen SieKein Lag, alles Frag: Verbessern Sie Ihr Gaming mit Xonotic, K3s und Edge Computing

Kein Lag, alles Frag: Verbessern Sie Ihr Gaming mit Xonotic, K3s und Edge Computing

No_Lag_Alle_Frag_Level_Up_Ihr_Gaming

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!

  1. Xonotic starten: St arten Sie den Client.
  2. Mehrspieler-Modus: Go zu "Multiplayer".
  3. Server-Verbindung: Wählen Sie diese Option, um einem Server manuell beizutreten.
  4. Geben Sie IP und Port ein: Geben Sie die IP-Adresse und den Port ein, die Sie von der kubectl get gs -Befehls ersetzt.
  5. 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

Kommentar abgeben

Ihre E-Mail Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit *gekennzeichnet