Testen Sie Ihre Integration mit Amazon GameLift Servers Local - Amazon GameLift Servers

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Testen Sie Ihre Integration mit Amazon GameLift Servers Local

Anmerkung

In diesem Thema werden nur Tests für Spiele behandelt, die in das Server-SDK für Amazon GameLift Servers Version 3.x und 4.x integriert sind. Ihr Server-SDK-Paket enthält eine kompatible Version von Amazon GameLift Servers Local. Wenn Sie das Server-SDK Version 5.x verwenden, finden Sie unter Lokales Testen mit GameLift Server-SDK 5.x Informationen zu lokalen Tests mit einer Amazon GameLift Servers Anywhere-Flotte. Anleitungen zur Migration von SDK 4.x auf 5.x finden Sie unter Migration zum Server-SDK 5.x. GameLift

Verwenden Sie Amazon GameLift Servers Local, um eine eingeschränkte Version des verwalteten Amazon GameLift Servers-Denstes auf einem lokalen Gerät auszuführen und Ihre Spielintegration damit zu testen. Dieses Tool ist nützlich, wenn Sie die Integration Ihres Spiels als iterative Entwicklung durchführen. Die Alternative — jeden neuen Build hochzuladen Amazon GameLift Servers und eine Flotte für dein Spiel zu konfigurieren — kann jedes Mal mehrere oder mehr Zeit in Anspruch nehmen.

Mit Amazon GameLift Servers Local können Sie Folgendes überprüfen:

  • Ihr Spielserver ist korrekt in das Server-SDK integriert und kommuniziert ordnungsgemäß mit dem Amazon GameLift Servers-Service, um neue Spielsitzungen zu starten, neue Spieler zu akzeptieren und den Zustand und Status zu melden.

  • Ihr Spielclient ist korrekt in das AWS SDK für integriert Amazon GameLift Servers und kann Informationen zu bestehenden Spielsitzungen abrufen, neue Spielsitzungen starten, Spieler zu Spielen hinzufügen und eine Verbindung zur Spielsitzung herstellen.

Amazon GameLift ServersLocal ist ein Befehlszeilentool, das eine eigenständige Version des verwalteten Dienstes startet. Amazon GameLift Servers Amazon GameLift Servers Local bietet auch ein laufendes Ereignisprotokoll mit der Initialisierung von Serverprozessen, Zustandsprüfungen sowie API-Aufrufen und -Antworten. Amazon GameLift Servers Local erkennt eine Teilmenge der AWS SDK-Aktionen fürAmazon GameLift Servers. Du kannst vom AWS CLI oder von deinem Spielclient aus Anrufe tätigen. Alle API-Aktionen werden lokal genauso wie im Amazon GameLift Servers-Web-Service ausgeführt.

Jeder Serverprozess sollte nur eine einzige Spielsitzung hosten. Die Spielsitzung ist die ausführbare Datei, mit der Sie eine Verbindung zu Amazon GameLift Servers Local herstellen. Wenn die Spielsitzung abgeschlossen ist, sollten Sie den Vorgang aufrufen GameLiftServerSDK::ProcessEnding und dann beenden. Wenn Sie lokal mit Amazon GameLift Servers Local testen, können Sie mehrere Serverprozesse starten. Jeder Prozess stellt eine Verbindung zu Amazon GameLift Servers Local her. Sie können dann für jeden Serverprozess eine Spielsitzung erstellen. Wenn deine Spielsitzung endet, sollte dein Gameserver-Prozess beendet werden. Sie müssen dann manuell einen anderen Serverprozess starten.

Amazon GameLift Serverslocal unterstützt Folgendes APIs:

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Amazon GameLift ServersLokal einrichten

Amazon GameLift Servers Local wird als eine ausführbare .jar-Datei bereitgestellt, die mit dem Server-SDK mitgeliefert wird. Sie kann unter Windows oder Linux ausgeführt und mit jeder Amazon GameLift Servers-unterstützten Sprache verwendet werden. Für die SDK-Version 4.0.2 können Sie sie von den offiziellen GitHub Versionen herunterladen. GameLiftLocalDie.jar-Datei ist im Artefakt GameLift-CSharp-ServerSDK -4.0.2.zip enthalten.

Bevor Sie Local ausführen, müssen Sie außerdem Folgendes installieren.

  • Ein Build des Server-SDK für die Versionen 3.1.5 bis 4.x. Amazon GameLift Servers

  • Java 8

Teste einen Spieleserver

