View a markdown version of this page

Addition GameLift Amazon-Server mit dem Server-SDK auf deinen Spieleserver - 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.

Addition GameLift Amazon-Server mit dem Server-SDK auf deinen Spieleserver

Dieses Thema enthält allgemeine Anleitungen zur Server-SDK-Funktionalität, die Sie Ihrem Spieleservercode hinzufügen müssen/ Diese Funktion ermöglicht es Spieleserverprozessen, mit dem Amazon GameLift Servers Dienst zu kommunizieren. 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. Detaillierte Informationen zu Interaktionen zwischen den Komponenten Ihrer Spielhosting-Lösung (Spieleserver, Backend-Service, Spielclient usw.Amazon GameLift Servers) finden Sie unterclient/server Spielinteraktionen mit GameLift Amazon-Server.

Holen Sie sich das Server-SDK

Um dein Spiel für das Hosting vorzubereiten, füge das Server-SDK für Amazon GameLift Servers zu deinem Spieleserverprojekt hinzu. Das Server-SDK ist in mehreren Sprachen verfügbar. Weitere Informationen zur Toolunterstützung für Spieleserver, einschließlich des Server-SDK, finden Sie unterGet GameLift Amazon-Server Tools für die Entwicklung.

Laden Sie das Server-SDK für Ihre Entwicklungssprache von Github herunter. com/amazon-Gamelift. Sie können Repos für die Server-SDK-Versionen, Plugins und andere Entwicklungstools finden.

Anmerkung

Wenn Sie mit Unreal Engine oder Unity entwickeln, laden Sie das Amazon GameLift Servers Plugin für diese Spiele-Engines herunter. Das Server-SDK ist eingebaut und einsatzbereit. Weitere Informationen finden Sie unter diesen Links:

Referenzen zur Server-SDK-API:

Initialisieren Sie den Serverprozess

