Freigeben über


Wrapperbeispiel

Das Wrapperbeispiel, auch als WrappingGsdk bezeichnet, umschließt ein vorhandenes Spiel, sodass es bei der Bereitstellung von Builds für Spieleserver verwendet werden kann, die das Windows- und Linux-Betriebssystem verwenden.

Mit der Wrapperanwendung können Sie auch Ihren Spielserver-Build auf PlayFab Multiplayer-Servern verwenden.

Wichtig

Ein Wrapper ist eine Problemumgehung, indem die Standardausgabe- und Fehlerstreams zum Aufrufen von GSDK-Methoden verarbeitet werden, und er ist nicht für die Verwendung in der Produktion vorgesehen.

Beispielinhalt

Dieses Beispiel besteht aus zwei .NET Core-Konsolenanwendungen.

  • Wrapper: Integriert das neueste NuGet-Paket für das PlayFab Game Server SDK (GSDK) in Ihren Spieleserver. Diese Wrapperanwendung ist nicht für die Verwendung in der Produktion vorgesehen.
  • Fakegame – ein einfacher Spielserver, der keine Kenntnisse über GSDK hat. Es ist wie ein typischer Spielserver, den Sie vor der Verwendung von PlayFab Multiplayer-Servern haben würden. Es startet das ASP.NET Core Webserver-Kestrel, das an TCP-Port 80 lauscht. Es soll einen Spielserver simulieren, der über keinerlei GSDK-Kenntnisse verfügt. Sie können es verwenden, wenn Sie keinen eigenen Spielserver haben. Es gibt zwei GET-Routen, die wir verwenden können: /hello zum Abrufen einer einfachen Antwort und /hello/terminate, die den Server beenden können.

Voraussetzungen

Notiz

Um die PlayFab Multiplayer-Server verwenden und anzeigen zu können, müssen Sie das Feature über Game Manager aktivieren. Anweisungen finden Sie unter Aktivieren des PlayFab Server-Features.

Schritt für Schritt

Eine Live-exemplarische Vorgehensweise zum Erstellen dieses Beispiels finden Sie in unserer Präsentation von Microsoft Game Dev 2021 (ab ca. 2.52):

Abrufen und Erstellen der ausführbaren Wrapper-Datei

  • Abrufen des GSDK-Wrapperbeispiels mithilfe von Git-Standardmethoden oder Herunterladen als ZIP-Datei
  • Öffnen Sie die Eingabeaufforderung, und verwenden Sie den Befehl cd, um den Verzeichnispfad zum Speicherort der Wrapper.csproj-Datei zu ändern. Beispiel: cd C:/ReplaceWithYourFilePath/wrappingGsdk/wrapper
  • Führen Sie dann den folgenden .NET Core CLI-Befehl aus:
dotnet publish --self-contained -r win-x64 /p:PublishSingleFile=true /p:PublishTrimmed=true

Wenn der Wrapperbuild erfolgreich ist, wird die ausführbare Datei im veröffentlicht. \wrappingGsdk\wrapper\bin\Debug\netcoreapp3.1\win-x64\publish-Ordner, wie in der folgenden Abbildung dargestellt.

Veröffentlichungsort der ausführbaren Wrapperdatei

Erstellen einer Spielserverressource

Es gibt zwei Möglichkeiten, eine Spielserverressource zu erstellen.

Verwenden des Fakegame-Spieleservers mit dem Wrapper

Verwenden Sie die build.ps1, um beide Projekte (Wrapper und Fakegame) zu erstellen und zu packen. Dieses Skript erstellt einen Ordner mit einer .zip Datei, die die erforderlichen Dateien enthält.

  • Öffnen von PowerShell
  • Verwenden Sie den Befehl cd, um den Verzeichnispfad zum Speicherort des build.ps1 Skripts zu ändern. Beispiel: cd C:/ReplaceWithYourFilePath/wrappingGsdk/
  • Ausführen\build.ps1
  • Nachdem das Skript erfolgreich ausgeführt wurde, wechseln Sie zu .. Ordner \wrappingGsdk\drop\. Sie finden eine gameassets.zip-Datei , die den gefälschten Spielserver-Build, die ausführbare Wrapperdatei (im vorherigen Schritt) enthält, und andere erforderliche Dateien werden erstellt.

Verwenden eigener Spieleserverdateien mit dem Wrapper

