View a markdown version of this page

Entwicklungs-Roadmap für Hybrid-Hosting mit Amazon-Server GameLift - 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.

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

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 unterGameLift Amazon-Server Hosting-Optionen für Spiele.

Eine Hybridlösung verwendet eine Kombination von Hosting-Ressourcen, einschließlich cloudbasierter Ressourcen, die von Ihnen verwaltet werden, Amazon GameLift Servers und Ihren eigenen selbst verwalteten Hosting-Ressourcen. Eine detailliertere Erläuterung von Hybrid-Hosting finden Sie in diesem Artikel: Hybrides 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:

  • 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 ein in das AWS SDK integrierter Backend-Service zur Interaktion mit dem Amazon GameLift Servers Dienst und zur Anforderung von Spielsitzungen.

  • Eine gemeinsame Amazon GameLift Servers Warteschlange, um neue Spielsitzungen mit verfügbaren Spielservern zu platzieren und die Auslastung aller Flotten auszugleichen.

  • (Optional) Ein Process Manager-Agent, der zusammen mit einer Anywhere-Flotte bereitgestellt wird, um die Serverprozessverwaltungsaufgaben auf allen Computern aller Flotten zu vereinfachen.

  • (Optional) Ein FlexMatch Matchmaker, der Mehrspieler-Matches erstellt und Spielsitzungen für sie einrichtet.

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

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

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 Nachdem Sie die erforderlichen Komponenten eingerichtet haben, können Sie mit der Spieleentwicklung fortfahren und Ihre Hosting-Lösung anpassen. Je näher die Markteinführung rückt, desto mehr Hilfe bei der Vorbereitung deiner Hosting-Lösung Bereite dich auf den Start vor mit GameLift Amazon-Server Hosten für den Einsatz in der Produktion findest du in diesen Dokumenten.

Holen Sie sich einen Starthilfe mit dem GameLift Amazon-Server Plugin

Wenn Sie Projekte mit Unreal Engine oder Unity entwickeln, beginnen Sie damit, Ihr Spiel für das Hosting mit dem Amazon GameLift Servers Plugin einzurichten. Mit dem Plugin kannst du die Amazon GameLift Servers SDKs zu deinem Spielprojekt hinzufügen und mithilfe der geführten Workflows eine einfach funktionierende Version einer Hybrid-Hosting-Lösung mit einer Anywhere-Flotte und einer Amazon GameLift Servers verwalteten Flotte erstellen. Auf diesen Grundlagen kannst du dann aufbauen und sie nach Bedarf anpassen.

Fügen Sie Ihrem Spieleserver Funktionen hinzu, damit er mit dem Amazon GameLift Servers Dienst kommunizieren kann, wenn er für das Hosting 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 Ihren Spieleservercode, um die Server-SDK-Funktionalität hinzuzufügen. Anleitungen finden Sie unter Bereite ein Spiel für das Hosten vor mit Amazon GameLift Servers. 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 ein, wenn Sie auf einem Anywhere-Flottencomputer ausgeführt werden.

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

    • Implementieren Sie die erforderlichen Callback-Funktionen OnProcessTerminate() undOnStartGameSession(). Mit diesen Funktionen können Spieleserverprozesse eine Verbindung mit dem Amazon GameLift Servers Dienst aufrechterhalten, eine Spielsitzung einleiten, wenn sie dazu aufgefordert werdenAmazon GameLift Servers, und auf eine Aufforderung reagieren, um den Spielserverprozess zu beenden.

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

  • Verpacken Sie Ihren Spieleserver-Build. Erstellen Sie ein Installationsskript mit Ihren 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 Spiel-Builds zu speichern.

  • Testen Sie Ihre Spieleserver-Integration. Für diese Aufgabe empfehlen wir, eine Amazon GameLift Servers Anywhere-Flotte mit einer lokalen Workstation einzurichten, wie unter beschriebenRichten Sie lokale Tests ein mit GameLift Amazon-Server Überall. Installieren Sie für diesen Schritt den Spieleserver-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.