Fügen Sie Code hinzu, um die Kommunikation mit dem Amazon GameLift Servers Service herzustellen, und melden Sie, wann der Spieleserverprozess bereit ist, eine Spielsitzung abzuhalten. Dieser Code muss vor jedem Amazon GameLift Servers Code ausgeführt werden.

  1. Initialisieren Sie einen Amazon GameLift Servers API-Client, indem Sie ihn aufrufenInitSdk(). Wenn du deinen Spieleserver für die Ausführung auf Amazon GameLift Servers verwalteten EC2-Flotten vorbereitest, verwende die Standardversion InitSDK() (C++) (C#) (Unreal) (Go) (C++) Der API-Client übernimmt die Verbindung zum Dienst für dich. Amazon GameLift Servers

    Wenn du deinen Spieleserver für die Verwendung auf einem vorbereitest GameLift Amazon-Server Flotte überall:

    Initialisieren Sie den Amazon GameLift Servers API-Client, indem Sie Folgendes ServerParameters aufrufenInitSdk():

    • Die URL des Websockets, der für die Verbindung zu deinem Spieleserver verwendet wird.

    • Die ID des Prozesses, der zum Hosten deines Spieleservers verwendet wird.

    • Die ID des Computers, auf dem deine Spieleserverprozesse gehostet werden.

    • Die ID der Flotte, die deine Amazon GameLift Servers Anywhere-Rechenleistung enthält.

    • Das durch den Amazon GameLift Servers Vorgang generierte AutorisierungstokenGetComputeAuthToken.

  2. Informiere den Dienst, dass der Spieleserverprozess bereit ist, eine Spielsitzung zu hosten. Rufen Sie ProcessReady() (C++) (C#) (Unreal) (Go) (C++) mit den folgenden Anweisungen auf. ProcessParameters Jeder Spieleserverprozess 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 sie an Spielclients weitergeben, die sie verwenden, um eine Verbindung zum Serverprozess herzustellen und der Spielsitzung beizutreten.

    • 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, sind aber nur verfügbar, bis die Instanz heruntergefahren wird. Sie können über die Amazon GameLift Servers Konsole oder durch Aufrufen der Amazon GameLift Servers API-Operation GetGameSessionLogUrl () auf gespeicherte Dateien zugreifen.

      Wenn du deinen Spieleserver für den Einsatz auf einem vorbereitest GameLift Amazon-Server verwaltete Containerflotte:

      Sie müssen keine Protokollparameter für eine Containerflotte angeben. Senden Sie stattdessen die Spielsitzung und andere Protokolldaten an die Standardausgabe. Containerflotten erfassen automatisch alle Container-Standardausgaben als Protokollstream.

    • Die folgenden Callback-Funktionen ermöglichen es, Nachrichten oder Eingabeaufforderungen Amazon GameLift Servers an einen Spieleserverprozess zu senden. Du musst jede dieser Funktionen in deinem Spieleservercode 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 Integritätsbericht vom Server anzufordern.

      • onStartGameSession— Amazon GameLift Servers ruft diese Funktion als Antwort auf die Client-Anfrage auf CreateGameSession ().

      • onProcessTerminate— Amazon GameLift Servers zwingt den Serverprozess zum Stoppen und lässt ihn ordnungsgemäß herunterfahren.

      • (Optional) onUpdateGameSession — Amazon GameLift Servers Liefert ein aktualisiertes Spielsitzungsobjekt an den Spielserver oder liefert eine Statusaktualisierung, wenn ein Spiel aufgefüllt wird. Die FlexMatch Backfill-Funktion erfordert diesen Callback.

    Du kannst auch einen Spieleserver einrichten, sodass er sicher auf andere AWS Ressourcen zugreifen kann, die dir gehören oder die du kontrollierst. Weitere Informationen finden Sie unter Verbinde deine GameLift Amazon-Server gehosteter Spieleserver auf anderen AWS Ressourcen.

(Optional) Status des Serverprozesses melden

Füge deinem Spieleserver Code hinzu, um die Callback-Funktion onHealthCheck() zu implementieren. Amazon GameLift Serversruft diese Callback-Methode regelmäßig auf, um Gesundheitsdaten zu sammeln. Gehen Sie wie folgt vor, um diese Callback-Funktion zu implementieren:

  • Bewerten Sie den Integritätsstatus des Serverprozesses. Beispielsweise könnten 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 einen fehlerfreien Zustand, false für einen fehlerhaften.

Wenn Sie keinen Health-Check-Callback implementieren, wird der Serverprozess Amazon GameLift Servers als fehlerfrei betrachtet, es sei denn, der Server reagiert nicht.

Der Amazon GameLift Servers Dienst verwendet die Integrität des Serverprozesses, um fehlerhafte Prozesse zu beenden und Ressourcen freizugeben. Wenn ein Serverprozess weiterhin als fehlerhaft gemeldet wird oder bei drei aufeinanderfolgenden Integritätsprüfungen nicht reagiert, beendet der Dienst den Prozess möglicherweise und startet einen neuen. Der Service erfasst Messwerte zum Zustand der Serverprozesse einer Flotte.

(Optional) Holen Sie sich ein TLS-Zertifikat

Wenn der Serverprozess auf einer Flotte läuft, für die die Generierung von TLS-Zertifikaten aktiviert ist, kannst du 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) (Unreal)

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 GameSession Objekt als Eingabeparameter. Dieses Objekt enthält wichtige Informationen zur Spielsitzung, z. B. die maximale Anzahl an Spielern. Es kann auch Spiel- und Spielerdaten enthalten. Die Funktionsimplementierung sollte die folgenden Aufgaben erfüllen:

  • Initiieren Sie Aktionen, um eine neue Spielsitzung auf der Grundlage der GameSession Eigenschaften zu erstellen. Der Spieleserver muss mindestens die Spielsitz-ID zuordnen, auf die sich die Spielclients beziehen, wenn sie sich mit dem Serverprozess verbinden.

  • Verarbeiten Sie Spiel- und Spielerdaten nach Bedarf. Diese Daten befinden sich im GameSession Objekt.

  • Benachrichtige den Amazon GameLift Servers Service, wenn eine neue Spielsitzung bereit ist, um Spieler aufzunehmen. Rufen Sie die Server-API-Operation ActivateGameSession() (C++) (C#) (Unreal) (Go) (C++) Als Antwort auf einen erfolgreichen Anruf ändert der Dienst den Status der Spielsitzung in. ACTIVE

(Optional) Validiere 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 Spielserver verbindet. Amazon GameLift Serversverfolgt aktuelle Spieler und verfügbare Plätze für Spielsitzungen.

Zur Überprüfung muss ein Spielclient, der versucht, an einer Spielsitzung teilzunehmen, eine Sitzungs-ID des Spielers 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 Spieleserverprozess eine Verbindungsanfrage für den Spielclient erhält, ruft er AcceptPlayerSession() (C++) (C#) (Unreal) (Go) (C++) mit der Sitzungs-ID des Spielers auf. Amazon GameLift ServersÜberprüft daraufhin, ob die Sitzungs-ID des Spielers einem in der Spielsitzung reservierten freien Slot entspricht. Nach der Amazon GameLift Servers Überprüfung der Sitzungs-ID des Spielers 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) Das Ende einer Spielersitzung melden

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 Plätze in der Spielsitzung zu verfolgen.

Um Verbindungsabbrüche in Ihrem Code zu behandeln, fügen Sie der Server-API-Operation RemovePlayerSession() (C++) (C#) (Unreal) (Go) (C++) (C#) mit der entsprechenden Player-Sitzungs-ID hinzu.

Beende eine Spielsitzung

Fügen Sie der Sequenz zum Herunterfahren des Serverprozesses Code hinzu, um zu benachrichtigenAmazon GameLift Servers, wenn eine Spielsitzung beendet wird. Um Hosting-Ressourcen zu recyceln und zu aktualisieren, musst 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) (C++) Dieser Aufruf benachrichtigtAmazon GameLift Servers, dass der Serverprozess heruntergefahren wird. Amazon GameLift Serversändert den Status der Spielsitzung und den Status des Serverprozesses in. TERMINATED Nach ProcessEnding() dem Anruf kann der Prozess sicher beendet 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 einen Fehler 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 erhalten Sie eine zweiminütige Benachrichtigung. Dadurch hat der Serverprozess Zeit, die Verbindung zwischen Spielern ordnungsgemäß zu trennen, die Spielstatusdaten beizubehalten und andere Bereinigungsaufgaben durchzuführen.

Nehmen Sie die folgenden Änderungen an Ihrem Spieleservercode vor, um eine Benachrichtigung über das Herunterfahren zu bearbeiten:

  • Implementiere die Callback-Funktion onProcessTerminate() (C++) (C#) (Unreal) (Go) (C++) Diese Funktion sollte Code aufrufen, der den Serverprozess herunterfährt.

  • Rufe die Server-API-Operation GetTerminationTime() (C++) (C#) (Unreal) (Go) (C++) vom Shutdown-Code deines Spieleservers aus auf. Amazon GameLift ServersHat einen Aufruf ausgegeben, um den Serverprozess zu beenden, GetTerminationTime() gibt dann die geschätzte Terminierungszeit zurück.

  • Rufe zu Beginn des Shutdown-Codes für den Spieleserver die Server-API-Operation ProcessEnding() (C++) (C#) (Unreal) (Go) (C++) Dieser Aufruf benachrichtigt den Amazon GameLift Servers-Service, dass der Serverprozess heruntergefahren wird. Der Dienst ändert dann den Status des Serverprozesses in. TERMINATED Nach dem Anruf ProcessEnding() kann der Prozess sicher heruntergefahren werden.