View a markdown version of this page

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

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 GameLift Amazon-Server Local

Anmerkung

Dieses Thema behandelt das Testen von Spielen, die in das Server-SDK nur 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 die Server-SDK-Version 5.x verwenden, finden Sie Richten Sie lokale Tests ein mit GameLift Amazon-Server Überall lokale Tests mit einer Amazon GameLift Servers Anywhere-Flotte unter. Hinweise zur Migration von SDK 4.x auf 5.x finden Sie unter. Migrieren Sie zum Server-SDK 5.x für Amazon-Server 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 zu konfigurieren, um dein Spiel zu hosten — kann jedes Mal mehrere oder mehr 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 zusammenbringen 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, Integritätsprüfungen sowie API-Aufrufen und -Antworten. Amazon GameLift Servers Local erkennt eine Teilmenge der AWS SDK-Aktionen fürAmazon GameLift Servers. Du kannst Anrufe vom AWS CLI oder von deinem Spielclient aus 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 anrufen GameLiftServerSDK::ProcessEnding und dann den Vorgang 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 Spieleserverprozess beendet werden. Du musst dann manuell einen anderen Serverprozess starten.

Amazon GameLift Serverslocal unterstützt die folgenden APIs:

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Einrichten GameLift Amazon-Server local

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. Die GameLiftLocal.jar Datei ist im GameLift-CSharp-ServerSDK-4.0.2.zip Artefakt enthalten.

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

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

  • Java 8

Testen Sie einen Spieleserver

Wenn Sie nur Ihren Spieleserver testen möchten, können Sie den verwenden, AWS CLI um Aufrufe des Spielclients 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 wird ordnungsgemäß gestartet 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: <process ID> gefunden! Wurde initSDK () aufgerufen?“

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

  3. Starte den 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 Webservice-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 Eingabeaufforderungsfenster führen AWS gamelift Befehle zu Antworten, wie in der AWS CLI Befehlsreferenz dokumentiert.

  4. Erstellen Sie eine Spielsitzung.

    Senden Sie mit dem AWS CLI eine CreateGameSession () -Anforderung ab. 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 Spielsitzungsobjekt einschließlich einer Spielsitz-ID. Beachten Sie, dass der Status der neuen Spielsitzung „Activating“ lautet. Der Status ändert sich in Aktiv, sobald Ihr Spieleserver aufgerufen wird. ActivateGameSession Wenn Sie den geänderten Status sehen möchten, verwenden Sie 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 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. 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 stellt erfolgreich AWS SDK-Anfragen an den Amazon GameLift Servers lokalen Dienst, unter anderem zum Erstellen von Spielsitzungen, zum Abrufen von Informationen zu bestehenden Spielsitzungen und zum Erstellen von Spielersitzungen.

  • 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 Testen Sie 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 Richten Sie das ein GameLift Amazon-Server API 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.

    • 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 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 AWS CLI zum Anrufen verwendenDescribePlayerSessions(), sollte sich der Sitzungsstatus des Players 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. Vielleicht möchtest du das auch verwenden, AWS CLI um Statusänderungen zu verfolgen.

    • Der Spieler trennt sich von einer Spielsitzung — Amazon GameLift Servers Lokale Logmeldungen 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 Logmeldungen sollten zeigen, dass dein Spieleserver anruftTerminateGameSession().

      Anmerkung

      Die vorherige Anleitung lautete, anzurufenTerminateGameSession(), wenn eine Spielsitzung beendet wird. Diese Methode ist mit Amazon GameLift Servers Server SDK v4.0.1 veraltet. Siehe Beende eine Spielsitzung.

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

Variationen mit Lokal

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 des AWS SDK werden Flottenkennungen nicht validiert. Es kann sich um einen beliebigen Zeichenkettenwert handeln, der die Parameteranforderungen (^fleet-\S+) erfüllt.

  • 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