View a markdown version of this page

Plugin für Unreal: Stelle dein Spiel in einer verwalteten Containerflotte bereit - 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.

Plugin für Unreal: Stelle dein Spiel in einer verwalteten Containerflotte bereit

Verwende diesen geführten Plugin-Workflow, um ein Container-Image für deinen Spieleserver zu erstellen und es auf einer containerbasierten Hosting-Lösung bereitzustellen. Falls du deinen Spielcode noch nicht integriert hast, siehe. Plugin für Unreal: Integriere deinen Spielcode Wenn du diesen Workflow erfolgreich abgeschlossen hast, läuft dein containerisierter Spieleserver in der Cloud und du kannst das Plugin verwenden, um einen Spielclient zu starten, eine Verbindung zu einer Spielsitzung herzustellen und das Spiel zu spielen.

Bevor Sie beginnen

Bei diesem Arbeitsablauf wird davon ausgegangen, dass du die folgenden Aufgaben abgeschlossen hast.

  • Integrieren Sie Ihren Spieleservercode in das Amazon GameLift Servers Server-SDK. Ihr gehosteter Spieleserver muss in der Lage sein, mit dem Amazon GameLift Servers Dienst zu kommunizieren, damit dieser auf Anfragen zum Starten neuer Spielsitzungen reagieren und den Status der Spielsitzung melden kann. Wenn du diese Aufgabe nicht abgeschlossen hast, empfehlen wir dir, zuerst den Plugin-Workflow Host with Anywhere zu befolgen. Eine Anleitung zur Vorbereitung Ihres Spieleservercodes finden Sie unterAktualisiere deinen Spieleservercode. Für eine verwaltete Containerflotte musst du dein Spiel in das Server-SDK Version 5.2 oder höher integrieren.

    Anmerkung

    Wenn du die Start-Game-Map verwendest, ist diese Aufgabe bereits für dich erledigt.

  • Packen Sie die ausführbare Datei Ihres Spielservers so, dass sie unter Linux ausgeführt werden kann. Wenn du unter Windows entwickelst und das C++ Server SDK Version 5.2.x oder früher integrierst, musst du die Unreal Cross-Compilation-Toolchain für deine UE-Version auf der Entwicklerdokumentationswebsite von Epic Games verwenden. Alternativ können Sie einen separaten Linux-Arbeitsbereich einrichten oder ein Tool wie das Windows-Subsystem für Linux (WSL) verwenden.

  • Sammle Dateien, die du zusammen mit deinem Spieleserver-Build bereitstellen kannst. Erstelle auf deinem lokalen Computer ein Arbeitsverzeichnis, um die Dateien zu organisieren, die in dein Gameserver-Container-Image eingebaut werden. Dazu können Spielabhängigkeiten, ein Skript zum Starten von Spieleservern und andere Prozesse beim Starten eines Containers usw. gehören.

  • Füge die OpenSSL-Bibliotheksdateien für deinen Spieleserver-Build hinzu. Du kannst diesen Schritt überspringen, wenn dein Spieleserver in das Server-SDK 5.3 oder höher integriert ist.

    Finde die OpenSSL-Bibliotheken manuell und kopiere sie in dein Spiele-Build-Paketverzeichnis unter<YourGame>/Binaries/Win64. Sie müssen dieselbe OpenSSL-Version verwenden, die Ihre Unreal Engine 5-Version verwendet. Spiele-Builds, die mit den falschen OpenSSL-Bibliotheken bereitgestellt werden, können nicht mit dem Dienst kommunizieren. Amazon GameLift Servers

    Um die OpenSSL-Bibliotheken zu finden, schauen Sie in der Quelle Ihrer Game Engine nach. Der Speicherort variiert je nach Ihrer Entwicklungsumgebung:

    Unter Windows:

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll

    Unter Linux:

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1

  • Integriere deinen Spiel-Client-Code mitAmazon GameLift Servers. Eine Möglichkeit, diese Aufgabe abzuschließen, besteht darin, ein Beispiel-Asset (im Plugin enthalten) hinzuzufügen, das bereits integriert ist. Eine Anleitung zur Vorbereitung deines Spiel-Client-Codes findest du unterIntegriere deine Client-Spielkarte.

  • Installiere Docker auf deinem lokalen Computer. Sie müssen dieses Tool installiert haben, wenn das Plugin Container-Images für Sie erstellen und sie in ein ECR-Repository übertragen soll. Alternativ können Sie diese Aufgaben manuell ausführen und das Plugin anweisen, ein vorhandenes Container-Image zu verwenden. Weitere Informationen zum manuellen Erstellen Ihres Images finden Sie unterErstellen Sie ein Container-Image für Amazon GameLift Servers.

