Server für ein Open-Source-Spiel bereitstellen
In dieser Kurzanleitung erfahren Sie, wie Sie mit Spieleserverbereichen, Clustern, Bereitstellungen, Konfigurationen und Roll-outs in Game Servers über die Google Cloud CLI arbeiten.
Klicken Sie auf Anleitung, um die Schritt-für-Schritt-Anleitung für diese Aufgabe direkt in der Google Cloud Console auszuführen:
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
- Prüfen Sie, ob die Game Services API aktiviert ist. Spiele Services API aktivieren
Shell auswählen
Sie können diese Kurzanleitung entweder in Cloud Shell oder in Ihrer lokalen Shell ausführen.
Cloud Shell ist eine Shell-Umgebung für die Verwaltung von Ressourcen, die in Google Cloud gehostet werden. Das gcloud
-Befehlszeilentool ist in Cloud Shell vorinstalliert. Die gcloud CLI stellt die primäre Befehlszeile für Game Servers bereit.
Cloud Shell
So starten Sie Cloud Shell:
Rufen Sie die Google Cloud Console auf.
Klicken Sie in der oberen rechten Ecke der Console auf die Schaltfläche Cloud Shell aktivieren:
In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet.
Mit dieser Shell führen Sie gcloud
-Befehle aus.
Lokale Shell
Installieren Sie die gcloud CLI.
Prüfen Sie, ob Sie das gewünschte Standardprojekt für die Google Cloud CLI festgelegt haben. Andernfalls müssen Sie das Flag --project
später für jeden Befehl explizit angeben:
gcloud config list project
Wenn Sie den folgenden Befehl nicht ausführen können, um ein Standardprojekt festzulegen, ersetzen Sie PROJECT_ID
durch Ihre gewünschte Projekt-ID:
gcloud config set project PROJECT_ID
Führen Sie den folgenden Befehl aus, um Ihre Version der Google Cloud CLI zu verifizieren.
Für Game Servers ist Version 306.0.0
oder höher der gcloud CLI erforderlich.
gcloud version
Aktualisieren Sie Ihre Installation mit dem folgenden Befehl:
gcloud components update
Wenn Sie eine lokale Shell auswählen, müssen Sie möglicherweise das Kubernetes-Befehlszeilentool kubectl
installieren:
gcloud components install kubectl
Google Kubernetes Engine-Cluster erstellen
So erstellen Sie einen Google Kubernetes Engine-Cluster:
Aktivieren Sie in der Cloud Console die Kubernetes Engine API.
Führen Sie den folgenden Befehl aus, um einen kostenoptimierten Cluster mit einem Knoten in der Zone
us-central1-a
zu erstellen:gcloud container clusters create gcgs-quickstart \ --cluster-version=1.23 \ --tags=game-server \ --scopes=gke-default \ --num-nodes=1 \ --no-enable-autoupgrade \ --machine-type=e2-standard-2 \ --zone=us-central1-a
Führen Sie den folgenden Befehl aus, um die Anmeldedaten für den GKE-Cluster abzurufen, den Sie im vorherigen Schritt erstellt haben:
gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
kubectl
verwendet diese Anmeldedaten, um Befehle auf Ihren Kubernetes-Clustern auszuführen. Weitere Informationen finden Sie unter Clusterzugriff für kubectl konfigurieren.
Agones in GKE installieren
In diesem Abschnitt installieren Sie die Open-Source-Plattform Agones für Gaming-Infrastrukturen. So installieren Sie Agones:
Führen Sie den folgenden Befehl aus, um den Namespace
agones-system
zu erstellen:kubectl create namespace agones-system
Führen Sie den folgenden Befehl aus, um Agones zu installieren:
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
Sie können prüfen, ob das Agones-System ausgeführt wird, indem Sie den Status der Kubernetes-Pods prüfen:
kubectl get --namespace agones-system pods
Alle Pods müssen den Status
Running
haben:NAME READY STATUS RESTARTS AGE agones-allocator-6694dcc89-7r75d 1/1 Running 0 28s agones-allocator-6694dcc89-m7ghq 1/1 Running 0 28s agones-allocator-6694dcc89-qp6cm 1/1 Running 0 28s agones-controller-56c98db844-llzzc 1/1 Running 0 22s agones-ping-d9d74c5c6-8kmt6 1/1 Running 0 24s agones-ping-d9d74c5c6-xwn4h 1/1 Running 0 24s
Game Servers-Ressourcen erstellen
So erstellen Sie Game Servers-Ressourcen:
Erstellen Sie einen Bereich am selben Speicherort wie der GKE-Cluster:
gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
Registrieren Sie den Agones-GKE-Cluster bei Game Servers und hängen Sie ihn an den Bereich an, den Sie im vorherigen Schritt erstellt haben:
gcloud game servers clusters create cluster-quickstart \ --realm=realm-quickstart \ --gke-cluster locations/us-central1-a/clusters/gcgs-quickstart \ --namespace=default \ --location us-central1 \ --no-dry-run
Erstellen Sie eine Bereitstellung des Gameservers, mit der Sie die Konfigurationen Ihres Gameservers speichern und dann in Ihren Gameserver-Clustern bereitstellen:
gcloud game servers deployments create deployment-quickstart
Nachdem Sie die Bereitstellung eines Gameservers abgeschlossen haben, können Sie über die gcloud CLI eine Gameserverkonfiguration hinzufügen.
Kopieren Sie das folgende Beispielmanifest für eine Agones Fleet-Spezifikation in eine neue Datei mit dem Namen
fleet_configs.yaml
im aktuellen Verzeichnis:- name: fleet-spec-1 fleetSpec: replicas: 2 template: metadata: labels: foo: bar spec: ports: - name: default portPolicy: Dynamic containerPort: 7654 template: spec: containers: - name: simple-game-server image: gcr.io/agones-images/simple-game-server:0.3
Führen Sie den folgenden Befehl aus, um die Gameserver-Konfiguration zu erstellen:
gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
Führen Sie den folgenden Befehl aus, um das Rollout zu aktualisieren:
gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
Führen Sie den folgenden Befehl aus, um das Rollout einer Fleet unter dem Standard-Namespace zu prüfen:
kubectl get fleet
Im Folgenden wird die erwartete Ausgabe dargestellt:
NAME SCHEDULING DESIRED CURRENT ALLOCATED READY AGE fleet-deployment-quickstart-config-1 Packed 2 2 0 2 4s
Die Ausgabe bestätigt, dass Sie eine Fleet mit zwei einfachen UDP-Serverreplikaten in Ihrem Cluster bereitgestellt haben, die Verbindungen akzeptieren können.
Verbindung zum Spieleserver testen
So testen Sie die Verbindung zum Spieleserver:
Erstellen Sie eine Firewallregel, um die UDP-Ports zu öffnen, die für die Verbindung mit dem Cluster erforderlich sind:
gcloud compute firewall-rules create gcgs-quickstart-firewall \ --allow udp:7000-8000 \ --target-tags game-server \ --description "Firewall to allow game server udp traffic"
Rufen Sie als Nächstes die IP-Adresse und die Portnummer für einen einzelnen Gameserver ab:
kubectl get gameserver
Die Ausgabe des Befehls sieht in etwa so aus:
NAME STATE ADDRESS PORT NODE AGE fleet-deployment-quickstart-config-1-nndvr-5gvch Ready IP_ADDRESS PORT_NUMBER gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7 11s fleet-deployment-quickstart-config-1-nndvr-vqwpl Ready IP_ADDRESS PORT_NUMBER gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7 11s
Zum Testen der Konnektivität führen Sie den Befehl Netcat aus. Führen Sie den folgenden Befehl aus, um Netcat unter Linux zu installieren:
sudo apt install netcat
Führen Sie den folgenden Befehl aus, um den Test zu starten:
nc -u IP_ADDRESS PORT_NUMBER
Geben Sie als Nächstes
Hello
ein. Die Ausgabe des Befehls sieht in etwa so aus:Hello > ACK: Hello
Beenden Sie den Test mit Strg+C.
(Optional) Server für ein Open-Source-Spiel bereitstellen
Sie können das Rollout aktualisieren, um eine Flotte mit zwei Open-Source-Gameserver-Replikaten in Ihrem Cluster bereitzustellen. Diese Gameserver unterstützen die Mehrspieler-Version des Rennspiels SuperTuxKart.
Überschreiben Sie die vorhandene Datei
fleet_configs.yaml
mit der folgenden Agones Fleet-Spezifikation:- name: supertuxkart fleetSpec: replicas: 2 template: metadata: labels: version: "1.0" spec: ports: - name: default containerPort: 8080 health: initialDelaySeconds: 30 periodSeconds: 60 template: spec: containers: - name: supertuxkart image: gcr.io/agones-images/supertuxkart-example:0.3
Sie können eine vorhandene Gameserver-Konfiguration nicht aktualisieren, da sie unveränderlich sind. Erstellen Sie eine neue Konfiguration, die auf das aktualisierte Manifest der Fleet-Spezifikation verweist:
gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
Aktualisieren Sie das Rollout mit der neuen Konfiguration:
gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
Rufen Sie die IP-Adresse und die Portnummer für einen einzelnen Gameserver ab:
kubectl get gameserver
Starten Sie den SuperTuxKart-Client.
Klicken Sie im Hauptmenü auf die Schaltfläche Online und dann auf die Schaltfläche Serveradresse eingeben.
Geben Sie die IP-Adresse und die Portnummer für einen einzelnen Gameserver aus einem vorherigen Schritt ein.
Klicken Sie auf Rennen starten, um das Spiel zu starten.
Sie können den SuperTuxKart-Client auf andere Plattformen herunterladen, um eine Verbindung zum selben Server herzustellen und am Rennen teilzunehmen.
Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:
Wenn Sie die in dieser Kurzanleitung erstellten Ressourcen nicht behalten möchten, können Sie das Projekt löschen:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Wenn Sie das Projekt beibehalten möchten, führen Sie die folgenden Schritte aus, um die in dieser Kurzanleitung erstellten Ressourcen manuell zu löschen:
Führen Sie den folgenden Befehl aus, um die Firewallregel zu löschen:
gcloud compute firewall-rules delete gcgs-quickstart-firewall
Führen Sie den folgenden Befehl aus, um das Standard-Rollout zu löschen:
gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
Führen Sie den folgenden Befehl aus, um die Gameserver-Konfiguration zu löschen:
gcloud game servers configs delete config-1 --deployment deployment-quickstart
Wenn Sie den optionalen Abschnitt ausgeführt haben, löschen Sie die zusätzliche Gameserver-Konfiguration:
gcloud game servers configs delete stk-1 --deployment deployment-quickstart
Führen Sie den folgenden Befehl aus, um die Gameserver-Bereitstellung zu löschen:
gcloud game servers deployments delete deployment-quickstart
Führen Sie den folgenden Befehl aus, um den Gameserver-Cluster zu löschen:
gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
Führen Sie den folgenden Befehl aus, um den Bereich zu löschen:
gcloud game servers realms delete realm-quickstart --location=us-central1
Führen Sie den folgenden Befehl aus, um die Game Services API zu deaktivieren:
gcloud services disable gameservices.googleapis.com
Führen Sie den folgenden Befehl aus, um den GKE-Cluster zu löschen:
gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
Nächste Schritte
Eine technische Einführung in Game Servers-Konzepte finden Sie unter Übersicht über Game Servers.
Informationen zu bestimmten Game Servers-Aufgaben finden Sie in den Anleitungen.
Sehen Sie sich das Beispielprojekt von Terraform an.