Plugin für Unity: Stellen Sie Ihr Spiel auf verwalteten EC2-Flotten bereit - 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.

Plugin für Unity: Stellen Sie Ihr Spiel auf verwalteten EC2-Flotten bereit

In diesem Workflow verwenden Sie das Plugin, um Ihr Spiel für das Hosten auf Cloud-basierten Rechenressourcen vorzubereiten, die von Amazon verwaltet werden GameLift. Sie fügen Client- und Server-Spielcode für GameLift Amazon-Funktionen hinzu und laden dann Ihren Server-Build zum Hosten in den GameLift Amazon-Service hoch. Wenn dieser Workflow abgeschlossen ist, laufen deine Spieleserver in der Cloud und ein funktionierender Spieleclient, der eine Verbindung zu ihnen herstellen kann.

So starten Sie den von Amazon GameLift verwalteten Amazon EC2 EC2-Workflow:
  • Wählen Sie im Hauptmenü des Unity-Editors Amazon GameLift und dann Host with Managed EC2 aus. Dieser Workflow umfasst einen sechsstufigen Prozess zum Integrieren, Erstellen, Bereitstellen und Starten Ihrer Spielkomponenten.

Lege dein Profil fest

Wählen Sie das Profil aus, das Sie verwenden möchten, wenn Sie diesem Workflow folgen. Das von Ihnen ausgewählte Profil wirkt sich auf alle Schritte im Workflow aus. Alle Ressourcen, die Sie erstellen, sind mit dem AWS Konto des Profils verknüpft und werden in der AWS Standardregion des Profils platziert. Die Berechtigungen des Profilbenutzers bestimmen Ihren Zugriff auf AWS Ressourcen und Aktionen.

  1. Wählen Sie ein Profil aus der Dropdownliste der verfügbaren Profile aus. Wenn Sie noch kein Profil haben oder ein neues erstellen möchten, gehen Sie zum GameLift Amazon-Menü und wählen Sie AWS Kontoprofile einrichten.

  2. Wenn der Bootstrap-Status nicht „Aktiv“ lautet, wählen Sie das Bootstrap-Profil und warten Sie, bis sich der Status auf „Aktiv“ ändert.

Integriere dein Spiel mit Amazon GameLift

Für diese Aufgabe aktualisierst du den Client- und Servercode in deinem Spielprojekt.

  • Spieleserver müssen in der Lage sein, mit dem GameLift Amazon-Service zu kommunizieren, um Aufforderungen zum Starten einer Spielsitzung zu erhalten, Verbindungsinformationen zur Spielsitzung bereitzustellen und den Status zu melden.

  • Spieleclients müssen in der Lage sein, Informationen über Spielsitzungen abzurufen, an Spielsitzungen teilzunehmen oder sie zu starten und Verbindungsinformationen abzurufen, um an einem Spiel teilzunehmen.

Anmerkung

Wenn du das Beispielspiel importiert hast, kannst du diesen Schritt überspringen. In den Beispielspiel-Assets ist bereits der erforderliche Server- und Client-Code vorhanden.

Integrieren Sie Ihren Servercode

Wenn Sie Ihr eigenes Spieleprojekt mit benutzerdefinierten Szenen verwenden, verwenden Sie den bereitgestellten Beispielcode, um Ihrem Spielprojekt den erforderlichen Servercode hinzuzufügen. Wenn Sie Ihr Spielprojekt zu Testzwecken in eine Anywhere-Flotte integriert haben, haben Sie die Anweisungen in diesem Schritt bereits ausgeführt.

  1. Öffnen Sie in den Projektdateien Ihres Spiels den Assets/Scripts/Server Ordner. Wenn er nicht existiert, erstelle ihn.

  2. Gehe zum GitHub Repo aws/ amazon-gamelift-plugin-unity und öffne den Pfad. Samples~/SampleGame/Assets/Scripts/Server

  3. Suchen Sie die Datei GameLiftServer.cs und kopieren Sie sie in den Ordner Ihres Spielprojekts. Server Wenn Sie eine ausführbare Serverdatei erstellen, verwenden Sie diese Datei als Build-Ziel.