Wenn du nur deinen Spieleserver testen möchtest, kannst du den verwenden, AWS CLI um Spielclient-Aufrufe an den Amazon GameLift Servers lokalen Dienst zu simulieren. Dies reicht aus, um zu überprüfen, ob Ihr Spiel-Server bezüglich der folgenden Punkte entsprechend Ihren Erwartungen funktioniert:

  • Der Spieleserver startet ordnungsgemäß und initialisiert das Server-SDK für. Amazon GameLift Servers

  • Als Teil des Startvorgangs teilt der Spielserver Amazon GameLift Servers mit, dass der Server bereit ist, Spielsitzungen zu hosten.

  • Während der Ausführung sendet der Spielserver jede Minute den Systemstatus an Amazon GameLift Servers.

  • Die Spiel-Server reagiert auf Anforderungen, eine neue Spielsitzung zu starten.

  1. Amazon GameLift Servers Local starten.

    Öffnen Sie ein Befehlszeilenfenster, navigieren Sie zu dem Verzeichnis mit der Datei GameLiftLocal.jar und führen Sie sie aus. Standardmäßig horcht Local auf Port 8080 auf Anforderungen von Spielclients. Wenn Sie eine andere Portnummer angeben möchten, verwenden Sie den Parameter -p. Beispiel:

    java -jar GameLiftLocal.jar -p 9080

    Wenn Local startet, sehen Sie Protokolle, die angeben, dass zwei lokale Server gestartet wurden, einer, der auf Ihren Spiel-Server horcht und ein zweiter, der auf Aufrufe seitens des Spielclients oder über die AWS CLI wartet. Die beiden Protokolle berichten fortlaufend weiter über die Aktivitäten auf den beiden lokalen Servern, einschließlich der Kommunikation mit Ihren Spielkomponenten.

  2. Starten Sie Ihren Spiel-Server.

    Starten Sie Ihren Amazon GameLift Servers-integrierten Spielserver lokal. Sie brauchen dabei nicht den Endpunkts für den Spiel-Server zu ändern.

    Im Fenster der lokalen Eingabeaufforderung zeigen Protokollmeldungen an, dass Ihr Spielserver eine Verbindung mit dem Amazon GameLift Servers Local-Service hergestellt hat. Das bedeutet, dass dein Spieleserver das Server-SDK für Amazon GameLift Servers (mit) erfolgreich initialisiert hat. InitSDK() Das SDK hat ProcessReady() mit den angezeigten Protokollpfaden aufgerufen und ist nun im Erfolgsfall bereit, eine Spielsitzung zu hosten. Während der Spielserver läuft, protokolliert Amazon GameLift Servers jeden Statusbericht vom Spielserver. Das folgende Beispiel zu Protokollierungsmeldungen zeigt einen erfolgreich integrierten Spiel-Server:

    16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK connected: /127.0.0.1:64247 16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK pid is 17040, sdkVersion is 3.1.5 and sdkLanguage is CSharp 16:50:53,217 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - NOTE: Only SDK versions 3.1.5 and above are supported in GameLiftLocal! 16:50:53,451 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady received from: /127.0.0.1:64247 and ackRequest requested? true 16:50:53,543 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady data: logPathsToUpload: "C:\\game\\logs" logPathsToUpload: "C:\\game\\error" port: 1935 16:50:53,544 INFO || - [HostProcessManager] nioEventLoopGroup-3-1 - Registered new process true, true, 16:50:53,558 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onReportHealth received from /127.0.0.1:64247 with health status: healthy

    Es können u. a. die Fehler- und Warnmeldungen angezeigt werden:

    • Fehler: "ProcessReady hat keinen Prozess mit pID gefunden:<process ID>! Wurde initSDK () aufgerufen?“

    • Warnung: „Der Prozessstatus für den Prozess mit der PId ist bereits vorhanden:<process ID>! Wird ProcessReady (...) mehr als einmal aufgerufen?“

  3. Starte das AWS CLI.

    Sobald Ihr Spiel-Server erfolgreich ProcessReady() ruft, können Sie die Clientaufrufe absetzen. Öffnen Sie ein Befehlszeilenfenster und starten Sie das AWS CLI -Tool. Der verwendet AWS CLI standardmäßig den Amazon GameLift Servers Webdienst-Endpunkt. Sie müssen diesen Endpunkt in allen Anfragen mit dem Parameter --endpoint-url mit dem lokalen Endpunkt überschreiben, wie im folgenden Beispiel dargestellt.

    AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080 --fleet-id fleet-123

    Im AWS CLI Befehlszeilenfenster führen AWS gamelift Befehle zu Antworten, wie in der AWS CLI Befehlsreferenz dokumentiert.

  4. Erstellen Sie eine Spielsitzung.

    Reichen Sie mit dem AWS CLI eine CreateGameSession() Anfrage ein. Die Anforderung sollte der erwarteten Syntax entsprechen. Bei Local kann der FleetId-Parameter auf eine beliebige Zeichenfolge eingestellt sein (^fleet-\S+).

    AWS gamelift create-game-session --endpoint-url http://localhost:9080 --maximum-player-session-count 2 --fleet-id fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d

    Im Fenster der lokalen Eingabeaufforderung zeigen Protokollmeldungen an, dass Amazon GameLift Servers Local Ihrem Spielserver einen onStartGameSession-Callback gesendet hat. Wenn eine Spielsitzung erfolgreich erstellt wurde, antwortet Ihr Spiel-Server durch einen Aufruf von ActivateGameSession.

    13:57:36,129 INFO || - [SDKInvokerImpl] Thread-2 - Finished sending event to game server to start a game session: arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6. Waiting for ack response.13:57:36,143 INFO || - [SDKInvokerImpl] Thread-2 - Received ack response: true13:57:36,144 INFO || - [CreateGameSessionDispatcher] Thread-2 - GameSession with id: arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6 created13:57:36,227 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onGameSessionActivate received from: /127.0.0.1:60020 and ackRequest requested? true13:57:36,230 INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onGameSessionActivate data: gameSessionId: "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890"

    Amazon GameLift ServersAntwortet im AWS CLI Fenster mit einem Objekt für die Spielsitzung, einschließlich einer Spielsitzungs-ID. Beachten Sie, dass der Status der neuen Spielsitzung „Activating“ lautet. Der Status ändert sich zu Aktiv, sobald Ihr Spieleserver aufgerufen wird. ActivateGameSession Wenn du den geänderten Status sehen möchtest, verwende den, AWS CLI um anzurufenDescribeGameSessions().

    { "GameSession": { "Status": "ACTIVATING", "MaximumPlayerSessionCount": 2, "FleetId": "fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "GameSessionId": "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890", "IpAddress": "127.0.0.1", "Port": 1935 } }

Teste einen Spieleserver und Client

Im die gesamte Integration Ihres Spiels zu überprüfen (inklusive der Verbindung von Spielern mit Spielen), können Sie gleichzeitig Ihren Spiel-Server und Ihren Spieleclient lokal ausführen. Dadurch können Sie programmgesteuerte Aufrufe von Ihrem Spielclient an Amazon GameLift Servers Local testen. Sie können die folgenden Aktionen überprüfen:

  • Der Spielclient sendet erfolgreich AWS SDK-Anfragen an den Amazon GameLift Servers lokalen Dienst, unter anderem um Spielsitzungen zu erstellen, Informationen über bestehende Spielsitzungen abzurufen und Spielersitzungen zu erstellen.

  • Die Spiel-Server validiert die Spieler ordnungsgemäß, wenn diese versuchen, einem Spiel beizutreten. Bei validierte Spielern kann der Spiel-Server Daten über den Spieler abrufen (falls implementiert).

  • Die Spiel-Server meldet den Verbindungsverlust, wenn ein Spieler das Spiel verlässt.

  • Die Spiel-Server meldet das Ende einer Spielsitzung.

  1. Amazon GameLift Servers Local starten.

    Öffnen Sie ein Befehlszeilenfenster, navigieren Sie zu dem Verzeichnis mit der Datei GameLiftLocal.jar und führen Sie sie aus. Standardmäßig horcht Local auf Port 8080 auf Anforderungen von Spielclients. Wenn Sie eine andere Portnummer angeben möchten, verwenden Sie den Parameter -p. Beispiel:

    ./gamelift-local -p 9080

    Wenn Local startet, sehen Sie Protokolle, die angeben, dass zwei lokale Server gestartet wurden, einer, der auf Ihren Spiel-Server horcht und ein zweiter, der auf Aufrufe seitens des Spielclients oder über die AWS CLI wartet.

  2. Starten Sie Ihren Spiel-Server.

    Starten Sie Ihren Amazon GameLift Servers-integrierten Spielserver lokal. Weitere Informationen zu Meldungsprotokollen finden Sie unter Teste einen Spieleserver.

  3. Konfigurieren Sie Ihren Spieleclient für Local und starten Sie ihn.

    Um Ihren Spielclient mit dem Amazon GameLift Servers Local-Service zu verwenden, müssen Sie an der Einrichtung Ihres Spielclients die folgenden Änderungen vornehmen, wie unter Amazon GameLift ServersAuf einem Backend-Dienst einrichten beschrieben:

    • Ändern Sie das ClientConfiguration-Objekt so, dass es auf Ihren lokalen Endpunkt verweist, z. B. http://localhost:9080.

    • Legen Sie einen Wert für die Zielflotten-ID fest. Bei Local brauchen Sie keine echte Flotten-ID anzugeben, es reicht aus, eine beliebige gültige Zeichenfolge (^fleet-\S+) anzugeben, z. B. fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d.

    • AWS Anmeldeinformationen einrichten. Für Lokale benötigen Sie keine echten AWS -Anmeldeinformationen. Sie können den Zugriffsschlüssel und den geheimen Schlüssels auf eine beliebige Zeichenfolge festlegen.

    Sobald Sie den Spielclient gestartet haben, sollten die Protokollmeldungen im lokalen Eingabeaufforderungsfenster anzeigen, dass er den GameLiftClient initialisiert hat und erfolgreich mit dem Amazon GameLift Servers-Service kommuniziert wird.

  4. Spielclient-Aufrufe an den Amazon GameLift Servers-Service testen.

    Überprüfen Sie, ob Ihr Spieleclient erfolgreich einige oder alle der folgenden API-Aufrufe ausführen kann:

    In dem Local-Befehlszeilenfenster werden nur Aufrufe an CreateGameSession() mit entsprechenden Meldungen protokolliert. Protokollmeldungen zeigen an, wenn Amazon GameLift Servers Local Ihren Spielserver auffordert, eine Spielsitzung zu starten (onStartGameSession-Callback) und einen erfolgreichen ActivateGameSession erhält, wenn Ihr Spielserver ihn aufruft. In dem AWS CLI -Fenster führen alle API-Aufrufe entweder zu Antworten oder zu Fehlermeldungen, wie dokumentiert.

  5. Überprüfen Sie, ob Ihr Spiel-Server die Verbindungen neuer Spieler validiert.

    Stellen Sie nach dem Erstellen einer Spielsitzung und einer Spielersitzung eine direkte Verbindung zu der Spielsitzung her.

    In dem Befehlszeilenfenster von Local sollten Meldungen darauf hinweisen, dass der Spiel-Server eine AcceptPlayerSession()-Anfrage gesendet hat, um die neue Spielerverbindung zu überprüfen. Wenn Sie das Anrufen verwendenDescribePlayerSessions(), sollte AWS CLI sich der Sitzungsstatus des Spielers von Reserviert auf Aktiv ändern.

  6. Überprüfen Sie, ob Ihr Spielserver dem Amazon GameLift Servers-Service den Spiel- und Spielerstatus meldet.

    Damit Amazon GameLift Servers die Spielernachfrage verwaltet und Metriken korrekt gemeldet werden können, muss Ihr Spielserver verschiedene Status an Amazon GameLift Servers zurückmelden. Überprüfen Sie, ob Local Ereignisse zu den folgenden Aktionen protokolliert. Möglicherweise möchten Sie den auch verwenden, AWS CLI um Statusänderungen zu verfolgen.

    • Spieler trennt sich von einer Spielsitzung — Amazon GameLift Servers Lokale Protokollnachrichten sollten zeigen, dass dein Spieleserver anruftRemovePlayerSession(). Ein AWS CLI -Aufruf an DescribePlayerSessions() sollte eine Statusänderung von Active nach Completed sichtbar machen. Sie können auch DescribeGameSessions() aufrufen, um zu überprüfen, ob sich die Anzahl der Spieler in der aktuellen Spielsitzung um 1 vermindert.

    • Spielsitzung endet — Amazon GameLift Servers Lokale Protokollnachrichten sollten zeigen, dass dein Spieleserver anruftTerminateGameSession().

      Anmerkung

      Bisher wurde empfohlen, TerminateGameSession() beim Beenden einer Spielsitzung anzurufen. Diese Methode ist mit Amazon GameLift Servers Server SDK v4.0.1 veraltet. Siehe Beenden Sie eine Spielsitzung.

    • Der Serverprozess ist beendet — Amazon GameLift Servers Lokale Protokollnachrichten sollten zeigen, dass dein Spieleserver anruft. ProcessEnding() Ein AWS CLI Aufruf von DescribeGameSessions() sollte eine Statusänderung von Active zu Terminated (oderTerminating) widerspiegeln.

Variationen mit lokalen

Bei der Verwendung von Amazon GameLift Servers Local sollten Sie Folgendes beachten:

  • Anders als der Amazon GameLift Servers-Web-Service verfolgt Local nicht den Zustand eines Servers und initiiert den onProcessTerminate-Callback nicht. Local beendet lediglich die Protokollierung für den Zustand des Spiel-Servers.

  • Bei Aufrufen an das AWS SDK IDs werden Fleet nicht validiert und es kann sich um einen beliebigen Zeichenkettenwert handeln, der die Parameteranforderungen (^fleet-\S+) erfüllt.

  • Mit Local IDs erstellte Spielsitzungen haben eine andere Struktur. Sie enthalten die Zeichenfolge local, wie hier dargestellt:

    arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6