Entwicklungs-Roadmap für Hybrid-Hosting mit Amazon GameLift Servers - Amazon GameLift Servers

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.

Entwicklungs-Roadmap für Hybrid-Hosting mit Amazon GameLift Servers

Diese Roadmap führt dich durch die Entwicklung einer Hosting-Lösung für dein Multiplayer-Spiel. Amazon GameLift Serversbietet mehrere Hosting-Optionen für Spiele. Weitere Informationen zu diesen Optionen finden Sie unterAmazon GameLift ServersLösungen.

Eine Hybridlösung verwendet eine Kombination aus Hosting-Ressourcen, einschließlich cloudbasierter Ressourcen, die von verwaltet werden, Amazon GameLift Servers und Ihrer eigenen, selbst verwalteten Hosting-Ressourcen. Eine ausführlichere Beschreibung des Hybrid-Hostings finden Sie in diesem Artikel: Hybrid-Gameserver-Hosting mit Amazon GameLift Servers Anywhere. Mit Amazon GameLift Servers können Sie eine Hybridlösung einrichten, die gemeinsame Komponenten und Prozesse verwendet, sodass Sie eine globale Flotte zentral verwalten und Lasten problemlos zwischen allen Arten von Ressourcen verschieben können.

Eine Hybridarchitektur besteht aus den folgenden Komponenten:

  • Eine oder mehrere Amazon GameLift Servers verwaltete Flotten, die Amazon Elastic Compute Cloud (Amazon EC2) -Instances verwenden, die für das Hosten von Spielen im Mehrspielermodus optimiert sind.

  • Eine oder mehrere Amazon GameLift Servers Anywhere-Flotten, die Ihre vorhandenen lokalen oder anderen Hosting-Ressourcen nutzen, einschließlich Ihrer Tools für das Konfigurationsmanagement und die Bereitstellung. (Sie können optional die verwenden.) AWS Systems Manager

  • Ein einziger Spieleserver-Build, der in das Server-SDK für integriert ist Amazon GameLift Servers und auf allen Flotten eingesetzt werden kann.

  • Ein einziger Spielclient und Backend-Service, integriert in das AWS SDK, um mit dem Amazon GameLift Servers Dienst zu interagieren und Spielsitzungen anzufordern.

  • Eine gemeinsame Amazon GameLift Servers Warteschlange, um neue Spielsitzungen auf verfügbaren Spieleservern zu platzieren und die Auslastung auf alle Flotten verteilen zu können.

  • Der Amazon GameLift Servers Agent, der mit einer Anywhere-Flotte bereitgestellt wird, vereinfacht die Aufgaben des Serverprozessmanagements auf allen Computern aller Flotten.

  • (Optional) Ein FlexMatch Matchmaker, um Mehrspieler-Matches zu erstellen und Spielsitzungen für sie einzurichten.

Diese Roadmap bietet einen optimierten Weg, um Ihr Multiplayer-Spiel in einer Hybrid-Hosting-Lösung mit erfolgreich zum Laufen zu bringen. Amazon GameLift Servers Sobald Sie die erforderlichen Komponenten installiert haben, können Sie mit der Spieleentwicklung fortfahren und Ihre Hosting-Lösung anpassen. Je näher die Markteinführung rückt, finden Sie hier Hilfe bei der Vorbereitung Ihrer Hosting-Lösung für den Einsatz auf Produktionsebene. Bereite dein Spiel mit Amazon GameLift Servers Hosting auf den Start vor

Holen Sie sich eine Starthilfe mit dem Plugin Amazon GameLift Servers

Wenn du Projekte mit Unreal Engine oder Unity entwickelst, beginne mit der Einrichtung deines Spiels für das Hosting mit dem Amazon GameLift Servers Plugin. Mit dem Plugin kannst du es Amazon GameLift Servers SDKs zu deinem Spielprojekt hinzufügen und mithilfe der geführten Workflows eine einfache, funktionierende Version einer Hybrid-Hosting-Lösung mit sowohl einer Anywhere-Flotte als auch einer Amazon GameLift Servers verwalteten Flotte erstellen. Anschließend kannst du auf diesen Grundlagen aufbauen und sie nach Bedarf anpassen.