Schaffen Sie eine Möglichkeit für Ihren Spielclient, die Teilnahme an einer Spielsitzung anzufordern, Verbindungsinformationen abzurufen und sich dann direkt mit einer gehosteten Spielsitzung zu verbinden. Der gängigste Ansatz besteht darin, Backend-Servicefunktionen einzurichten, die als Vermittler zwischen deinem Spielclient und dem Dienst dienen. Amazon GameLift Servers Dieser Ansatz schützt deine Hosting-Ressourcen und gibt dir mehr Kontrolle darüber, wie Spieler in Spielsitzungen platziert werden.

  • Entwickeln Sie Backend-Servicefunktionen für das Hosting. Der Backend-Dienst kommuniziert mit dem Amazon GameLift Servers Dienst und liefert Verbindungsinformationen an einen Spielclient. Diese Funktion umfasst das Starten von Spielsitzungen, das Platzieren von Spielern in Spielen und das Abrufen von Informationen zur Spielsitzung. Anleitungen finden Sie unter Bereite ein Spiel für das Hosten vor mit Amazon GameLift Servers. Gehen Sie mindestens wie folgt vor:

    • Holen Sie sich das AWS SDK für Amazon GameLift Servers und fügen Sie es Ihrem Backend-Serviceprojekt hinzu. Weitere Informationen finden Sie unter Amazon GameLift Servers SDK-Ressourcen für Kundendienste.

    • Fügen Sie Code hinzu, um einen Amazon GameLift Servers Client zu initialisieren und wichtige Einstellungen zu speichern. Siehe Richten Sie das ein GameLift Amazon-Server API.

    • Fügen Sie Funktionen hinzu, um die AWS SDK-Aktion aufzurufen CreateGameSession() und Verbindungsinformationen zur Spielsitzung an einen Spielclient weiterzugeben. Siehe Eine Spielsitzung auf einer bestimmten Flotte erstellen.

      Ein Anruf CreateGameSession() ist ein praktischer Ausgangspunkt, um neue Spielsitzungen anzufordern. Nachdem Sie ein System zur Platzierung von Spielsitzungen eingerichtet haben (siehe Schritt 3), ersetzen Sie diesen Code durch einen Anruf an StartGameSessionPlacement() (oder StartMatchmaking() falls Sie ihn verwendenFlexMatch).

      Eine Anleitung zur Gestaltung Ihres Back-End-Dienstes finden Sie unterErstellen Sie einen Backend-Service für GameLift Amazon-Server.

  • Füge deinem Spielclient Funktionen hinzu, mit denen Spieler an einer gehosteten Spielsitzung teilnehmen können. Der Spielclient stellt 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 zur 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 Spiel-Build in einer Amazon GameLift Servers verwalteten Flotte verhält, empfehlen wir Ihnen, auch eine Cloud-basierte Testumgebung einzurichten. Diese Amazon GameLift Servers Toolkit-Lösung ahmt das Verhalten einer verwalteten Flotte nach, ermöglicht es Ihnen jedoch, Spieleserver-Builds mit minimaler Bearbeitungszeit zu aktualisieren.

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

  • Erstelle eine Warteschlange für Spielsitzungen, um eine neue Spielsitzung mit verfügbaren Spielservern 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.

  • Wandeln Sie den CreateGameSession() Anruf in Ihrem Backend-Servicecode in um. StartGameSessionPlacement() Siehe Eine Spielsitzung in einer Warteschlange mit mehreren Standorten erstellen.

  • Schaffen Sie einen Mechanismus, um einen Spielclient zu benachrichtigen, wenn eine Spielsitzung zum Beitritt bereit ist. Während der Entwicklung können Sie den Status der Spielsitzung abfragen, indem Sie einen Anruf an tätigen DescribeGameSessionPlacement. Bevor du eine Warteschlange für die Verarbeitung großer Datenmengen verwenden kannst, musst du allerdings die Event-Benachrichtigungen aktivieren. Siehe Event-Benachrichtigung für die Platzierung von Spielsitzungen einrichten.

  • (Optional) Füge FlexMatch Matchmaking-Komponenten hinzu. Eine Anleitung finden Sie im Amazon GameLift ServersFlexMatch Entwicklerhandbuch.

Bis zu diesem Zeitpunkt haben Sie mit lokalen Geräten (registriert als Anywhere Fleet Computes) gearbeitet, um Ihre Spielkomponenten zu testen und zu iterieren. 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 Hostverwaltungsaufgaben auf dem Computer zu erledigen. 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 Amazon GameLift Servers GitHub Agent-Repository verfügbar ist, und erstellen Sie ihn. Platzieren Sie die resultierende ausführbare JAR-Datei in demselben Verzeichnis wie die Programmdatei für den Spiele-Build.

  • Ändern Sie Ihr Startskript für den Agenten nach Bedarf. Stellen Sie sicher, dass die ausführbare Agent-Datei 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-Repo. Ihr Startbefehl sollte Optionen enthalten, mit denen Sie mindestens die Anywhere-Flotten-ID sowie einen benutzerdefinierten Standort und AWS-Region einen Computenamen 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 zu 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 Spielservers 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 Aktualisierungen vom Amazon GameLift Servers Dienst an.

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

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