Um das zu starten GameLift Amazon-Server Arbeitsablauf für verwaltete Container:
  • Wählen Sie in der Hauptsymbolleiste des Unreal Editors das Amazon GameLift Servers Menü und dann Verwaltete Container aus. Durch diese Aktion wird die Plugin-Seite Host with Managed Containers geöffnet, auf der Schritt für Schritt beschrieben wird, wie Sie ein Container-Image mit Ihrem Spieleserver-Build erstellen, es in einer Container-Flotte bereitstellen und Ihr Spiel starten können.

Schritt 0: Lege dein Profil fest

In diesem Abschnitt wird Ihr aktuell ausgewähltes Benutzerprofil angezeigt. Stellen Sie sicher, dass das aktuelle Benutzerprofil das ist, das Sie für diesen Workflow verwenden möchten. Alle Ressourcen, die Sie in diesem Workflow erstellen, sind dem AWS Konto des Profils zugeordnet und befinden sich in der AWS Standardregion des Profils. Die Berechtigungen des Profilbenutzers bestimmen Ihren Zugriff auf AWS Ressourcen und Aktionen.

In den folgenden Fällen müssen Sie das ausgewählte Benutzerprofil möglicherweise ändern:

  • Derzeit ist kein Profil ausgewählt.

  • Sie möchten ein anderes Profil auswählen oder ein neues Profil erstellen.

  • Sie müssen das ausgewählte Profil booten (wenn der Bootstrap-Status inaktiv ist).

Um das ausgewählte Benutzerprofil festzulegen oder zu ändern
  • Wählen Sie im Amazon GameLift Servers Menü Open AWS Access Credentials aus.

Schritt 1: Beurteilen Sie die Eignung des Containers

Bevor Sie Ihren Spieleserver in einer Containerflotte bereitstellen, müssen Sie ihn in ein Container-Image packen und in einem Amazon ECR-Repository speichern. Das Plugin kann diese Aufgaben für Sie erledigen oder Sie können diese Aufgaben manuell erledigen. Geben Sie in diesem Schritt Informationen zum Status Ihres Container-Images und des ECR-Repositorys an.

Teilen Sie dem Plugin anhand der Bewertungsfragen mit, welche Schritte es ergreifen muss:

  • Erstellen Sie ein neues Container-Image. Wenn du diese Option wählst, wirst du im nächsten Schritt nach dem Speicherort deines Spieleserver-Build-Verzeichnisses und der ausführbaren Build-Datei gefragt. Das Plugin verwendet eine Dockerfile-Vorlage (bereitgestellt vonAmazon GameLift Servers) und konfiguriert sie automatisch für dein Spiel. Du kannst die Vorlage unter ansehen. Erstellen Sie ein Container-Image für Amazon GameLift Servers Nachdem Sie diese Option ausgewählt haben, geben Sie an, wo das Plugin das neue Bild speichern soll:

    • Erstellen Sie ein neues Amazon ECR-Repository und übertragen Sie das Container-Image dorthin. Das Plugin erstellt ein privates ECR-Repo unter Verwendung des AWS Kontos und der Standardeinstellung AWS-Region in Ihrem ausgewählten Benutzerprofil.

    • Verschieben Sie das Container-Image in ein zuvor erstelltes Amazon ECR-Repository. Wenn Sie diese Option wählen, werden Sie im nächsten Schritt aufgefordert, ein vorhandenes Amazon ECR-Repository aus einer Liste auszuwählen. Die Liste enthält alle Amazon ECR-Repositorys für das AWS Konto und die Standard-Repositorys AWS-Region in Ihrem ausgewählten Benutzerprofil. Sie können ein öffentliches oder privates Repository auswählen.

  • Verwenden Sie ein vorhandenes Container-Image. Wenn Sie ein Image manuell erstellt haben, empfehlen wir Ihnen, die von bereitgestellte Dockerfile-Vorlage zu verwendenAmazon GameLift Servers, die unter verfügbar ist. Erstellen Sie ein Container-Image für Amazon GameLift Servers Nachdem Sie diese Option ausgewählt haben, geben Sie an, wo sich das Image befindet.

    • Ein lokal gespeichertes Docker-generated Bild. Wenn Sie diese Option wählen, erstellt das Plugin ein neues privates Amazon ECR-Repository und überträgt die lokale Image-Datei dorthin. Im nächsten Schritt werden Sie zur Eingabe einer Image-ID aufgefordert, die das Plugin verwendet, um die Image-Datei zu finden.

    • Ein Container-Image, das bereits in einem Amazon ECR-Repository gespeichert ist. Wenn Sie diese Option wählen, werden Sie im nächsten Schritt aufgefordert, ein vorhandenes Amazon ECR-Repository und ein Image aus einer Liste auszuwählen. Die Liste enthält alle Amazon ECR-Repositorys für das AWS Konto und die Standard-Repositorys AWS-Region in Ihrem ausgewählten Benutzerprofil. Sie können ein öffentliches oder privates Repository auswählen.

