Testen Sie Ihre Integration mit Amazon GameLift Local - Amazon GameLift

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 Local

Anmerkung

Verwenden Sie dieses Testverfahren, wenn Sie eine Version des Amazon GameLift Server SDK verwenden, nämlich Version 4.x oder früher. Ihr Server-SDK-Paket enthält eine kompatible Version von Amazon GameLift Local. Wenn Sie Server-SDK Version 5.x verwenden, finden Sie unter Testen Sie Ihre Integration mit GameLift Anywhere Amazon-Flotten lokale Tests mit einer GameLift Anywhere Amazon-Flotte.

Verwenden Sie Amazon GameLift Local, um eine eingeschränkte Version des verwalteten GameLift Amazon-Dienstes auf einem lokalen Gerät auszuführen und Ihre Spieleintegration damit zu testen. Dieses Tool ist nützlich, wenn Sie die Integration Ihres Spiels als iterative Entwicklung durchführen. Die Alternative — jeden neuen Build auf Amazon hochzuladen GameLift und eine Flotte zu konfigurieren, um Ihr Spiel zu hosten — kann jedes Mal 30 Minuten oder länger dauern.

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

  • Ihr Gameserver ist korrekt in das Server-SDK integriert und kommuniziert ordnungsgemäß mit dem GameLift Amazon-Dienst, um neue Spielesitzungen zu starten, neue Spieler aufzunehmen und Gesundheit und Status zu melden.

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

Amazon GameLift Local ist ein Befehlszeilentool, das eine eigenständige Version des verwalteten Amazon-Dienstes startet. GameLift Amazon GameLift Local stellt außerdem ein laufendes Ereignisprotokoll mit der Initialisierung von Serverprozessen, Zustandsprüfungen sowie API-Aufrufen und -Antworten bereit. Amazon GameLift Local erkennt eine Teilmenge der AWS SDK-Aktionen für AmazonGameLift. Sie können Aufrufe über die AWS CLI oder von Ihrem Spiele-Client aus ausführen. Alle API-Aktionen werden lokal genauso ausgeführt wie im GameLift Amazon-Webservice.

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

Amazon GameLift Local unterstützt die folgenden APIs:

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Amazon GameLift lokal einrichten

Amazon GameLift Local wird als ausführbare .jar Datei im Paket mit dem Server-SDK bereitgestellt. Es kann unter Windows oder Linux ausgeführt und mit jeder von Amazon GameLift unterstützten Sprache verwendet werden.

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

  • Ein Build des Amazon GameLift Server SDK Version 3.1.5 bis 4.x.

  • Java 8

