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.
Füge Amazon GameLift zu deinem Spieleserver hinzu
Ihr benutzerdefinierter Spieleserver muss mit Amazon kommunizieren GameLift, da jeder Spieleserverprozess in der Lage sein muss, auf Ereignisse zu reagieren, die Amazon GameLift startet. Ihr Spieleserver muss Amazon auch über den Serverprozessstatus und die Spielerverbindungen auf dem GameLift Laufenden halten. Weitere Informationen darüber, wie Ihr Spieleserver, Ihr Backend-Service, Ihr Spieleclient und Amazon bei der Verwaltung des Spielhostings GameLift zusammenarbeiten, finden Sie unterInteraktionen zwischen Spielclient und Server mit Amazon GameLift.
Um Ihren Spieleserver für die Interaktion mit Amazon vorzubereiten GameLift, fügen Sie den GameLift Amazon-Server SDK zu Ihrem Gameserver-Projekt hinzu und integrieren Sie die in diesem Thema beschriebenen Funktionen. Der Server SDK ist in mehreren Sprachen verfügbar. Weitere Informationen zum GameLift Amazon-Server SDK finden Sie unterHolen Sie sich die GameLift Amazon-Entwicklungstools.
SDKAPIServerreferenzen:
Initialisieren Sie den Serverprozess
Fügen Sie Code hinzu, um die Kommunikation mit Amazon herzustellen GameLift und zu melden, dass der Serverprozess bereit ist, eine Spielsitzung zu hosten. Dieser Code muss vor jedem GameLift Amazon-Code ausgeführt werden.
-
Initialisieren Sie den GameLift API Amazon-Client durch einen Anruf
InitSdk()
. Um einen Spieleserverprozess zu initialisieren, der auf einer von Amazon GameLift verwalteten EC2 Instance ausgeführt wird, verwenden Sie den StandardInitSDK()
(C++) (C#) (Unreal) (Go) (C++) ohne Parameter. Amazon stellt GameLift für Sie GameLift automatisch eine Verbindung zu Amazon her. Um einen Spieleserverprozess zu initialisieren, der auf einem Amazon läuft GameLift Anywhere RufenInitSdk()
Sie die Rechenressource wie folgt auf:ServerParameters
-
Der Websocket, URL der für die Verbindung zu deinem Spieleserver verwendet wurde.
-
Die ID des Prozesses, der zum Hosten deines Spieleservers verwendet wird.
-
Die ID des Computers, auf dem deine Gameserver-Prozesse gehostet werden.
-
Die ID der GameLift Flotte, die Ihren Amazon enthält GameLift Anywhere berechnen.
-
Das durch den GameLift Amazon-Vorgang generierte Autorisierungstoken
GetComputeAuthToken
.
-
-
Teilen Sie Amazon mit GameLift , dass ein Serverprozess bereit ist, eine Spielsitzung zu hosten. Rufen Sie
ProcessReady()
(C++) (C#) (Unreal) (Go) (C++) mit den folgenden Informationen auf. (Beachten Sie, dass Sie pro ServerprozessProcessReady()
nur einmal aufrufen sollten).-
Die Portnummer, die der Serverprozess verwendet. Der Backend-Dienst stellt den Spielclients die Portnummer und eine IP-Adresse zur Verfügung, um eine Verbindung zum Serverprozess herzustellen und an einer Spielsitzung teilzunehmen.
-
Der Speicherort von Dateien, wie z. B. Spielsitzungsprotokollen, die Amazon speichern GameLift soll. Der Serverprozess generiert diese Dateien während einer Spielsitzung. Sie werden vorübergehend auf der Instanz gespeichert, auf der der Serverprozess ausgeführt wird, und sie gehen verloren, wenn die Instanz heruntergefahren wird. Alle Dateien, die Sie auflisten, werden auf Amazon hochgeladen GameLift. Sie können über die GameLift Amazon-Konsole oder durch Aufrufen der GameLift API Amazon-Operation GetGameSessionLogUrl
() auf diese Dateien zugreifen. -
Die Namen der Callback-Funktionen, die Amazon für Ihren Serverprozess aufrufen GameLift kann. Ihr Spieleserver muss diese Funktionen implementieren. Weitere Informationen finden Sie unter (C++) (C#) (Unreal) (Go) (C++)
-
(Optional)
onHealthCheck
— Amazon GameLift ruft diese Funktion regelmäßig auf, um einen Statusbericht vom Server anzufordern. -
onStartGameSession
— Amazon GameLift ruft diese Funktion als Antwort auf die Kundenanfrage CreateGameSession() auf. -
onProcessTerminate
— Amazon GameLift zwingt den Serverprozess zum Anhalten, sodass er ordnungsgemäß heruntergefahren wird. -
(Optional)
onUpdateGameSession
— Amazon GameLift übermittelt ein aktualisiertes Objekt für die Spielsitzung an den Spieleserver oder stellt eine Statusaktualisierung bei einer Anfrage zum Match-Backfill bereit. Für die FlexMatch Backfill-Funktion ist dieser Rückruf erforderlich.
-
Du kannst auch einen Spieleserver einrichten, um sicher auf AWS Ressourcen zuzugreifen, die dir gehören oder die du kontrollierst. Weitere Informationen finden Sie unter Kommunizieren Sie mit anderen AWS Ressourcen aus Ihren Flotten.
-
(Optional) Melden Sie den Zustand des Serverprozesses
Füge deinem Spieleserver Code hinzu, um die Callback-Funktion onHealthCheck()
zu implementieren. Amazon GameLift ruft diese Callback-Methode regelmäßig auf, um Gesundheitsmetriken zu sammeln. Gehen Sie wie folgt vor, um diese Rückruffunktion zu implementieren:
-
Bewerten Sie den Integritätsstatus des Serverprozesses. Beispielsweise können Sie den Serverprozess als fehlerhaft melden, wenn externe Abhängigkeiten ausgefallen sind.
-
Schließen Sie die Zustandsprüfung ab, und antworten Sie auf den Callback innerhalb von 60 Sekunden. Wenn Amazon GameLift innerhalb dieser Zeit keine Antwort erhält, wird der Serverprozess automatisch als fehlerhaft eingestuft.
-
Gibt einen booleschen Wert zurück: true für gesund, false für ungesund.
Wenn Sie keinen Health Check-Rückruf implementieren, GameLift betrachtet Amazon den Serverprozess als fehlerfrei, sofern der Server nicht reagiert.
Amazon GameLift nutzt die Integrität von Serverprozessen, um fehlerhafte Prozesse zu beenden und Ressourcen freizugeben. Wenn ein Serverprozess bei drei aufeinanderfolgenden Zustandsprüfungen weiterhin als fehlerhaft gemeldet wird oder nicht reagiert, GameLift kann Amazon den Prozess beenden und einen neuen starten. Amazon GameLift sammelt Messwerte zum Zustand der Serverprozesse einer Flotte.
(Optional) Besorgen Sie sich ein TLS Zertifikat
Wenn der Serverprozess auf einer Flotte läuft, für die die TLS Zertifikatsgenerierung aktiviert ist, können Sie das TLS Zertifikat abrufen, um eine sichere Verbindung mit einem Spieleclient herzustellen und die Client-Server-Kommunikation zu verschlüsseln. Eine Kopie des Zertifikats wird auf der Instance gespeichert. Rufen Sie (C++) (C#) GetComputeCertificate()(Unreal) (Go) (C++) (C#) (Unreal) auf, um den Speicherort der Datei zu .
Starte eine Spielsitzung
Fügen Sie Code zur Implementierung der Callback-Funktion onStartGameSession
hinzu. Amazon GameLift ruft diesen Callback auf, um eine Spielsitzung auf dem Server zu starten.
Die onStartGameSession
Funktion verwendet ein GameSessionObjekt als Eingabeparameter. Dieses Objekt enthält wichtige Informationen zur Spielsitzung, z. B. die maximale Spielerzahl. Es kann auch Spiel- und Spielerdaten enthalten. Die Funktionsimplementierung sollte die folgenden Aufgaben erfüllen:
-
Initiieren Sie Aktionen, um basierend auf den
GameSession
Eigenschaften eine neue Spielsitzung zu erstellen. Der Spieleserver muss mindestens die Spielsitzungs-ID zuordnen, auf die Spielclients verweisen, wenn sie eine Verbindung zum Serverprozess herstellen. -
Verarbeiten Sie die Spiel- und Spielerdaten nach Bedarf. Diese Daten befinden sich im
GameSession
Objekt. -
Benachrichtige Amazon GameLift , wenn eine neue Spielsitzung bereit ist, Spieler aufzunehmen. Rufen Sie den API Servervorgang auf ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++) Als Reaktion auf einen erfolgreichen Anruf GameLift ändert Amazon den Status der Spielsitzung auf
ACTIVE
.
(Optional) Bestätigen Sie einen neuen Spieler
Wenn du den Status von Spielersitzungen verfolgst, füge Code hinzu, um einen neuen Spieler zu validieren, wenn er sich mit einem Spieleserver verbindet. Amazon GameLift verfolgt aktuelle Spieler und verfügbare Spielautomaten für Spielsitzungen.
Zur Überprüfung muss ein Spielclient, der Zugriff auf die Spielsitzung anfordert, eine Spielersitzungs-ID enthalten. Amazon generiert diese ID GameLift automatisch, wenn ein Spieler mit StartGameSessionPlacement() oder StartMatchmaking() darum bittet, einem Spiel beizutreten. Die Spielersitzung reserviert dann einen offenen Slot in einer Spielsitzung.
Wenn der Spieleserver-Prozess eine Verbindungsanfrage für den Spielclient erhält, ruft er AcceptPlayerSession()
(C++) (C#) (Unreal) (Go) (C++) mit der Sitzungs-ID des Spielers auf. Daraufhin GameLift überprüft Amazon, ob die Sitzungs-ID des Spielers einem offenen Slot entspricht, der in der Spielsitzung reserviert wurde. Nachdem Amazon die Spielersitzungs-ID GameLift bestätigt hat, akzeptiert der Serverprozess die Verbindung. Der Spieler kann dann an der Spielsitzung teilnehmen. Wenn Amazon die Spielersitzungs-ID GameLift nicht validiert, verweigert der Serverprozess die Verbindung.
(Optional) Melden Sie das Ende einer Spielersitzung
Wenn Sie den Status von Spielersitzungen verfolgen, fügen Sie einen Code hinzu, um Amazon zu benachrichtigen, GameLift wenn ein Spieler die Spielsitzung verlässt. Dieser Code sollte ausgeführt werden, wenn der Serverprozess eine aufgegebene Verbindung erkennt. Amazon GameLift verwendet diese Benachrichtigung, um aktuelle Spieler und verfügbare Slots in der Spielsitzung zu verfolgen.
Um Verbindungsabbrüche zu behandeln, fügen Sie in Ihrem Code einen Aufruf zum API Serverbetrieb RemovePlayerSession()
(C++) (C#) (Unreal) (Go) (C++) mit der entsprechenden Spielersitzungs-ID hinzu.
Beenden Sie eine Spielsitzung
Fügen Sie der Sequenz zum Herunterfahren des Serverprozesses Code hinzu, um Amazon zu benachrichtigen GameLift , wenn eine Spielsitzung endet. Um Hosting-Ressourcen zu recyceln und zu aktualisieren, GameLift fährt Amazon die Serverprozesse nach Abschluss der Spielsitzung herunter.
Rufen Sie zu Beginn des Codes zum Herunterfahren des Serverprozesses den API Servervorgang ProcessEnding()(C++) (C#) (Unreal) (Go) g (C++) auf. Dieser Aufruf benachrichtigt Amazon GameLift , dass der Serverprozess heruntergefahren wird. Amazon GameLift ändert den Status der Spielsitzung und den Serverprozessstatus aufTERMINATED
. Nach dem ProcessEnding()
Aufrufen kann der Prozess sicher heruntergefahren werden.
Reagieren Sie auf eine Benachrichtigung zum Herunterfahren des Serverprozesses
Fügen Sie Code hinzu, um den Serverprozess als Antwort auf eine Benachrichtigung von Amazon herunterzufahren GameLift. Amazon GameLift sendet diese Benachrichtigung, wenn der Serverprozess ständig fehlerhaft meldet oder wenn die Instance, auf der der Serverprozess läuft, beendet wird. Amazon GameLift kann eine Instance im Rahmen einer Kapazitätsskalierung oder als Reaktion auf eine Unterbrechung der Spot-Instance stoppen.
Um eine Benachrichtigung über das Herunterfahren zu bearbeiten, nehmen Sie die folgenden Änderungen am Code Ihres Spieleservers vor:
-
Implementieren Sie die Callback-Funktion
onProcessTerminate()
. Diese Funktion sollte den Code aufrufen, der den Serverprozess herunterfährt. Wenn Amazon diesen Vorgang GameLift aufruft, werden Spot-Instance-Unterbrechungen mit einer Frist von zwei Minuten angezeigt. Dieser Hinweis gibt dem Serverprozess Zeit, um die Verbindung zwischen Spielern ordnungsgemäß zu trennen, die Spielstatusdaten beizubehalten und andere Bereinigungsaufgaben durchzuführen. -
Rufen Sie den API Servervorgang
GetTerminationTime()
(C++) (C#) (Unreal) (Go) (C++) (C#) des Spieleservers aus auf. Wenn Amazon einen Aufruf gesendet GameLift hat, um den Serverprozess zu beenden, gibt es die geschätzte KündigungszeitGetTerminationTime()
zurück. -
Rufen Sie zu Beginn des Codes zum Herunterfahren Ihres Spieleservers den API Serverbetrieb ProcessEnding()(C++) (C#) (Unreal) (Go) (C++) auf. Dieser Aufruf benachrichtigt Amazon GameLift , dass der Serverprozess heruntergefahren wird, und Amazon ändert GameLift dann den Serverprozessstatus auf.
TERMINATED
Nach demProcessEnding()
Aufrufen kann der Prozess sicher heruntergefahren werden.