Füge deinem Spieleserver Funktionen hinzu, sodass er mit dem Amazon GameLift Servers Dienst kommunizieren kann, wenn er zum Hosten bereitgestellt wird. Dieselbe Funktionalität ist erforderlich, wenn der Spieleserver auf einer Amazon GameLift Servers verwalteten Flotte oder einer Anywhere-Flotte läuft.

  • Holen Sie sich das Server-SDK für Amazon GameLift Servers (Version 5.x) für Ihr Spielprojekt. Das Server-SDK ist in C++, C# und Go verfügbar. Laden Sie das Server-SDK für Amazon GameLift Servers herunter.

  • Ändern Sie den Code Ihres Spieleservers, um Server-SDK-Funktionen hinzuzufügen. Anleitungen finden Sie unter Integrieren Sie Spiele mit benutzerdefinierten Spieleservern. Gehen Sie mindestens wie folgt vor:

    • Fügen Sie Code hinzu, um das Amazon GameLift Servers SDK zu initialisieren und eine WebSocket Verbindung mit dem Amazon GameLift Servers Dienst herzustellen. Verwenden Sie die Server-SDK-AktionInitSdk(). Fügen Sie Code zur Angabe von Serverparametern bei der Ausführung auf einem Anywhere-Flottencomputer hinzu.

    • Fügen Sie Code hinzu, um dem Amazon GameLift Servers Dienst zu melden, wenn der Serverprozess bereit ist, Spielsitzungen zu hosten. Verwenden Sie die Server-SDK-AktionProcessReady().

    • Implementieren Sie die erforderlichen OnProcessTerminate() Rückruffunktionen undOnStartGameSession(). Mit diesen Funktionen können Spieleserverprozesse eine Verbindung mit dem Amazon GameLift Servers Dienst aufrechterhalten, auf Aufforderung von Amazon GameLift Servers eine Spielsitzung einleiten und auf eine Aufforderung zum Beenden des Spielserverprozesses reagieren.

    • Fügen Sie Code hinzu, der dem Amazon GameLift Servers Dienst meldet, wenn der Serverprozess eine Spielsitzung beendet. Verwenden Sie die Server-SDK-AktionProcessEnding().

  • Verpacke deinen Gameserver-Build. Erstelle ein Installationsskript mit deinen Build-Dateien, Abhängigkeiten und unterstützender Software. Siehe Packen Ihrer Spielserver-Build-Dateien. Wir empfehlen, einen Amazon Simple Storage Service (Amazon S3) -Bucket zu verwenden, um Versionen Ihres Game-Builds zu speichern.

  • Testen Sie Ihre Gameserver-Integration. Für diese Aufgabe empfehlen wir, eine Amazon GameLift Servers Anywhere-Flotte mit einer lokalen Workstation einzurichten, wie unter beschriebenLokales Testen mit Amazon GameLift Servers Anywhere einrichten. Installieren Sie für diesen Schritt Ihren Gameserver-Build manuell auf dem Testgerät und starten Sie einen Serverprozess. Verwenden Sie die AWS CLI, um eine neue Spielsitzung anzufordern, und stellen Sie sicher, dass der Amazon GameLift Servers Dienst Ihren Serverprozess erfolgreich zum Starten einer Spielsitzung auffordert.

