Probleme mit der GameLift Amazon-Flotte beheben - 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 der GameLift Amazon-Flotte beheben

Dieses Thema enthält Anleitungen zu Problemen mit der Flottenkonfiguration für eine von Amazon GameLift verwaltete 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 Remote-Verbindung zu Amazon- GameLift Flotten-Instances.

Probleme bei der Erstellung von Flotten

Wenn eine Flotte erstellt wird, initiiert der GameLift Amazon-Dienst einen Workflow, der an jedem Standort der Flotte eine neue Instanz bereitstellt und diese für den Betrieb Ihrer Spieleserver vorbereitet. Eine ausführliche Beschreibung finden Sie unterSo funktioniert die GameLift Amazon-Flottenerstellung. Eine Flotte kann keine Spielsitzungen und Spieler hosten, bis sie den Status Aktiv erreicht hat. In diesem Abschnitt werden die häufigsten Probleme erörtert, die verhindern, dass Flotten aktiv werden.

Herunterladen und Validieren

In dieser Phase kann die Flottenerstellung fehlschlagen, wenn Probleme mit den extrahierten Build-Dateien auftreten, das Installationsskript nicht ausgeführt wird oder wenn die in der Laufzeitkonfiguration angegebenen ausführbaren Dateien nicht in den Build-Dateien enthalten sind. Amazon GameLift stellt zu jedem dieser Probleme Protokolle 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 auf Amazon hochgeladenen Game-Build-Dateien auf einem Computer installiert werden könnenGameLift, 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. In dieser Phase werden eine Reihe von Elementen getestet, darunter die Funktionsfähigkeit des Spielservers, die Einstellungen für die Laufzeitkonfiguration und die Fähigkeit des Spielservers, mithilfe des Server-SDK mit dem GameLift Amazon-Dienst zu interagieren. 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 indem AWS CLI Sie den Befehl aufrufen describe-runtime-configuration. 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 eine wahrscheinliche Ursache darin, dass der Serverprozess Amazon nicht darüber informiertGameLift, dass er bereit ist, Spielesitzungen zu veranstalten. Stellen Sie sicher, dass Ihr Spiel-Server die Server-API-Aktion ProcessReady() ordnungsgemäß aufruft (siehe Initialisieren Sie den Serverprozess).

VPC-Peering-Verbindungsanforderung fehlgeschlagen.

Für Flotten, die mit einer VPC-Peering-Verbindung erstellt werden (siehe So richten Sie VPC-Peering mit einer neuen Flotte ein), erfolgt das VPC-Peering während dieser Activating (Aktivierung) Phasen. Wenn ein VPC-Peering aus irgendeinem Grund fehlschlägt, kann die neue Flotte nicht in den Status Active (Aktiv) wechseln. 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 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 Kapazitätszuweisungseinstellungen der Flotte) oder indem Sie den AWS CLI Befehl aufrufen 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.

VPC-Aktionen 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 der Prozess des Löschens einer Flotte auch das Löschen der VPC der Flotte und aller VPC-Peering-Verbindungen beinhaltet. Sie müssen zuerst eine Autorisierung einholen, indem Sie die Amazon GameLift Service API CreateVpcPeeringAuthorization() aufrufen oder den AWS CLI-Befehl create-vpc-peering-authorization verwenden. 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 Echtzeitservern der Flotte empfangen.

  • 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 Realtime-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 Realtime-Server, auf dem die Spielsitzung läuft, nie freigegeben wird, um eine neue zu starten, und neue Spielsitzungen können nur gestartet werden, wenn neue Realtime-Server eingerichtet werden. Darüber hinaus wirken sich Aktualisierungen des Realtime-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 geraten, gibt es einige Problemumgehungen, um Ihre Echtzeitserver zu lösen. Der Trick besteht darin, den Neustart der Echtzeit-Serverprozesse — oder der zugrunde liegenden Flotteninstanzen — auszulösen. In diesem Fall werden die Spielsitzungen GameLift automatisch für Sie geschlossen. Sobald die Echtzeit-Server frei sind, können sie mit der neuesten Version des Realtime-Skripts neue Spielsitzungen 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 bestehenden Spielsitzungen gelöscht und Sie können mit dem zuletzt aktualisierten Echtzeit-Skript von vorne 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 Remote-Verbindung zu Amazon- GameLift Flotten-Instances.

Wenn du dich dafür entscheidest, processEnding in deinem Echtzeit-Skript keine Art zu rufen, gibt es einige knifflige Situationen, die auftreten können, selbst 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 nimmt der Realtime-Server keine Skript-Updates auf.