Teste einen Gameserver

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

  • Der Spieleserver wird ordnungsgemäß gestartet und das Amazon GameLift Server SDK initialisiert.

  • Im Rahmen des Startvorgangs teilt der Spieleserver Amazon mit, GameLift dass der Server bereit ist, Spielesitzungen zu hosten.

  • Der Gameserver sendet während des Betriebs GameLift jede Minute den Gesundheitsstatus an Amazon.

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

  1. Starten Sie Amazon GameLift Local.

    Ö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.

    Starte deinen in Amazon GameLift integrierten Gameserver lokal. Sie brauchen dabei nicht den Endpunkts für den Spiel-Server zu ändern.

    Im lokalen Befehlszeilenfenster geben Protokollmeldungen an, dass Ihr Spieleserver eine Verbindung zum Amazon GameLift Local-Service hergestellt hat. Das bedeutet, dass Ihr Gameserver das Amazon GameLift Server SDK (mitInitSDK()) erfolgreich initialisiert hat. Das SDK hat ProcessReady() mit den angezeigten Protokollpfaden aufgerufen und ist nun im Erfolgsfall bereit, eine Spielsitzung zu hosten. Während der Spieleserver läuft, GameLift protokolliert Amazon jeden Gesundheitsstatusbericht vom Spieleserver. 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: "ProcessReadyhat keinen Prozess mit pID:<process ID>! gefunden Wurde initSDK () aufgerufen?“

    • Warnung: „Für einen Prozess mit pID:<process ID>! existiert bereits ein Prozessstatus Wird ProcessReady (...) mehr als einmal aufgerufen?“

  3. Starten Sie die 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 Web Service-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 CLIBefehlsreferenz 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 lokalen Befehlszeilenfenster geben Protokollmeldungen an, dass Amazon GameLift Local Ihrem Gameserver einen onStartGameSession Rückruf 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"

    In dem AWS CLI Fenster GameLift antwortet Amazon mit einem Spielsitzungsobjekt, das eine Spielsitzungs-ID enthält. Beachten Sie, dass der Status der neuen Spielsitzung „Activating“ lautet. Der Status ändert sich zu Aktiv, sobald dein Gameserver aufgerufen wird. ActivateGameSession Wenn Sie sich bezüglich der Statusänderung vergewissern möchten, starten Sie über die AWS CLI den Aufruf DescribeGameSessions().

    { "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 Gameserver und einen 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. Auf diese Weise können Sie programmatische Aufrufe von Ihrem Spieleclient an Amazon GameLift Local testen. Sie können die folgenden Aktionen überprüfen:

  • Der Spielclient stellt erfolgreich AWS SDK-Anfragen an den Amazon GameLift Local Service, 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. Starten Sie Amazon GameLift Local.

    Ö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.

    Starte deinen in Amazon GameLift integrierten Gameserver lokal. Weitere Informationen zu Meldungsprotokollen finden Sie unter Teste einen Gameserver.

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

    Um deinen Spielclient mit dem Amazon GameLift Local Service zu verwenden, musst du die folgenden Änderungen an der Einrichtung deines Spielclients vornehmen, wie unter beschriebenAmazon GameLift auf einem Backend-Service einrichten:

    • Ä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.

    • Legen Sie die AWS-Anmeldeinformationen fest. 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 du den Spielclient startest, sollten im lokalen Befehlszeilenfenster Logmeldungen darauf hinweisen, dass der Spielclient initialisiert wurde GameLiftClient und erfolgreich mit dem GameLift Amazon-Dienst kommuniziert wurde.

  4. Test-Game-Client-Aufrufe an den GameLift Amazon-Dienst.

    Ü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. Logmeldungen zeigen, wenn Amazon GameLift Local Ihren Gameserver auffordert, eine Spielesitzung zu starten (onStartGameSessionCallback), und ActivateGameSession wenn Ihr Gameserver sie aufruft, eine erfolgreiche Meldung erhält. 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 über die AWS CLI DescribePlayerSessions() aufrufen, sollte sich der Status der Spielersitzung von „Reserved“ in „Active“ ändern.

  6. Stellen Sie sicher, dass Ihr Gameserver den Spiel- und Spielerstatus an den GameLift Amazon-Dienst meldet.

    Damit Amazon GameLift die Spielernachfrage verwalten und Messwerte korrekt melden kann, muss Ihr Gameserver verschiedene Statusmeldungen an Amazon GameLift zurückmelden. Überprüfen Sie, ob Local Ereignisse zu den folgenden Aktionen protokolliert. Sie können die Statusänderungen auch über die AWS CLI nachverfolgen.

    • Der Spieler trennt die Verbindung zu einer Spielsitzung — Die Logmeldungen von Amazon GameLift Local sollten zeigen, dass Ihr Gameserver 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.

    • Die Spielsitzung endet — Die Logmeldungen von Amazon GameLift Local sollten zeigen, dass Ihr Gameserver anruftTerminateGameSession().

      Anmerkung

      Frühere Anweisungen lauteten, anzurufenTerminateGameSession(), wenn eine Spielsitzung beendet wurde. Diese Methode ist in Amazon GameLift Server SDK v4.0.1 veraltet. Siehe Beenden Sie eine Spielsitzung.

    • Der Serverprozess ist beendet — Die Logmeldungen von Amazon GameLift Local sollten zeigen, dass Ihr Gameserver anruftProcessEnding(). Ein AWS CLI-Aufruf an DescribeGameSessions() sollte eine Statusänderung von Active nach Terminated (bzw. Terminating) sichtbar machen.

Variationen mit lokalen

Beachten Sie bei der Verwendung von Amazon GameLift Local Folgendes:

  • Im Gegensatz zum GameLift Amazon-Webservice verfolgt Local nicht den Systemstatus eines Servers und initiiert den onProcessTerminate Rückruf. Local beendet lediglich die Protokollierung für den Zustand des Spiel-Servers.

  • Bei Aufrufe des AWS-SDK werden Flotten-IDs nicht validiert. Sie können also eine beliebigen Zeichenfolge sein, die den Parameteranforderungen entspricht (^fleet-\S+).

  • Mit Local erstellte Spielsitzungs-ID haben eine abweichende Struktur. Sie enthalten die Zeichenfolge local, wie hier dargestellt:

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