Erstelle eine Möglichkeit für deinen Spielclient, die Teilnahme an einer Spielsitzung anzufordern, Verbindungsinformationen abzurufen und dann direkt eine Verbindung zu einer gehosteten Spielsitzung herzustellen. Der gängigste Ansatz besteht darin, eine Backend-Servicefunktion einzurichten, die als Vermittler zwischen deinem Spielclient und dem Dienst dient. Amazon GameLift Servers Dieser Ansatz schützt deine Hosting-Ressourcen und gibt dir mehr Kontrolle darüber, wie Spieler an Spielsitzungen teilnehmen.

  • Entwickeln Sie Backend-Servicefunktionen für das Hosting. Der Backend-Dienst kommuniziert mit dem Amazon GameLift Servers Dienst und übermittelt Verbindungsinformationen an einen Spieleclient. Diese Funktion umfasst das Starten von Spielsitzungen, das Platzieren von Spielern in Spiele und das Abrufen von Informationen zu Spielsitzungen. Anleitungen finden Sie unter Integrieren Sie Spiele mit benutzerdefinierten Spieleservern. Gehen Sie mindestens wie folgt vor:

  • Füge deinem Spielclient Funktionen hinzu, mit denen Spieler an einer gehosteten Spielsitzung teilnehmen können. Der Spielclient sendet Anfragen an deinen Backend-Service, nicht direkt anAmazon GameLift Servers. Nachdem der Backend-Dienst Verbindungsinformationen zur Spielsitzung bereitgestellt hat, stellt der Spielclient eine direkte Verbindung mit der Spielsitzung her, um das Spiel zu spielen.

  • Testen Sie die Integration Ihres Spielclients. Sie können dieselbe Amazon GameLift Servers Anywhere-Flotte mit einer lokalen Workstation zum Testen verwenden.

    Wenn Sie während der Entwicklungsphase testen möchten, wie sich Ihr Spielbuild in einer Amazon GameLift Servers verwalteten Flotte verhält, empfehlen wir Ihnen, auch eine cloudbasierte Testumgebung einzurichten. Diese Amazon GameLift Servers Toolkit-Lösung ahmt das Verhalten einer verwalteten Flotte nach, ermöglicht es Ihnen jedoch, Spielserver-Builds mit minimaler Bearbeitungszeit zu aktualisieren.

Passen Sie anAmazon GameLift Servers, wie Sie Anfragen für neue Spielsitzungen bearbeiten möchten, und suchen Sie nach verfügbaren Spieleservern, auf denen sie gehostet werden können. Amazon GameLift Serversverfolgt automatisch die Verfügbarkeit aller Spieleserver auf allen Flotten. Wenn ein Spielclient eine Anfrage zur Teilnahme an einer Spielsitzung sendet, Amazon GameLift Servers sucht er anhand definierter Prioritäten wie minimale Latenz, Kosten und Verfügbarkeit nach der „bestmöglichen“ Platzierung.

  • Erstelle eine Warteschlange für eine Spielsitzung, um eine neue Spielsitzung auf verfügbaren Spieleservern zu platzieren. Warteschlangen sind der wichtigste Mechanismus für die Platzierung von Spielsitzungen. Anleitungen finden Sie unter Eine Warteschlange für Spielsitzungen erstellen.

    • Fügen Sie Ihrer Warteschlange mindestens Ihre Anywhere-Flotten als Ziele hinzu. Alle anderen Einstellungen sind optionale Anpassungen.

  • Konvertieren Sie den CreateGameSession() Anruf in Ihrem Backend-Servicecode in. StartGameSessionPlacement() Weitere Informationen findest du unter Eine Spielsitzung in einer Warteschlange mit mehreren Standorten erstellen.

  • Erstelle einen Mechanismus, um einen Spielclient zu benachrichtigen, wenn eine Spielsitzung bereit ist, daran teilzunehmen. Während der Entwicklung kannst du den Status einer Spielsitzung abfragen, indem du einen Call to verwendest DescribeGameSessionPlacement. Bevor du jedoch eine Warteschlange zur Verarbeitung großer Datenmengen verwenden kannst, musst du die Ereignisbenachrichtigungen aktivieren. Siehe Event-Benachrichtigung für die Platzierung von Spielsitzungen einrichten.

  • (Optional) Fügen Sie FlexMatch Matchmaking-Komponenten hinzu. Anleitungen finden Sie im Amazon GameLift ServersFlexMatchEntwicklerhandbuch.