Der Beispielcode enthält die folgenden mindestens erforderlichen Elemente, die das Amazon GameLift C#-Server-SDK (Version 5) verwenden:

  • Initialisiert einen Amazon GameLift API-Client. Der initSDK () -Aufruf mit Serverparametern ist für eine Amazon GameLift Anywhere-Flotte erforderlich. Diese Einstellungen werden automatisch für die Verwendung im Plugin festgelegt.

  • Implementiert erforderliche Rückruffunktionen, um auf Anfragen vom GameLift Amazon-Service zu antworten, einschließlich OnStartGameSessionOnProcessTerminate, undonHealthCheck.

  • Ruft ProcessReady() mit einem bestimmten Port an, um den GameLift Amazon-Service zu benachrichtigen, wenn der Serverprozess bereit ist, Spielsitzungen zu hosten.

Wenn Sie den Beispielservercode anpassen möchten, sehen Sie sich diese Ressourcen an:

Integrieren Sie Ihren Client-Code

Für Spieleclients, die eine Verbindung zu Cloud-basierten Spieleservern herstellen, empfiehlt es sich, einen clientseitigen Backend-Service zu verwenden, um den GameLift Amazon-Dienst aufzurufen, anstatt die Anrufe direkt vom Spielclient aus zu tätigen.

Im Plugin-Workflow für das Hosting auf einer verwalteten EC2-Flotte umfasst jedes Bereitstellungsszenario einen vorgefertigten Backend-Service, der die folgenden Komponenten umfasst:

  • Eine Reihe von Lambda-Funktionen und DynamoDB-Tabellen, die zum Anfordern von Spielsitzungen und zum Abrufen von Spielsitzungsinformationen verwendet werden. Diese Komponenten verwenden ein API-Gateway als Proxy.

  • Ein Amazon Cognito Cognito-Benutzerpool, der eindeutige Spieler-IDs generiert und Spielerverbindungen authentifiziert.

Um diese Komponenten verwenden zu können, benötigt Ihr Spielclient die Möglichkeit, Anfragen an den Backend-Service zu senden, um Folgendes zu tun:

  • Erstellen Sie einen Player-Benutzer im AWS Cognito-Benutzerpool und authentifizieren Sie sich.

  • Nehmen Sie an einer Spielsitzung teil und erhalten Sie Verbindungsinformationen.

  • Nimm über Matchmaking an einem Spiel teil.

Verwenden Sie die folgenden Ressourcen als Leitfaden.

Wählen Sie ein Einsatzszenario