Um Ihr Spielprojekt in der Auswertung zu verwenden, platzieren Sie den Wrapper und die ausführbare Datei Ihres Spielservers in demselben Ordner.

  • Befolgen Sie die Anweisungen unter Erstellen der ausführbaren Wrapperdatei.
  • Wechseln Sie zum Speicherort der Wrapperveröffentlichung unter .. \wrappingGsdk\wrapper\bin\Debug\netcoreapp3.1\win-x64\publish
  • Wechseln Sie in einem anderen Fenster zu Ihrem Spielserverbuild und zu den Dateien, die zum Ausführen Ihres Spieleserverbuilds erforderlich sind. Wenn Sie nicht sicher sind, welche Dateien benötigt werden, lesen Sie Ermitteln erforderlicher DLL-Dateien.
  • Kopieren Sie den Build des Gamerservers und alle erforderlichen Dateien in den Veröffentlichungsort des Wrappers.
  • Wählen Sie alle Dateien am Veröffentlichungsspeicherort des Wrappers aus.
  • Klicken Sie mit der rechten Maustaste auf alle Dateien, und wählen Sie dann An>komprimierte Dateien (ZIP)senden aus, um zip zu komprimieren. Wählen Sie nicht den Ordner zum Veröffentlichen des Wrappers aus, und fügen Sie sie der ZIP-Datei hinzu. Dies würde zu einer falschen Zuordnung führen.

Tipp

Befolgen Sie zur Überprüfung die Anweisungen unter Verwenden des Fakegame-Spielservers mit dem Wrapper , um die gameassets.zip zu erstellen und als Referenz zu verwenden.

Erstellen und Hochladen eines Linux-Containerimages (nur für Linux-Server)

Zum Erstellen eines Linux-Containerimages benötigen Sie ein Dockerfile. Ein Dockerfile ist eine Textdatei ohne Erweiterung und enthält alle Befehle, die zum Erstellen eines bestimmten Containerimages erforderlich sind. In diesem Beispiel wurde diese Datei bereits für Sie erstellt. Sie müssen nur das Containerimage erstellen und ausführen.

Wenn Sie Ihr Windows-Entwicklungsgerät verwenden möchten, müssen Sie Windows-Subsystem für Linux (WSL) installieren. Anweisungen finden Sie unten. Weitere Informationen finden Sie unter Unterschiede zwischen Windows- und Linux-Containerimages.

  1. Einrichten Ihres Windows-Entwicklungsgeräts (optional)
  2. Abrufen der Anmeldeinformationen für Die PlayFab-Containerregistrierung
  3. Vorhandenes Dockerfile verwenden/eigene Dockerfile erstellen Dieser Schritt unterscheidet sich je nachdem, ob Sie FakeGame oder Ihren eigenen Spieleserver verwenden.
    • Wenn Sie FakeGame verwenden, überprüfen Sie, ob Sie über die Dockerfile-Datei verfügen.
    • Wenn Sie Ihr Spiel verwenden oder eine Dockerfile-Datei erstellen müssen, finden Sie weitere Informationen unter Erstellen Ihrer Dockerfile-Datei. Sie können das Dockerfile für FakeGame als Ausgangspunkt verwenden.
  4. Öffnen Sie Ihr Linux-Terminal mit installiertem Docker, z. B. Ubuntu. Ersetzen Sie die Werte für die VARIABLEN TAG und ACR durch Ihre Werte. Führen Sie dann die folgenden Befehle aus.
TAG="0.1"
ACR="customer5555555.azurecr.io"
docker login ${ACR}

Tipp

Um zu überprüfen, ob die Variablen ACR und TAG ordnungsgemäß definiert sind, führen Sie echo $ACR und echo $TAG aus.

  1. Geben Sie Ihren Benutzernamen und Ihr Kennwort ein, die Sie aus dem vorherigen Schritt erhalten haben.
  2. Erstellen Sie das Linux-Containerimage, und laden Sie es hoch.

Führen Sie die folgenden Befehle aus, um das Dockerfile zu erstellen und hochzuladen. Am Ende des Docker-Buildbefehls befindet sich ein ".". Sie müssen sich im selben Ordner/Verzeichnis wie die Dockerfile-Datei befinden. Weitere Informationen finden Sie unter Erstellen und Hochladen eines Linux-Containerimages.

docker build -t ${ACR}/wrapper:${TAG} .
docker push ${ACR}/wrapper:${TAG}

Bereitstellen eines Builds mithilfe von Game Manager oder der API

Der Bereitstellungsbuildprozess ist für Windows- und Linux-Spieleserver ähnlich.

Bereitstellen von Windows-Spielservern

Die Schritte ähneln dem C#-Beispiel für Windows Runner. Führen Sie diese Schritte mit den unten aufgeführten Unterschieden aus.

Wenn Sie dies lieber lokal testen möchten, finden Sie weitere Informationen unter Lokales Debuggen von Spielservern und Integration in PlayFab.

Spezifische Einstellungen für dieses Beispiel

  • Startbefehl:
    • Verwenden von C:\Assets\wrapper.exe -g C:\Assets\fakegame.exe arg1 arg2
    • Ersetzen Sie fakegame.exe durch den Namen der ausführbaren Datei Ihres Spielservers, wenn Sie ihren Spieleserver-Build verwenden.
  • Netzwerkkonfiguration: Name: Gameport, Port: 80, Protokoll: TCP
  • Assets: Wenn Sie FakeGame verwenden, laden Sie gameassets.zip als Medienobjekt hoch.

Bereitstellen von Linux-Spielservern

Führen Sie die folgenden allgemeinen Schritte aus, um die Bereitstellung auszuführen.