Bis zu diesem Zeitpunkt hast du mit lokalen Geräten (registriert als Anywhere Fleet Computes) gearbeitet, um deine Spielkomponenten zu testen und zu verbessern. Der nächste Schritt besteht darin, die Art von Flotten einzurichten, die Sie für ein Produktionssystem benötigen. Beginnen Sie mit einer Anywhere-Flotte und fügen Sie den Amazon GameLift Servers Agenten hinzu, um einige wichtige Aufgaben zur Serververwaltung am Computer zu verwalten. Weitere Details finden Sie unter Arbeite mit dem Amazon GameLift Servers Agenten.

  • Hol dir den Amazon GameLift Servers Agenten und füge ihn deinem Gameserver-Installationspaket hinzu. Holen Sie sich den Agent-Quellcode, der im Github-Repository für Amazon GameLift Servers Agenten verfügbar ist, und erstellen Sie ihn. Platzieren Sie die resultierende ausführbare JAR-Datei in demselben Verzeichnis wie die ausführbare Datei für den Spiel-Build.

  • Ändern Sie Ihr Startskript für den Agenten nach Bedarf. Stellen Sie sicher, dass die ausführbare Datei des Agenten gestartet wird, sobald ein Computer ausgeführt wird. Hilfe zur Installation und Ausführung des Agenten auf Ihren Hosting-Computern finden Sie in der Readme-Datei im Agent-Repository. Ihr Startbefehl sollte Optionen enthalten, mit denen Sie mindestens die Anywhere-Flotten-ID sowie einen benutzerdefinierten Standort und AWS-Region einen Computernamen angeben können.

    Der Agent erledigt automatisch die folgenden Aufgaben für Sie. Wenn Sie diese Aufgaben also mit Skripten erledigt haben, können Sie sie entfernen:

    • Ruft RegisterCompute() auf, um die Rechenleistung einer Anywhere-Flotte hinzuzufügen.

    • Aufrufe GetComputeAuthToken() zur Authentifizierung von Spieleservern, wenn sie sich mit dem Amazon GameLift Servers Dienst verbinden. Der Agent verwaltet das Abrufen und Aktualisieren des Authentifizierungstokens, das von allen Spielserverprozessen verwendet werden kann, die auf dem Computer ausgeführt werden.

    • Startet neue Serverprozesse auf dem Computer auf der Grundlage einer Reihe von Laufzeitanweisungen.

  • Erstellen Sie eine Laufzeitkonfiguration für Computer in Ihrer Anywhere-Flotte. Geben Sie mindestens den Startpfad für die ausführbare Datei Ihres Spieleservers an. Sie können die Amazon GameLift Servers Konsole oder die AWS CLI verwenden, um Laufzeitanweisungen für die Flotte zu erstellen oder zu ändern. Der Agent führt diese Anweisungen aus und fordert regelmäßig Updates vom Amazon GameLift Servers Service an.

  • Richten Sie Ihre Warteschlange für Spielsitzungen nach Bedarf ein oder ändern Sie sie. Erstellen Sie eine neue Warteschlange (oder aktualisieren Sie eine bestehende) und legen Sie ein Ziel für die Anywhere-Flotte fest, die zusammen mit dem Amazon GameLift Servers Agenten eingesetzt wird.

  • Testen Sie die Agent-Integration mit Ihren Anywhere-Flotten. Stellen Sie sicher, dass der Agent die Serverprozesse auf der Grundlage der Laufzeitkonfiguration ordnungsgemäß startet.