In diesem Schritt wählen Sie die Game-Hosting-Lösung aus, die Sie zu diesem Zeitpunkt bereitstellen möchten. Sie können Ihr Spiel in einem beliebigen Szenario mehrfach bereitstellen.

  • Flotte mit nur einer Region: Stellt deinen Spieleserver auf einer einzigen Flotte von Hosting-Ressourcen in der Standardregion des aktiven Profils bereit. AWS Dieses Szenario ist ein guter Ausgangspunkt, um deine Serverintegration mit AWS und die Server-Build-Konfiguration zu testen. Es stellt die folgenden Ressourcen bereit:

    • AWS Fleet (On-Demand), auf dem dein Gameserver-Build installiert ist und läuft.

    • Amazon Cognito Cognito-Benutzerpool und Client, damit sich Spieler authentifizieren und ein Spiel starten können.

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

    • WebACL zur Drosselung übermäßiger Spieleranrufe an das API-Gateway.

    • API-Gateway+Lambda-Funktion für Spieler, um einen Spielautomat anzufordern. Diese Funktion wird aufgerufenCreateGameSession(), wenn keine verfügbar sind.

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

  • FlexMatch Flotte: Stellt deinen Spieleserver für eine Reihe von Flotten bereit und richtet einen FlexMatch Matchmaker mit Regeln für die Erstellung von Spielerspielen ein. In diesem Szenario wird kostengünstiges Spot-Hosting mit einer Struktur aus mehreren Flotten und mehreren Standorten verwendet, um eine dauerhafte Verfügbarkeit zu gewährleisten. Dieser Ansatz ist nützlich, wenn Sie bereit sind, mit der Entwicklung einer Matchmaker-Komponente für Ihre Hosting-Lösung zu beginnen. In diesem Szenario erstellen Sie die grundlegenden Ressourcen für diese Lösung, die Sie später nach Bedarf anpassen können. Sie stellt die folgenden Ressourcen bereit:

    • FlexMatch Die Matchmaking-Konfiguration und die Matchmaking-Regel ermöglichen die Annahme von Spieleranfragen und die Formierung von Matches.

    • Drei AWS Flotten, auf denen dein Gameserver-Build installiert ist und an mehreren Standorten ausgeführt wird. Beinhaltet zwei Spot-Flotten und eine On-Demand-Flotte als Backup.

    • AWS Warteschlange für die Platzierung von Spielsitzungen, in der Anfragen für vorgeschlagene Spiele bearbeitet werden, indem die bestmögliche Hosting-Ressource (basierend auf Rentabilität, Kosten, Spielerlatenz usw.) gefunden und eine Spielsitzung gestartet wird.

    • Amazon Cognito Cognito-Benutzerpool und Client, damit sich Spieler authentifizieren und ein Spiel starten können.

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

    • WebACL zur Drosselung übermäßiger Spieleranrufe an das API-Gateway.

    • API-Gateway+Lambda-Funktion für Spieler, um einen Spielautomat anzufordern. Diese Funktion ruft StartMatchmaking() auf.

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

    • Amazon DynamoDB-Tabellen zum Speichern von Matchmaking-Tickets für Spieler und Informationen zu Spielsitzungen.

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

Stellen Sie die Spielparameter ein

In diesem Schritt beschreibst du dein Spiel zum AWS Hochladen.

  • Spielname: Gib einen aussagekräftigen Namen für dein Spielprojekt ein. Dieser Name wird innerhalb des Plugins verwendet.

  • Flottenname: Geben Sie einen aussagekräftigen Namen für Ihre verwaltete EC2-Flotte ein. Amazon GameLift verwendet diesen Namen (zusammen mit der Flotten-ID), wenn es Ressourcen in der AWS Konsole auflistet.

  • Build-Name: Geben Sie einen aussagekräftigen Namen für Ihren Server-Build ein. AWS verwendet diesen Namen, um auf die Kopie Ihres Server-Builds zu verweisen, die auf Amazon hochgeladen GameLift und für Bereitstellungen verwendet wurde.

  • Startparameter: Geben Sie optionale Anweisungen ein, die beim Starten der ausführbaren Serverdatei auf einer verwalteten EC2-Flotteninstanz ausgeführt werden sollen. Die maximale Länge beträgt 1024 Zeichen.

  • Spieleserver-Ordner: Geben Sie den Pfad zu einem lokalen Ordner an, der Ihren Server-Build enthält.

  • Spieleserver-Datei: Geben Sie den Namen der ausführbaren Serverdatei an.

Szenario bereitstellen

In diesem Schritt stellen Sie Ihr Spiel auf der Grundlage des von Ihnen ausgewählten Bereitstellungsszenarios in einer Cloud-Hosting-Lösung bereit. Dieser Vorgang kann mehrere Minuten dauern. Dabei wird Ihr Serverbuild AWS validiert, Hosting-Ressourcen bereitgestellt, Ihr Spieleserver installiert, Serverprozesse gestartet und diese für das Hosten von Spielsitzungen vorbereitet.