Schritt 2: Konfigurieren Sie die Image-Bereitstellung

Geben Sie in diesem Schritt Informationen an, die das Plugin benötigt, um Ihr Container-Image für eine Containerflotte bereitzustellen. In diesem Schritt werden die folgenden Informationen angefordert:

  • Der Speicherort Ihres Spieleserver-Builds, Ihres Container-Images oder Ihres Amazon ECR-Repositorys, basierend auf Ihrer Auswahl in Schritt 1.

  • Das Szenario, das Sie für Ihre Bereitstellung verwalteter Container verwenden sollten.

  • Der Ausgabepfad für die Client-Konfiguration. Wählen Sie den Ordner in Ihrem Client-Build aus, der Ihre AWS Konfiguration enthält. Suchen Sie am folgenden Ort danach:[client-build]/[project-name]/Content/CloudFormation.

  • Optionale Bereitstellungseinstellungen. Dieser Abschnitt enthält Konfigurationseinstellungen, die das Plugin standardmäßig verwendet. Sie können diese ändern oder die Standardwerte beibehalten

    • Der Spielname ist standardmäßig auf den Namen Ihres Spielprojekts gesetzt. Alle AWS Ressourcen, die das Plugin erstellt, verweisen auf den Wert des Spielnamens.

    • Portbereich, Speicherlimit und vCPU-Limit sind Konfigurationseinstellungen für die Containerflotte. Weitere Informationen zum Anpassen dieser Werte finden Sie unter Informationen Netzwerkverbindungen konfigurieren zum Verbindungsportbereich und zu Legen Sie Ressourcenlimits fest Ressourcenbeschränkungen.

    • Das Container-Image-Tag wird verwendet, um Ihre Container-Bilder in Amazon ECR zu kategorisieren. Der Standardwert ist unreal-gamelift-plugin.

    • Name des Amazon ECR-Repositorys. Sie können dieses Feld bearbeiten, um nur dann einen benutzerdefinierten Namen vorzuschlagen, wenn das Plugin ein ECR-Repository für Sie erstellt. Der Standardwert ist unreal-game lift-plugin-ecr-repository.

Optionen für das Einsatzszenario

In diesem Szenario wird dein Spielserver in einer einzigen Containerflotte eingesetzt. Es ist ein guter Ausgangspunkt, um deine Serverintegration AWS und deine Container-Konfiguration zu testen. Es stellt die folgenden Ressourcen bereit.

  • Amazon GameLift ServersDie Containergruppendefinition beschreibt, wie Sie Ihre Container-Images auf einer Containerflotte bereitstellen und ausführen.

  • Amazon GameLift Serverscontainer fleet (On-Demand) mit installiertem und laufendem Gameserver-Container, mit Alias.

  • Amazon Cognito-Benutzerpool und -Client, der es Spielern ermöglicht, sich zu authentifizieren und ein Spiel zu starten.

  • API Gateway-Autorisierer, der den Benutzerpool mit APIs verknüpft.

  • Web Access Control List (ACL) zur Drosselung übermäßiger Player-Aufrufe an das API Gateway.

  • Backend-Dienst, um im Namen von Spielclients Anfragen an den Amazon GameLift Servers Dienst zu stellen, z. B. um Spielsitzungen anzufordern und an Spielen teilzunehmen:

    • API Gateway + Lambda-Funktion, mit der Spieler einen Slot für eine Spielsitzung anfordern können. Diese Funktion wird aufgerufenCreateGameSession(), wenn keine offenen Slots verfügbar sind.

    • API Gateway + Lambda-Funktion, mit der Spieler Verbindungsinformationen für ihre Spielanfrage abrufen können.