Erstellen Sie eine Amazon GameLift Servers verwaltete EC2 Flotte als Ergänzung zu Ihrer Anywhere-Flotte. Wenn Sie in Schritt 2 eine cloudbasierte Testumgebung eingerichtet haben, um die Entwicklung zu beschleunigen, sollten Sie planen, eine verwaltete Flotte einzurichten, nachdem Sie den Großteil Ihrer Spieleentwicklung und Tests abgeschlossen haben. Du benötigst eine vollständig verwaltete Flotte, um zusätzliche Einstellungen wie die automatische Kapazitätsskalierung konfigurieren und testen zu können.

  • Package Sie Ihren Gameserver-Build und laden Sie ihn hochAmazon GameLift Servers. Erstelle ein Installationsskript mit deinen Build-Dateien, Abhängigkeiten und unterstützender Software. Sie können dieselbe Build-Software sowohl für Ihre Anywhere- als auch für Ihre verwalteten Flotten verwenden. Siehe Stellen Sie einen benutzerdefinierten Server-Build bereit für Amazon GameLift Servers Hosten. Sie können Ihren Build entweder Amazon GameLift Servers über die Konsole oder die AWS CLI hochladen.

    Bevor Sie Ihren Build hochladen, entscheiden Sie, in welchem AWS-Region Bereich Sie die verwaltete Flotte erstellen möchten. Sie müssen den Build in dieselbe Region hochladen. Weitere Informationen zur Auswahl eines Flottenstandorts finden Sie unterStandort der Flotte.

  • Erstellen Sie eine verwaltete EC2 Flotte. Sie können die Amazon GameLift Servers Konsole oder die AWS CLI verwenden, um eine verwaltete Flotte zu erstellen. Wenn du eine Flotte erstellst, wird Amazon GameLift Servers sofort mit der Bereitstellung deines Gameserver-Builds für das Hosting begonnen. Du kannst viele Aspekte einer verwalteten Flotte konfigurieren. Anleitungen finden Sie unter Erstellen Sie eine Amazon GameLift Servers verwaltete EC2 Flotte. Gehen Sie mindestens wie folgt vor:

    • Gib der Flotte einen Namen und gib an, welcher hochgeladene Spiel-Build eingesetzt werden soll.

    • Wählen Sie On-Demand-Instances für Ihre Flotte und wählen Sie einen Instance-Typ aus, der an Ihrem Flottenstandort verfügbar ist. Spot-Flotten sind eine wertvolle Option, erfordern jedoch zusätzliches Design und Konfiguration.

    • Erstellen Sie eine Runtime-Konfiguration mit ähnlichen Einstellungen wie bei der Anywhere-Flotte. Geben Sie mindestens den Startpfad für die ausführbare Datei Ihres Gameservers an.

    • Geben Sie die Porteinstellungen an, damit eingehender Datenverkehr auf Ihre Spieleserver zugreifen kann.

  • Füge die verwaltete Flotte zu deiner Warteschlange für gemeinsame Spielsitzungen hinzu. Aktualisiere die Warteschlange aus Schritt 4, sodass sie Ziele sowohl für die verwaltete Flotte als auch für die Anywhere-Flotte enthält, die mit dem Amazon GameLift Servers Agenten bereitgestellt wurde.

  • Testen Sie das Spiele-Hosting mit Ihren verwalteten Flotten. Zu diesem Zeitpunkt solltest du in der Lage sein, den gesamten Hosting-Zyklus zu testen. Ein Spieleclient fordert eine Spielsitzung an, ruft Verbindungsinformationen ab und stellt erfolgreich eine Verbindung zu einer Spielsitzung her.