Um mit der Bereitstellung zu beginnen, wählen Sie Deploy CloudFormation. Du kannst den Status deines Spiele-Hostings hier verfolgen. Für detailliertere Informationen können Sie sich in der AWS Management-Konsole anmelden, um Benachrichtigungen über Ereignisse einzusehen. AWS Stellen Sie sicher, dass Sie sich mit demselben Konto, demselben Benutzer und derselben AWS Region wie das aktive Benutzerprofil im Plugin anmelden.

Wenn die Bereitstellung abgeschlossen ist, haben Sie Ihren Spieleserver auf einer AWS EC2-Instance installiert. Mindestens ein Serverprozess läuft und ist bereit, eine Spielsitzung zu starten.

Starte den Spielclient

Wenn deine Flotte erfolgreich eingesetzt wurde, laufen deine Spieleserver jetzt und stehen für Spielsitzungen zur Verfügung. Du kannst jetzt deinen Client erstellen, ihn starten und eine Verbindung herstellen, um an der Spielsitzung teilzunehmen.

  1. Konfiguriere deinen Spielclient. In diesem Schritt forderst du das Plugin auf, ein GameLiftClientSettings Asset für dein Spielprojekt zu aktualisieren. Das Plugin verwendet dieses Asset, um bestimmte Informationen zu speichern, die dein Spielclient benötigt, um eine Verbindung zum GameLift Amazon-Service herzustellen.

    1. Wenn du das Beispielspiel nicht importiert und initialisiert hast, erstelle ein neues GameLiftClientSettings Asset. Wählen Sie im Hauptmenü des Unity-Editors „Assets“, „Erstellen“ GameLift, „Client-Einstellungen“. Wenn Sie GameLiftClientSettings in Ihrem Projekt mehrere Kopien davon erstellen, erkennt das Plugin dies automatisch und benachrichtigt Sie, welches Asset das Plugin aktualisieren wird.

    2. Wähle unter Spiel starten die Option Client konfigurieren: Verwaltete EC2-Einstellungen anwenden. Diese Aktion aktualisiert deine Spielclient-Einstellungen, sodass sie die verwaltete EC2-Flotte verwenden, die du gerade bereitgestellt hast.

  2. Erstelle deinen Spielclient. Erstellen Sie eine ausführbare Client-Datei mithilfe des Standard-Unity-Build-Prozesses. Wechseln Sie unter Datei, Build-Einstellungen die Plattform zu Windows, Mac, Linux. Wenn du das Beispielspiel importiert und die Einstellungen initialisiert hast, werden die Build-Liste und das Build-Ziel automatisch aktualisiert.

  3. Startet die neu erstellte ausführbare Datei für den Spielclient. Um mit dem Spielen des Spiels zu beginnen, starte zwei bis vier Client-Instanzen und verwende jeweils die Benutzeroberfläche, um an einer Spielsitzung teilzunehmen.

Wenn du den Beispiel-Spielclient verwendest, weist er die folgenden Eigenschaften auf:

  • Eine Komponente zur Spieleranmeldung. Wenn eine Verbindung zu einem Spieleserver auf einer Anywhere-Flotte hergestellt wird, erfolgt keine Spielervalidierung. Sie können beliebige Werte eingeben, um an der Spielsitzung teilzunehmen.

  • Eine einfache Benutzeroberfläche für die Teilnahme am Spiel. Wenn ein Client versucht, einem Spiel beizutreten, sucht der Client automatisch nach einer aktiven Spielsitzung mit einem verfügbaren Spielerplatz. Wenn keine Spielsitzung verfügbar ist, fordert der Client eine neue Spielsitzung an. Wenn eine Spielsitzung verfügbar ist, fordert der Client die Teilnahme an der verfügbaren Spielsitzung an. Wenn du dein Spiel mit mehreren gleichzeitigen Clients testest, startet der erste Client die Spielsitzung, und die übrigen Clients nehmen automatisch an der bestehenden Spielsitzung teil.

  • Spielsitzungen mit Slots für vier Spieler. Du kannst bis zu vier Spielclient-Instanzen gleichzeitig starten und sie nehmen an derselben Spielsitzung teil.