Spezifische Einstellungen für dieses Beispiel

  • Wählen Sie den container aus, den Sie hochgeladen haben.
  • Netzwerkkonfiguration: Name: Gameport, Port: 80, Protokoll: TCP
  • Keine Notwendigkeit, Ressourcen hochzuladen und Startbefehl festzulegen

Notiz

Während der Zuordnung bei Verwendung der RequestMultiplayerServer-API unterscheidet sich der Port, mit dem Sie eine Verbindung herstellen, von 80. Dies liegt daran, dass der PlayFab Multiplayer Server-Dienst eine Zuordnung zwischen den Azure Load Balancer (die Ihre Ports für das öffentliche Internet verfügbar macht) zu den Spielservern erstellt, die auf dem Azure-Virtual Machines ausgeführt werden.

Ausführen des Wrappers mithilfe von LocalMultiplayerAgent

Die Verwendung von LocalMultiplayerAgent wird dringend empfohlen, wenn Sie die GSDK-Integration auf Ihren benutzerdefinierten Spielservern testen möchten.

Wenn Sie LocalMultiplayerAgent mit Windows-Containern verwenden, müssen Sie MultiplayerSettings.json Datei ordnungsgemäß konfigurieren. Unten finden Sie ein Beispiel. Achten Sie besonders auf die Werte von LocalFilePath und StartGameCommand. Vergessen Sie nicht, fakegame.exe durch den Namen der ausführbaren Datei Ihres Spielservers zu ersetzen.

"AssetDetails": [
    {
        "MountPath": "C:\\Assets",
        "SasTokens": null,
        "LocalFilePath": "C:\\projects\\gsdkSamples\\wrappingGsdk\\drop\\gameassets.zip"
    }
],
"StartGameCommand": "C:\\Assets\\wrapper.exe -g C:\\Assets\\fakegame.exe",

// if you are using fakegameserver you should also configure port mapping for port 80
"PortMappingsList": [
            [
                {
                    "NodePort": 56100,
                    "GamePort": {
                        "Name": "gameport",
                        "Number": 80,
                        "Protocol": "TCP"
                    }
                }
            ]
        ]

Sie können jetzt mit LocalMultiplayerAgent testen. Wenn Sie es richtig konfiguriert haben, können Sie, sobald LocalMultiplayerAgent Ihren Spielserver startet, über curl unter http://localhost:56100/Helloeine Verbindung mit diesem herstellen.

Herstellen einer Verbindung mit einem Game Server auf MPS

Um eine Verbindung mit einem Spieleserver auf MPS herzustellen, ist es wichtig, die entsprechende Portnummer zu bestimmen. Diese Anforderung ergibt sich aus der Konfiguration, bei der mehrere virtuelle Computer, auf denen möglicherweise zahlreiche Spieleserverinstanzen ausgeführt werden, hinter einem Lastenausgleich verwaltet werden. In einem solchen Setup kann ein einzelner öffentlicher IP-Port verschiedenen Ports auf diesen virtuellen Computern entsprechen, die jeweils einem unterschiedlichen Spielserver instance zugeordnet sind.

Verwenden des Game Managers

Sie können die Game Manager-Benutzeroberfläche verwenden, um einen Spielserver zuzuweisen und eine Verbindung mit diesem herzustellen.

  1. Melden Sie sich beim Game Manager an.
  2. Wechseln Sie zur Seite Multiplayer => Server, und wählen Sie Ihren Build aus.
  3. Wechseln Sie zur Seite Server, und klicken Sie auf die Schaltfläche "Server anfordern".
  4. Notieren Sie sich auf der nächsten Seite die öffentliche IPv4-Adresse und den Port.
  5. Verwenden Sie curl, um eine Verbindung unter http://[IPV4Address]:[Ports-Num>]/Hello herzustellen."

MpS-Zuweisungsbeispiel verwenden

Hier erfahren Sie, wie Sie das MPS-Zuweisungsbeispiel verwenden können, um einen Spielserver zuzuweisen und eine Verbindung mit diesem herzustellen.

  1. Kompilieren Sie das MPS-Zuweisungsbeispiel, und führen Sie es aus.
  2. Wenden Sie den Befehl "ListBuildSummaries" an, um die verfügbaren Builds und die entsprechenden Build-IDs anzuzeigen.
  3. Rufen Sie "RequestMultiplayerServer" auf, um eine Anforderung für einen Spielserver instance zu initiieren.
  4. Geben Sie die ausgewählte Build-ID in den Befehl "ListMultiplayerServers" ein, um eine Liste der verfügbaren Server zu generieren.
  5. Wählen Sie einen aktiven Spielserver instance aus, und verwenden Sie dann "GetMultiplayerServerDetails" mit den Build- und Sitzungs-IDs, die Sie aus den vorherigen Schritten erhalten haben.
  6. Notieren Sie sich die in der Antwort angezeigten IPV4Address und Ports-Num>.
  7. Verwenden Sie curl, um eine Verbindung unter http://[IPV4Address]:[Ports-Num>]/Hello herzustellen.

Weitere Informationen