Probleme mit GameLift Amazon-Flotten debuggen - 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.

Probleme mit GameLift Amazon-Flotten debuggen

Dieses Thema enthält Anleitungen zu Problemen mit der Flottenkonfiguration für eine Amazon GameLift Managed-Hosting-Lösung. Für eine zusätzliche Fehlerbehebung können Sie per Fernzugriff auf eine Flotten-Instance zugreifen, sobald die Flotte aktiv ist. Siehe Stellen Sie eine Remoteverbindung zu GameLift Amazon-Flotteninstanzen her.

Probleme bei der Erstellung von Flotten

Wenn eine Flotte erstellt wird, initiiert der GameLift Amazon-Service einen Workflow, der an jedem Standort der Flotte eine neue Instance bereitstellt und sie für den Betrieb Ihrer Spieleserver vorbereitet. Eine ausführliche Beschreibung finden Sie unter. So funktioniert die Erstellung von GameLift Amazon-Flotten Eine Flotte kann erst dann Spielsitzungen und Spieler hosten, wenn sie den Status Aktiv erreicht hat. In diesem Abschnitt werden die häufigsten Probleme behandelt, die verhindern, dass Flotten aktiv werden.

Herunterladen und Validieren

Während dieser Phase kann die Flottenerstellung fehlschlagen, wenn Probleme mit den extrahierten Build-Dateien auftreten, das Installationsskript nicht ausgeführt werden kann oder wenn die in der Runtime-Konfiguration angegebenen ausführbaren Dateien nicht in den Build-Dateien enthalten sind. Amazon GameLift stellt Protokolle zu jedem dieser Probleme zur Verfügung.

Wenn die Protokolle kein Problem anzeigen, ist es möglich, dass das Problem auf einen internen Service-Fehler zurückzuführen ist. In diesem Fall sollten Sie versuchen, die Flotte erneut zu erstellen. Wenn das Problem weiterhin besteht, sollten Sie den Spiel-Build erneut hochladen (falls die Dateien beschädigt sind). Sie können sich auch an den GameLift Amazon-Support wenden oder eine Frage im Forum stellen.

Erstellung

Probleme, die zu Fehlern während der Build-Phase führen, sind beinahe sicher auf Probleme mit den Dateien des Spiel-Builds und/oder dem Installationsskript zurückzuführen. Stellen Sie sicher, dass Ihre Spiele-Build-Dateien, wie sie auf Amazon hochgeladen wurden GameLift, auf einem Computer installiert werden können, auf dem das entsprechende Betriebssystem ausgeführt wird. Stellen Sie sicher, dass Sie eine saubere Betriebssysteminstallation und keine vorhandene Entwicklungsumgebung verwenden.

Aktivierung

Während der Aktivierungsphase treten Probleme mit der Flottenerstellung am häufigsten auf. Während dieser Phase werden eine Reihe von Elementen getestet, darunter die Funktionsfähigkeit des Spieleservers, die Laufzeitkonfigurationseinstellungen und die Fähigkeit des Spieleservers, über den Server mit dem GameLift Amazon-Dienst zu interagieren. SDK Zu den häufigsten Problemen, die bei der Aktivierung der Flotte auftreten, gehören:

Die Serverprozesse können nicht gestartet werden.

Überprüfen Sie zunächst, ob Sie den Startpfad und die optionalen Startparameter in der Laufzeitkonfiguration der Flotte korrekt festgelegt haben. Sie können die aktuelle Laufzeitkonfiguration der Flotte entweder auf der Flottendetailseite Details () oder durch Aufrufen des AWS CLI Befehls describe-runtime-configurationeinsehen. Wenn die Laufzeitkonfiguration korrekt aussieht, überprüfen Sie, ob es Probleme im Zusammenhang mit den Build-Dateien Ihres Spiels und/oder dem Installationsskript gibt.

Die Serverprozesse werden gestartet, aber die Flotte wird nicht aktiviert.

Wenn Serverprozesse erfolgreich gestartet und ausgeführt werden, die Flotte jedoch nicht in den Status Aktiv wechselt, liegt das wahrscheinlich daran, dass der Serverprozess Amazon nicht darüber informiert GameLift , dass er bereit ist, Spielsitzungen abzuhalten. Vergewissern Sie sich, dass Ihr Spieleserver die API Serveraktion korrekt aufruft ProcessReady() (sieheInitialisieren Sie den Serverprozess).

VPCDie Peering-Verbindungsanfrage ist fehlgeschlagen.