In diesem Szenario wird dein Spielserver in einer Containerflotte eingesetzt, die Platzierung der Spielsitzungen konfiguriert und die Spielersuche eingerichtetFlexMatch. Dieses Szenario ist nützlich, wenn Sie bereit sind, einen benutzerdefinierten Matchmaker für Ihre Hosting-Lösung zu entwerfen. Verwenden Sie dieses Szenario, um die grundlegenden Ressourcen für diese Lösung zu erstellen, die Sie später nach Bedarf anpassen können. Es stellt die folgenden Ressourcen bereit:

  • Amazon GameLift ServersContainergruppendefinition, die beschreibt, wie Sie Ihre Container-Images auf einer Containerflotte bereitstellen und ausführen.

  • Amazon GameLift Serverscontainer fleet (On-Demand) mit installiertem und laufendem Gameserver-Container, mit Alias.

  • FlexMatchMatchmaking-Konfiguration und Matchmaking-Regelsatz zur Annahme von Spieleranfragen und zur Bildung von Matches.

  • Amazon GameLift ServersWarteschlange für Spielsitzungen, die Anfragen für vorgeschlagene Spiele erfüllt, indem sie die bestmögliche Hosting-Ressource findet (basierend auf Rentabilität, Kosten, Spielerlatenz usw.) und eine Spielsitzung startet.

  • Amazon Cognito-Benutzerpool und -Client, der es Spielern ermöglicht, sich zu authentifizieren und ein Spiel zu starten.

  • API Gateway-Autorisierer, der den Benutzerpool mit APIs verknüpft.

  • Web Access Control List (ACL) zur Drosselung übermäßiger Player-Aufrufe an das API Gateway.

  • Backend-Dienst, um im Namen von Spielclients Anfragen an den Amazon GameLift Servers Dienst zu stellen, z. B. um Spielsitzungen anzufordern und an Spielen teilzunehmen:

    • API Gateway + Lambda-Funktion, mit der Spieler einen Slot für eine Spielsitzung anfordern können. Diese Funktion wird aufgerufenStartMatchmaking(), wenn keine offenen Slots verfügbar sind.

    • API Gateway + Lambda-Funktion, mit der Spieler Verbindungsinformationen für ihre Spielanfrage abrufen können.

  • DynamoDB-Tabellen zum Speichern von Matchmaking-Tickets für Spieler und Informationen zur Spielsitzung.

  • Amazon SNS-Thema + Lambda-Funktion zur Behandlung von Ereignissen. GameSessionQueue

Setzen Sie die Containerflotte ein

Wenn Ihre Flottenkonfiguration abgeschlossen ist, klicken Sie auf die Schaltfläche Containerflotte bereitstellen, um die Bereitstellung zu starten. Dieser Vorgang kann mehrere Minuten dauern, bis das Plugin ein Container-Image erstellt und es an ECR weiterleitet, Hosting-Ressourcen für die Containerflotte bereitstellt, die Flotte und andere AWS Ressourcen für das gewählte Hosting-Lösungsszenario bereitstellt.

Wenn Sie eine Bereitstellung starten, können Sie den Fortschritt jedes Schritts verfolgen. Je nach Ihrer Konfiguration können die Schritte Folgendes beinhalten:

  • Container-Image konfigurieren

  • Erstellen eines Amazon ECR-Repositorys

  • Ein Image erstellen und an Amazon ECR übertragen

  • Eine Containergruppendefinition erstellen

  • Containerflotte erstellen

Für detailliertere Informationen zur Bereitstellung wählen Sie in der AWS Management Console die Option Anzeigen. Wenn die Containerflotte den Status „Aktiv“ erreicht, laufen auf der Flotte aktiv Container mit Serverprozessen, die bereit sind, Spielsitzungen abzuhalten.