Während du dich auf den Start des Spiels vorbereitest, musst du deine Hosting-Lösungen verfeinern. Zu den zu berücksichtigenden Entscheidungen gehören unter anderem:

  • Automatisieren Sie bei Anywhere-Flotten den Prozess des Startens und Herunterfahrens von Computern nach Bedarf, einschließlich der Installation und Ausführung von Gameserver-Software. Das Wiederverwenden von Computern ist nützlich, um sicherzustellen, dass sie regelmäßig aktualisiert werden. Durch das Herunterfahren von Computern können Kosten eingespart werden, wenn sie nicht benötigt werden.

  • Wenn dein Spieleserver andere AWS Ressourcen kommunizieren muss, richte IAM-Rollen ein, um den Zugriff zu verwalten. Siehe Kommunizieren Sie mit anderen AWS Ressourcen aus Ihren Flotten.

  • Ermitteln Sie, wo Sie die Spieleserver geografisch platzieren möchten. Fügen Sie Ihren verwalteten Flotten entfernte Standorte hinzu. Siehe Personalisiere deine Amazon GameLift Servers EC2 verwaltete Flotten.

  • Erwägen Sie bei verwalteten Flotten den Einsatz von Spot-Flotten, um Kosten zu sparen. Siehe Tutorial: Eine Amazon GameLift Servers Warteschlange mit Spot-Instances erstellen.

  • Optimieren Sie die Flottenleistung, indem Sie Konfigurationen für Rechenressourcen auswählen und anschließend die Runtime-Anweisungen so konfigurieren, dass die optimale Anzahl von Serverprozessen pro Recheneinheit ausgeführt wird. Tun Sie dies sowohl für Anywhere-Flotten als auch für verwaltete Flotten. Siehe Verwalte wie Amazon GameLift Servers startet Spieleserver.

  • Experimentieren Sie mit den Optionen für die Platzierung von Spielsitzungen für verwaltete Flotten, einschließlich der Anpassung der Priorisierungseinstellungen. Siehe Passen Sie eine Warteschlange für Spielsitzungen an.

  • Richten Sie für verwaltete Flotten die automatische Kapazitätsskalierung ein, um der erwarteten Spielernachfrage gerecht zu werden. Siehe Skalierung der Game-Hosting-Kapazität mit Amazon GameLift Servers.

  • Richten Sie für Anywhere-Flotten Mechanismen ein, die eine manuelle oder automatische Kapazitätsskalierung ermöglichen, um der erwarteten Nachfrage der Spieler gerecht zu werden.

  • Entwerfen und implementieren Sie bei Bedarf einen Failover auf andere Ressourcen. Richten Sie Standby-Flotten in anderen Flotten ein AWS-Regionen und ändern Sie Warteschlangen und auto Skalierung, um bei Bedarf Failover abzuwickeln.

  • Richten Sie Hosting-Observability-Tools ein, einschließlich Analyse und Protokollierung. Siehe Überwachen Amazon GameLift Servers. Erstellen Sie Metrikgruppen, um Analysen für all Ihre Hosting-Ressourcen zu aggregieren.

  • Automatisieren Sie Ihre Bereitstellung mithilfe von Infrastructure as Code (IaC). Siehe Verwalten Amazon GameLift Servers Hosten von Ressourcen mit AWS CloudFormation.

    Amazon GameLift Serversunterstützt die Verwendung von AWS CloudFormation Vorlagen für beliebige bereitstellungsspezifische Konfigurationen. Sie können die auch verwenden, um Ihre AWS Cloud Development Kit (AWS CDK) Amazon GameLift Servers Ressourcen zu definieren. Weitere Informationen zu finden Sie im AWS Cloud Development Kit (AWS CDK) Entwicklerhandbuch. AWS CDK

    Um die Bereitstellung Ihrer AWS CloudFormation Stacks zu verwalten, empfehlen wir die Verwendung von Tools und Diensten für Continuous Integration und Continuous Delivery (CI/CD) wie. AWS CodePipeline Mit diesen Tools können Sie die Installation automatisch oder mit Genehmigung durchführen, wann immer Sie eine Binärdatei für einen Spieleserver erstellen. Mit einem CI/CD Tool oder Dienst kann die Bereitstellung von Ressourcen für eine neue Spielserverversion wie folgt aussehen:

    • Erstelle und teste deine Gameserver-Binärdatei.

    • Lade die Binärdatei auf hochAmazon GameLift Servers.

    • Stellen Sie mit dem neuen Build neue Flotten bereit.

    • Füge die neuen Flotten zu deiner Warteschlange für Spielsitzungen hinzu und entferne die Flotten mit der vorherigen Build-Version.

    • Wenn die Flotten mit dem vorherigen Build keine aktiven Spielsitzungen mehr veranstalten, lösche die AWS CloudFormation Stapel dieser Flotten.