Kurzanleitung: Server für ein Open-Source-Spiel bereitstellen

Server für ein Open-Source-Spiel bereitstellen

In dieser Kurzanleitung erfahren Sie, wie Sie mit Game Server-Bereichen, -Clustern, -Bereitstellungen, -Konfigurationen und -Roll-outs in Game Servers mit der Google Cloud-Befehlszeile arbeiten.


Wenn Sie eine direkte Anleitung für diese Aufgabe direkt in der Google Cloud Console aufrufen möchten, klicken Sie auf Anleitung:

Anleitung


Die folgenden Abschnitte führen Sie durch dieselben Schritte wie das Klicken auf Anleitung.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  6. Prüfen Sie, ob die Game Services API aktiviert ist.
  7. Game 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. Über die gcloud-Befehlszeile können Sie die primäre Befehlszeile für Game Servers nutzen.

Cloud Shell

So starten Sie Cloud Shell:

  1. Rufen Sie die Google Cloud Console auf.

    Google Cloud Console

  2. 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 Default-Projekt für die Google Cloud CLI festgelegt haben. Andernfalls müssen Sie das Flag --project für jeden Befehl später 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-Befehlszeile zu bestätigen. Für Game Servers ist Version 306.0.0 oder höher der gcloud-Befehlszeile 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:

  1. Aktivieren Sie in der Cloud Console die Kubernetes Engine API.

    API aktivieren

  2. 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.22 \
    --tags=game-server \
    --scopes=gke-default \
    --num-nodes=1 \
    --no-enable-autoupgrade \
    --machine-type=e2-standard-2 \
    --zone=us-central1-a
    
  3. 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:

  1. Führen Sie den folgenden Befehl aus, um den Namespace agones-system zu erstellen:

    kubectl create namespace agones-system
    
  2. Führen Sie den folgenden Befehl aus, um Agones zu installieren:

    kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.23.0/install/yaml/install.yaml
    
  3. 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:

  1. Erstellen Sie einen Bereich am selben Speicherort wie der GKE-Cluster:

    gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
    
  2. 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
    
  3. 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
    

    Jetzt, da Sie eine Gameserver-Bereitstellung haben, können Sie eine Gameserver-Konfiguration über die gcloud-Befehlszeile hinzufügen.

  4. 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
    
  5. 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
    
  6. 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
    
  7. 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.

Konnektivität zum Spieleserver testen

So testen Sie die Verbindung zum Spieleserver:

  1. 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"
    
  2. 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
    
  3. 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
    
  4. Führen Sie den folgenden Befehl aus, um den Test zu starten:

    nc -u IP_ADDRESS PORT_NUMBER
    
  5. Geben Sie als Nächstes Hello ein. Die Ausgabe des Befehls sieht in etwa so aus:

    Hello
    > ACK: Hello
    
  6. 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.

  1. Ü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
    
  2. 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
    

  3. Aktualisieren Sie das Rollout mit der neuen Konfiguration:

    gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
    

  4. Rufen Sie die IP-Adresse und die Portnummer für einen einzelnen Gameserver ab:

    kubectl get gameserver
    

  5. Laden Sie einen SuperTuxKart-Client herunter.

  6. Starten Sie den SuperTuxKart-Client.

  7. Klicken Sie im Hauptmenü auf die Schaltfläche Online und dann auf die Schaltfläche Serveradresse eingeben.

  8. Geben Sie die IP-Adresse und die Portnummer für einen einzelnen Gameserver aus einem vorherigen Schritt ein.

  9. 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:

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

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:

  1. Führen Sie den folgenden Befehl aus, um die Firewallregel zu löschen:

    gcloud compute firewall-rules delete gcgs-quickstart-firewall
    
  2. 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
    
  3. 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
    
  4. Führen Sie den folgenden Befehl aus, um die Gameserver-Bereitstellung zu löschen:

    gcloud game servers deployments delete deployment-quickstart
    
  5. 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
    
  6. Führen Sie den folgenden Befehl aus, um den Bereich zu löschen:

    gcloud game servers realms delete realm-quickstart --location=us-central1
    
  7. Führen Sie den folgenden Befehl aus, um die Game Services API zu deaktivieren:

    gcloud services disable gameservices.googleapis.com
    
  8. Führen Sie den folgenden Befehl aus, um den GKE-Cluster zu löschen:

    gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
    

Weitere Informationen

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.