Wenn die Bereitstellung abgeschlossen ist, verfügen Sie über eine funktionierende Containerflotte, die bereit ist, Spielsitzungen zu hosten und Spielerverbindungen anzunehmen.

Sie können einen laufenden Einsatz nicht stoppen. Wenn die Bereitstellung in einen schlechten Zustand gerät oder fehlschlägt, können Sie mit der Option Bereitstellung zurücksetzen von vorne beginnen.

Starten Sie den Client

Zu diesem Zeitpunkt hast du alle Aufgaben abgeschlossen, um dein Multiplayer-Spiel zu starten und zu spielen, auf dem das Spiel gehostet wirdAmazon GameLift Servers. Um dein Spiel zu spielen, wähle Startclient, um eine lokale Instanz deines Spielclients zu starten.

  • Wenn du das Szenario mit einer Flotte eingesetzt hast, öffne eine Instanz deines Spielclients mit einem Spieler und gib die Serverkarte ein, um dich fortzubewegen. Du kannst eine zweite Instanz des Spielclients öffnen, um einen zweiten Spieler zur gleichen Serverspielkarte hinzuzufügen.

  • Wenn du das FlexMatch Szenario bereitgestellt hast, wartet die Hosting-Lösung darauf, dass mindestens zwei Spielclients Matchmaking-Anfragen stellen. Öffne mindestens zwei Instanzen deines Spielclients mit einem Spieler. Die beiden Spieler werden verglichen und aufgefordert, an einer Spielsitzung für das Spiel teilzunehmen.

Aktualisiere eine Containerflotte

Wenn Sie eine Hosting-Lösung für verwaltete Container erfolgreich bereitgestellt haben, können Sie die Funktion „Bereitstellung aktualisieren“ verwenden. Mit dieser Option können Sie die Konfigurationseinstellungen für eine bereitgestellte Containerflotte aktualisieren, ohne eine neue Flotte erstellen zu müssen.

Wenn Sie eine Bereitstellung aktualisieren, können Sie ein Container-Image mit einem anderen Spieleserver-Build bereitstellen, das Amazon ECR-Repository ändern, ein anderes Bereitstellungsszenario wählen und optionale Konfigurationseinstellungen anpassen.

Wenn Sie bereit sind, Ihre Änderungen bereitzustellen, wählen Sie Update. Die Zeit, die für ein Deployment-Update benötigt wird, ist vergleichbar mit einer vollständigen Bereitstellung. Für detaillierte Informationen zur Bereitstellung wählen Sie in der AWS Management Console die Option Anzeigen.

Bereinigen Sie die bereitgestellten Ressourcen

Es hat sich bewährt, die AWS Ressourcen für Ihre Managed-Container-Lösung zu bereinigen, sobald Sie sie nicht mehr benötigen. Möglicherweise entstehen Ihnen weiterhin Kosten für diese Ressourcen, wenn Sie sie nicht entfernen.

Löschen Sie die folgenden Ressourcen:

  • Verwalteter Container-Ressourcenstapel. Die Ressourcen in diesem Stapel hängen vom ausgewählten Bereitstellungsszenario ab. Verwenden Sie die CloudFormation Konsole, um den gesamten Stack zu löschen. Stapel, die mit dem Amazon GameLift Servers Plugin generiert werden, verwenden die folgende Namenskonvention:GameLiftPluginForUnreal-{GameName}-Containers. Warten Sie, bis der Stack-Löschvorgang abgeschlossen ist, bevor Sie eine neue Bereitstellung verwalteter Container im Plugin initiieren. Weitere Informationen finden Sie unter Löschen eines Stacks aus der CloudFormation Konsole.

  • Amazon ECR-Repository. Wenn Sie das Plugin verwendet haben, um ein Repository für Ihr Container-Image zu erstellen, möchten Sie möglicherweise alle Repositorys löschen, die nicht mehr benötigt werden. Sie müssen kein Repository löschen, bevor Sie eine Bereitstellung verwalteter Container zurücksetzen. Wenn Sie eine Bereitstellung aktualisieren oder zurücksetzen, verwendet das Plugin automatisch dasselbe Repository, sofern Sie nicht angewiesen werden, ein anderes zu verwenden. Weitere Informationen finden Sie unter Löschen eines privaten Repositorys in Amazon ECR.