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.
Amazon GameLift ServersZu deinem Spieleserver hinzufügen
In diesem Thema wird beschrieben, wie Sie Ihren Spieleservercode so ändern, dass Spieleserverprozesse mit dem Amazon GameLift Servers Dienst kommunizieren können. Verwenden Sie diese Anweisungen für Spieleserver, die Sie auf Amazon GameLift Servers verwalteten EC2 Flotten, verwalteten Container-Flotten oder Anywhere-Flotten bereitstellen möchten.
Spieleserverprozesse kommunizieren mit dem Amazon GameLift Servers Dienst, um Anweisungen vom Dienst zu erhalten und den Zustand der Serverprozesse und den Status der Spielsitzung zu melden. Ausführliche Informationen zu Interaktionen zwischen den Komponenten deiner Game-Hosting-Lösung (Spieleserver, Backend-Dienst, Spieleclient undAmazon GameLift Servers) findest du unterInteraktionen zwischen Spielclient und Server mit Amazon GameLift Servers.
Um dein Spiel für das Hosten vorzubereiten, füge das Server-SDK für Amazon GameLift Servers zu deinem Gameserver-Projekt hinzu. Wenn du das Amazon GameLift Servers Plugin für Unreal Engine oder Unity verwendest, ist das Server-SDK integriert und sofort einsatzbereit. Das Server-SDK ist in mehreren Sprachen verfügbar. Weitere Informationen zur Toolunterstützung für Spieleserver, einschließlich des Server-SDK, finden Sie unterHolen Sie sich Amazon GameLift Servers Entwicklungstools.
API-Referenzen für das Server-SDK:
Initialisieren Sie den Serverprozess
Fügen Sie Code hinzu, um die Kommunikation mit dem Amazon GameLift Servers Dienst herzustellen und zu melden, wenn der Spieleserver-Prozess bereit ist, eine Spielsitzung zu hosten. Dieser Code muss vor jedem Amazon GameLift Servers Code ausgeführt werden.
-
Initialisieren Sie einen Amazon GameLift Servers API-Client durch Aufrufen
InitSdk()
. Wenn du deinen Spieleserver für die Ausführung auf Amazon GameLift Servers verwalteten EC2 Flotten vorbereitest, verwende die StandardeinstellungInitSDK()
(C++) (C#) (Unreal) (Go) (C++) ohne Parameter. Der API-Client kümmert sich für dich um die Verbindung zum Dienst. Amazon GameLift ServersWenn du deinen Spieleserver für den Einsatz auf einer Amazon GameLift Servers Anywhere-Flotte vorbereitest:
Initialisieren Sie den Amazon GameLift Servers API-Client, indem Sie ihn wie folgt
ServerParameters
aufrufenInitSdk()
:-
Die URL des Websockets, 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 Flotte, die Ihren Amazon GameLift Servers Anywhere-Computer enthält.
-
Das durch den Amazon GameLift Servers Vorgang generierte Autorisierungstoken
GetComputeAuthToken
.
-
-
Informiere den Dienst, dass der Spieleserver-Prozess bereit ist, eine Spielsitzung zu hosten. Rufen Sie
ProcessReady()
(C++) (C#) (Unreal) (Go) (C++) wie folgt auf.ProcessParameters
Jeder Spieleserver-Prozess darf nur einmal aufgerufen werden.ProcessReady()
-
Die Portnummer für den Serverprozess. Wenn der Serverprozess eine Spielsitzung startet, stellt er den Port für den Amazon GameLift Servers Dienst bereit, der die Informationen zur Spielsitzung aktualisiert. Ihr Spiel kann diese Informationen abrufen und an Spieleclients weitergeben, die sie verwenden, um sich mit dem Serverprozess zu verbinden und an der Spielsitzung teilzunehmen.
-
Die Speicherorte der Dateien, die Sie für Sie speichern möchtenAmazon GameLift Servers. Dazu können Spielsitzungsprotokolle und andere Dateien gehören, die der Serverprozess während einer Spielsitzung generiert. Diese Dateien werden zwar vorübergehend auf dem Computer Amazon GameLift Servers gespeichert, auf dem der Serverprozess ausgeführt wird, sie sind jedoch nur verfügbar, bis die Instanz heruntergefahren wird. Sie können über die Amazon GameLift ServersKonsole
oder durch Aufrufen der Amazon GameLift Servers API-Operation GetGameSessionLogUrl() auf gespeicherte Dateien zugreifen. Wenn du deinen Spieleserver für den Einsatz in einer Amazon GameLift Servers verwalteten Containerflotte vorbereitest:
Du musst keine Log-Parameter für eine Containerflotte angeben. Senden Sie stattdessen die Spielsitzung und andere Protokolldaten an die Standardausgabe. Containerflotten erfassen automatisch die gesamte Container-Standardausgabe als Protokollstream.
-
Die folgenden Callback-Funktionen, die es ermöglichenAmazon GameLift Servers, Nachrichten oder Eingabeaufforderungen an einen Spielserver-Prozess zu senden. Sie müssen jede dieser Funktionen in Ihrem Spielservercode implementieren. Weitere Informationen finden Sie unter ProcessParameters(C++) (C#) (Unreal) (Go) (C++)
-
(Optional)
onHealthCheck
— Amazon GameLift Servers Ruft diese Funktion regelmäßig auf, um einen Statusbericht vom Server anzufordern. -
onStartGameSession
— Amazon GameLift Servers ruft diese Funktion als Antwort auf die Client-Anfrage CreateGameSession() auf. -
onProcessTerminate
— Amazon GameLift Servers zwingt den Serverprozess zum Beenden, sodass er ordnungsgemäß heruntergefahren wird. -
(Optional)
onUpdateGameSession
— Amazon GameLift Servers übermittelt ein aktualisiertes Objekt für die Spielsitzung an den Spielserver oder informiert über eine Statusaktualisierung bei einer Anfrage zum Auffüllen eines Matches. Für die FlexMatchBackfill-Funktion ist dieser Callback erforderlich.
-
Du kannst auch einen Spieleserver einrichten, sodass dieser sicher auf andere AWS Ressourcen zugreifen kann, 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 Serversruft 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 Servers innerhalb dieser Zeit keine Antwort eingeht, wird der Serverprozess automatisch als fehlerhaft eingestuft.
-
Gibt einen booleschen Wert zurück: true für fehlerfrei, false für ungesund.
Wenn Sie keinen Rückruf zur Integritätsprüfung implementieren, wird der Serverprozess als fehlerfrei Amazon GameLift Servers betrachtet, sofern der Server nicht reagiert.
Der Amazon GameLift Servers Dienst verwendet die Integrität von Serverprozessen, um fehlerhafte Prozesse zu beenden und Ressourcen zu löschen. Wenn ein Serverprozess bei drei aufeinanderfolgenden Integritätsprüfungen weiterhin als fehlerhaft gemeldet wird oder nicht reagiert, kann der Dienst den Prozess beenden und einen neuen starten. Der Service 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 Spielclient 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 hinzu, um die Callback-Funktion onStartGameSession
zu implementieren. Amazon GameLift Serversruft diesen Callback auf, um eine Spielsitzung auf dem Serverprozess 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. -
Informiere den Amazon GameLift Servers Dienst, wenn eine neue Spielsitzung bereit ist, Spieler aufzunehmen. Rufen Sie die Server-API-Operation ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++) auf. Als Reaktion auf einen erfolgreichen Aufruf ändert der Dienst 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 Serversverfolgt aktuelle Spieler und verfügbare Spielsitzungsplätze.
Zur Überprüfung muss ein Spielclient, der versucht, an einer Spielsitzung teilzunehmen, eine Spielersitzungs-ID enthalten. Amazon GameLift Serversgeneriert diese ID, wenn dein Spiel neue Spielsitzungen startet, indem du StartGameSessionPlacement() oder StartMatchmaking() aufrufst. Bei diesen Anfragen wird ein offener Slot in einer Spielsitzung für die Spielersitzung reserviert.
Wenn der Spielserverprozess eine Verbindungsanfrage für den Spielclient erhält, ruft er AcceptPlayerSession()
(C++) (C#) (Unreal) (Go) (C++) des Spielers auf. Amazon GameLift ServersÜberprüft daraufhin, ob die Sitzungs-ID des Spielers einem offenen Slot entspricht, der in der Spielsitzung reserviert wurde. Nach der Amazon GameLift Servers Validierung der Spielersitzungs-ID akzeptiert der Serverprozess die Verbindung. Der Spieler kann dann an der Spielsitzung teilnehmen. Wenn die Sitzungs-ID des Spielers Amazon GameLift Servers nicht validiert wird, verweigert der Serverprozess die Verbindung.
(Optional) Melde das Ende einer Spielersitzung
Wenn du den Status von Spielersitzungen verfolgst, füge einen Code hinzu, um zu benachrichtigen, Amazon GameLift Servers wenn ein Spieler die Spielsitzung verlässt. Dieser Code sollte immer dann ausgeführt werden, wenn der Serverprozess eine unterbrochene Verbindung feststellt. Amazon GameLift Serversverwendet diese Benachrichtigung, um aktuelle Spieler und verfügbare Slots in der Spielsitzung zu verfolgen.
Um abgebrochene Verbindungen in Ihrem Code zu behandeln, fügen Sie der Server-API-Operation RemovePlayerSession()
(C++) (C#) (Unreal) (Go) (C++) (C#) des Spielers hinzu.
Beenden Sie eine Spielsitzung
Fügen Sie der Sequenz zum Herunterfahren des Serverprozesses Code hinzu, um zu benachrichtigenAmazon GameLift Servers, wenn eine Spielsitzung endet. Um Hosting-Ressourcen zu recyceln und zu aktualisieren, solltest du jeden Serverprozess herunterfahren, nachdem die Spielsitzung abgeschlossen ist.
Rufen Sie zu Beginn des Codes zum Herunterfahren des Serverprozesses die Server-API-Operation ProcessEnding()(C++) (C#) (Unreal) (Go) g (C++) auf. Dieser Aufruf benachrichtigtAmazon GameLift Servers, dass der Serverprozess heruntergefahren wird. Amazon GameLift Serversändert den Status der Spielsitzung und den Status des Serverprozesses auf. TERMINATED
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 Reaktion auf eine Benachrichtigung des Amazon GameLift Servers Dienstes herunterzufahren. Der Dienst sendet diese Benachrichtigung, wenn der Serverprozess ständig fehlerhaft meldet oder wenn die Instanz, auf der der Serverprozess ausgeführt wird, beendet wird. Amazon GameLift Serverskann eine Instance im Rahmen einer Kapazitätsskalierung oder als Reaktion auf eine Unterbrechung der Spot-Instance beenden. Bei einer Spot-Instance-Unterbrechung wird eine Frist von zwei Minuten angezeigt, sodass der Server genügend Zeit hat, um die Verbindung der Spieler ordnungsgemäß zu trennen, die Spielstatusdaten beizubehalten und andere Säuberungsaufgaben durchzuführen.
Um eine Benachrichtigung über das Herunterfahren zu bearbeiten, nimm die folgenden Änderungen an deinem Spielservercode vor:
-
Implementieren Sie die Callback-Funktion onProcessTerminate()(C++) (C#) (Unreal) (Go) (C++) Diese Funktion sollte Code aufrufen, der den Serverprozess herunterfährt.
-
Rufen Sie die Server-API-Operation
GetTerminationTime()
(C++) (C#) (Unreal) (Go) (C++) (C#) aus auf. If Amazon GameLift Servers hat einen Aufruf zum Stoppen des Serverprozesses ausgegeben undGetTerminationTime()
gibt dann die geschätzte Kündigungszeit zurück. -
Rufen Sie zu Beginn des Codes zum Herunterfahren des Spieleservers die Server-API-Operation ProcessEnding()(C++) (C#) (Unreal) (Go) (C++) auf. Dieser Aufruf benachrichtigt den Amazon GameLift Servers-Service, dass der Serverprozess heruntergefahren wird. Der Dienst ändert dann den Serverprozessstatus auf.
TERMINATED
Nach demProcessEnding()
Aufrufen kann der Prozess sicher heruntergefahren werden.