Erstellen Sie eine Amazon GameLift Servers verwaltete EC2-Flotte, um Ihre Anywhere-Flotte zu ergänzen. Wenn Sie in Schritt 2 eine Cloud-basierte Testumgebung einrichten, um die Entwicklung zu beschleunigen, planen Sie, eine verwaltete Flotte zu erstellen, 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 zu konfigurieren und zu testen.

  • Verpacken Sie Ihren Spieleserver, bauen Sie ihn auf und laden Sie ihn hochAmazon GameLift Servers. Erstellen Sie ein Installationsskript mit Ihren 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 Erstelle einen Gameserver-Build für GameLift Amazon-Server. 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 welcher AWS-Region Form Sie die verwaltete Flotte erstellen möchten. Du musst den Build in dieselbe Region hochladen. Weitere Informationen zur Auswahl eines Flottenstandorts finden Sie unterGeografische Standorte.

  • 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, beginnt Amazon GameLift Servers sofort, deinen Spieleserver-Build für das Hosting bereitzustellen. Du kannst viele Aspekte einer verwalteten Flotte konfigurieren. Anleitungen finden Sie unter Erstellen Sie eine GameLift Amazon-Server 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ähle On-Demand Instances für deine Flotte und wähle einen Instance-Typ, der an deinem Flottenstandort verfügbar ist. Spot-Flotten sind eine wertvolle Option, erfordern jedoch zusätzliche Planung und Konfiguration.

    • Erstellen Sie eine Laufzeitkonfiguration mit ähnlichen Einstellungen, die Sie für die Anywhere-Flotte verwendet haben. Geben Sie mindestens den Startpfad für die ausführbare Datei Ihres Spielservers 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. Aktualisieren Sie die Warteschlange aus Schritt 4, sodass sie Ziele sowohl für die verwaltete Flotte als auch für die mit dem Amazon GameLift Servers Agenten bereitgestellte Anywhere-Flotte enthält.

  • Testen Sie das Game-Hosting mit Ihren verwalteten Flotten. An diesem Punkt solltest du in der Lage sein, den gesamten Hosting-Zyklus zu testen, wobei ein Spielclient eine Spielsitzung anfordert, Verbindungsinformationen erhält und erfolgreich eine Verbindung zu einer Spielsitzung herstellt.

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

  • Automatisieren Sie für Anywhere-Flotten den Prozess des Startens und Herunterfahrens von Computern nach Bedarf, einschließlich der Installation und Ausführung von Spielserversoftware. Das Recycling von Computern ist nützlich, um sicherzustellen, dass sie regelmäßig aktualisiert werden, und das Herunterfahren von Computern kann Kosten sparen, wenn sie nicht benötigt werden.

  • Wenn dein Spieleserver mit anderen AWS Ressourcen kommunizieren muss, richte IAM-Rollen ein, um den Zugriff zu verwalten. Siehe Verbinde deine GameLift Amazon-Server gehosteter Spieleserver auf anderen AWS Ressourcen.

  • Legen Sie fest, wo Sie die Spieleserver geografisch positionieren möchten. Fügen Sie Ihren verwalteten Flotten entfernte Standorte hinzu. Siehe Anpassungen der Hosting-Ressourcen.

  • Erwägen Sie bei verwalteten Flotten die Verwendung von Spot-Flotten, um Kosten zu sparen. Siehe Senken Sie die Kosten für das Hosting von Spielen mit Spot-Flotten.

  • Optimieren Sie die Flottenleistung, indem Sie Konfigurationen für Rechenressourcen auswählen und dann Ihre Laufzeitanweisungen so konfigurieren, dass die optimale Anzahl von Serverprozessen pro Rechenleistung ausgeführt wird. Tun Sie dies sowohl für Anywhere-Flotten als auch für verwaltete Flotten. Siehe Optimiere die Laufzeitkonfiguration des Spieleservers auf verwalteten Amazon GameLift Servers.

  • 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 Nachfrage der Spieler gerecht zu werden. Siehe Skalierung der Game-Hosting-Kapazität mit Amazon GameLift Servers.

  • Erstellen Sie für Anywhere-Flotten Mechanismen zur manuellen oder automatischen Kapazitätsskalierung, um der erwarteten Spielernachfrage 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 automatische Skalierung, um bei Bedarf Failovers zu bewältigen.

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

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

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

    Um die Bereitstellung Ihrer CloudFormation Stacks zu verwalten, empfehlen wir die Verwendung von Tools und Diensten für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) wie AWS CodePipeline. Diese Tools helfen dir dabei, sie automatisch oder mit Genehmigung bereitzustellen, wann immer du eine Spielserver-Binärdatei erstellst. Mit einem CI/CD Tool oder Dienst kann die Bereitstellung von Ressourcen für eine neue Spielserverversion wie folgt aussehen:

    • Erstelle und teste deine Spieleserver-Binärdatei.

    • Lade die Binärdatei hoch aufAmazon 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 CloudFormation Stapel dieser Flotten.