Bei Flotten, die mit einer VPC Peering-Verbindung erstellt wurden (sieheSo richten Sie VPC-Peering mit einer neuen Flotte ein), erfolgt das VPC Peering während dieser Aktivierungsphasen. Wenn ein VPC Peering aus irgendeinem Grund fehlschlägt, wird die neue Flotte nicht in den Status Aktiv versetzt. Sie können den Erfolg oder Misserfolg der Peering-Anfrage nachverfolgen, indem Sie anrufen. describe-vpc-peering-connections Stellen Sie sicher, dass eine gültige VPC Peering-Autorisierung vorhanden ist (describe-vpc-peering-authorizations, da Autorisierungen nur für 24 Stunden gültig sind.

Probleme mit dem Serverprozess

Die Serverprozesse starten, werden jedoch nach kurzer Zeit wieder beendet oder laufen nicht richtig rund.

Ein solches Systemverhalten muss nicht zwangsläufig auf Probleme mit Ihrem Spiele-Build hinweisen, sondern es kann sich auch ergeben, wenn auf der Instance zu viele Serverprozesse gleichzeitig ausgeführt werden. Die optimale Anzahl an gleichzeitigen Prozessen hängt gleichermaßen von den Instance-Typ und den Ressourcenanforderungen Ihrer Spiel-Server ab. Verringern Sie die Anzahl der gleichzeitigen Prozesse, die in der Laufzeitkonfiguration der Flotte eingestellt wird, um zu prüfen, ob sich die Leistung verbessert. Sie können die Laufzeitkonfiguration einer Flotte entweder über die GameLift Amazon-Konsole (bearbeiten Sie die Einstellungen für die Kapazitätszuweisung der Flotte) oder durch Aufrufen des AWS CLI Befehls ändern update-runtime-configuration.

Probleme bei der Flottenlöschung

Die Flotte kann aufgrund der maximalen Anzahl von Instances nicht beendet werden.

Die Fehlermeldung zeigt an, dass die zu löschende Flotte noch aktive Instances hat, was nicht zulässig ist. Sie müssen zunächst eine Flotte auf null aktive Instances reduzieren. Dies geschieht, indem Sie die gewünschte Anzahl der Instances der Flotte manuell auf "0" festlegen und dann darauf warten, dass die Skalierung greift. Stellen Sie sicher, dass Sie die automatische Skalierung deaktivieren, da dies den manuellen Einstellungen entgegenwirkt.

VPCAktionen sind nicht autorisiert.

Dieses Problem gilt nur für Flotten, für die Sie speziell VPC Peering-Verbindungen erstellt haben (siehe. VPC-Peering für Amazon GameLift Dieses Szenario tritt auf, weil das Löschen einer Flotte auch das Löschen der Flotten VPC - und aller VPC Peering-Verbindungen umfasst. Sie müssen zuerst eine Autorisierung einholen, indem Sie den Amazon GameLift Service API CreateVpcPeeringAuthorization() aufrufen oder den AWS CLI Befehl verwendencreate-vpc-peering-authorization. Sobald Sie die Berechtigung haben, können Sie die Flotte löschen.

Probleme mit der Serverflotte in Echtzeit

Zombie-Spielsitzungen: Sie haben ein Spiel gestartet und ausgeführt, aber sie enden nie.

Dieses Problem entsteht wahrscheinlich in einem der folgenden Szenarien:

  • Skript-Updates werden nicht von den Realtime-Servern der Flotte abgerufen.

  • Die Flotte erreicht schnell die maximale Kapazität und verkleinert sich nicht, wenn die Spieleraktivitäten (z. B. neue Spielsitzungsanfragen) abnimmt.

Dies ist mit ziemlicher Sicherheit darauf zurückzuführen, dass Ihr Echtzeit-Skript nicht erfolgreich aufgerufen processEnding wurde. Obwohl die Flotte aktiv wird und Spielsitzungen gestartet werden, gibt es keine Möglichkeit, diese anzuhalten. Das hat zur Folge, dass der Echtzeitserver, auf dem die Spielsitzung ausgeführt wird, nie wieder freigegeben wird, um eine neue Spielsitzung zu starten, und neue Spielsitzungen können nur gestartet werden, wenn neue Echtzeitserver hochgefahren werden. Außerdem wirken sich Aktualisierungen des Echtzeit-Skripts nicht auf bereits laufende Spielsitzungen aus, sondern nur auf einzelne.

Um dies zu verhindern, müssen Scripts einen Mechanismus bereitstellen, der einen processEnding-Aufruf auslöst. Wie in der Beispiel für ein Realtime Server-Skript veranschaulicht, besteht eine Möglichkeit darin, einen Idle-Timeout zu programmieren, bei dem das Script die aktuelle Spielsitzung beendet, wenn für eine bestimmte Zeitspanne kein Spieler verbunden ist.

Wenn Sie jedoch in dieses Szenario fallen, gibt es einige Problemumgehungen, um Ihre Echtzeit-Server zu entlasten. Der Trick besteht darin, den Neustart der Echtzeit-Serverprozesse — oder der zugrunde liegenden Flotteninstanzen — auszulösen. In diesem Fall werden die Spielsitzungen automatisch für Sie geschlossen GameLift . Sobald die Echtzeitserver wieder freigegeben sind, können sie neue Spielsitzungen mit der neuesten Version des Echtzeit-Skripts starten.

Es gibt eine Reihe von Methoden, um dies zu erreichen (abhängig davon, wie umfassend das Problem ist):

  • Skalieren Sie die gesamte Flotte herunter. Diese Methode ist die einfachste, hat aber eine weitreichende Wirkung. Skalieren Sie die Flotte auf null Instances, warten Sie, bis die Flotte vollständig herunterskaliert ist, und skalieren Sie sie dann wieder hoch. Dadurch werden alle vorhandenen Spielsitzungen gelöscht und Sie können mit dem zuletzt aktualisierten Echtzeit-Skript neu beginnen.

  • Remotezugriff auf die Instance und Neustart des Prozesses. Dies ist eine gute Option, wenn Sie nur wenige Prozesse reparieren müssen. Wenn Sie bereits an der Instance angemeldet sind (z. B. um Protokolle zu verfolgen oder zum debuggen), dann kann dies die schnellste Methode sein. Siehe Stellen Sie eine Remoteverbindung zu GameLift Amazon-Flotteninstanzen her.

Wenn Sie sich dafür entscheiden, Way to Call nicht processEnding in Ihr Echtzeit-Skript aufzunehmen, gibt es einige knifflige Situationen, die selbst dann auftreten können, wenn die Flotte aktiv wird und Spielsitzungen gestartet werden. Erstens endet eine laufende Spielsitzung nicht. Infolgedessen ist der Serverprozess, der diese Spielsitzung ausführt, nie frei. Er kann somit keine neue Spielsitzung starten. Zweitens empfängt der Realtime-Server keine Skript-Updates.