Un wrapper est une solution de contournement qui traite les flux de sortie et d’erreur standard pour appeler les méthodes du GSDK; il n’est pas destiné à une utilisation en production.
Contenu de l’exemple
Cet exemple se compose de deux applications console .NET Core.- Wrapper—intègre le dernier package NuGet du SDK du serveur de jeu PlayFab (GSDK) à votre serveur de jeu. Cette application wrapper n’est pas destinée à une utilisation en production
- Fakegame—un serveur de jeu de base qui n’a aucune connaissance du GSDK. Il ressemble au serveur de jeu type dont vous disposeriez avant d’utiliser PlayFab Multiplayer Servers. Il démarre le serveur web ASP.NET Core Kestrel, qui écoute sur le port TCP 80. Il est conçu pour simuler un serveur de jeu qui n’a absolument aucune connaissance du GSDK. Vous pouvez l’utiliser si vous ne disposez pas de votre propre serveur de jeu. Il offre deux routes GET utilisables : /hello pour obtenir une réponse simple et /hello/terminate pour arrêter le serveur.
Exigences
Pour utiliser et afficher PlayFab Multiplayer Servers, vous devez activer la fonctionnalité dans Game Manager. Pour obtenir des instructions, consultez Activer la fonctionnalité PlayFab Server.
Procédure pas à pas
Pour une démonstration en direct de la génération de cet exemple, consultez notre présentation lors de Microsoft Game Dev 2021 (à partir d’environ 2.52) :Obtenir et générer l’exécutable Wrapper
- Obtenez l’exemple de wrapper GSDK à l’aide des méthodes Git standard ou en le téléchargeant sous forme de fichier zip
- Ouvrez l’invite de commandes et utilisez la commande cd pour accéder à l’emplacement du fichier wrapper.csproj. Exemple : cd C:/ReplaceWithYourFilePath/wrappingGsdk/wrapper
- Exécutez ensuite la commande CLI .NET Core suivante :
Créer un actif de serveur de jeu
Il existe deux façons de créer un actif de serveur de jeu.Utiliser le serveur de jeu Fakegame avec le wrapper
Utilisez build.ps1 pour générer et empaqueter les deux projets (wrapper et fakegame). Ce script crée un dossier drop contenant un fichier .zip avec les fichiers requis.- Ouvrez PowerShell
- Utilisez la commande cd pour accéder à l’emplacement du script build.ps1. Exemple : cd C:/ReplaceWithYourFilePath/wrappingGsdk/
- Exécutez \build.ps1
- Une fois le script exécuté avec succès, accédez au dossier ..\wrappingGsdk\drop. Vous y trouverez un fichier gameassets.zip contenant la build du faux serveur de jeu, l’exécutable wrapper (généré à l’étape précédente) et les autres fichiers requis.
Utiliser vos propres fichiers de serveur de jeu avec le wrapper
Pour utiliser votre projet de jeu dans l’évaluation, placez le wrapper et l’exécutable de votre serveur de jeu dans le même dossier.- Suivez les instructions de Générer l’exécutable wrapper
- Accédez à l’emplacement de publication du wrapper : ..\wrappingGsdk\wrapper\bin\Debug\netcoreapp3.1\win-x64\publish
- Dans une autre fenêtre, accédez à la build de votre serveur de jeu et aux fichiers nécessaires à son exécution. Si vous ne savez pas quels fichiers sont nécessaires, consultez Déterminer les fichiers DLL nécessaires
- Copiez la build du serveur de jeu et tous les fichiers requis dans l’emplacement de publication du wrapper
- Sélectionnez tous les fichiers de l’emplacement de publication du wrapper
- Avec tous les fichiers sélectionnés, cliquez avec le bouton droit, puis sélectionnez Send to > Compressed (zip) files to zip. Ne sélectionnez pas le dossier de publication du wrapper pour l’ajouter au zip, car cela entraînerait un mappage incorrect.
Créer et téléverser une image de conteneur Linux (serveurs Linux uniquement)
Pour créer une image de conteneur Linux, vous avez besoin d’un Dockerfile. Un Dockerfile est un fichier texte sans extension qui contient toutes les commandes nécessaires pour générer une image de conteneur donnée. Dans cet exemple, ce fichier est déjà créé pour vous. Il vous suffit de générer l’image de conteneur et de l’exécuter. Si vous souhaitez utiliser votre appareil de développement Windows, vous devez installer le Sous-système Windows pour Linux (WSL). Les instructions sont fournies ci-dessous. Pour plus d’informations, consultez Différences entre les images de conteneur Windows et Linux.- Configurer votre appareil de développement Windows (facultatif)
- Obtenir les informations d’identification de connexion à votre registre de conteneurs PlayFab
- Utiliser un Dockerfile existant ou créer le vôtre
Cette étape diffère selon que vous utilisez FakeGame ou votre propre serveur de jeu.
- Si vous utilisez FakeGame, vérifiez que vous disposez du Dockerfile
- Si vous utilisez votre jeu ou devez créer un Dockerfile, consultez Créer votre Dockerfile. Vous pouvez utiliser le Dockerfile de FakeGame comme point de départ.
- Ouvrez votre terminal Linux sur lequel Docker est installé, par exemple Ubuntu. Remplacez les valeurs des variables TAG et ACR par vos propres valeurs. Exécutez ensuite les commandes ci-dessous.
- Saisissez le nom d’utilisateur et le mot de passe obtenus à l’étape précédente.
- Générez et téléversez l’image de conteneur Linux.
Déployer une build à l’aide de Game Manager ou de l’API
Le processus de déploiement de build est similaire pour les serveurs de jeu Windows et Linux.Déployer des serveurs de jeu Windows
Les étapes sont similaires à celles de l’exemple Windows Runner C#. Suivez ces étapes en tenant compte des différences répertoriées ci-dessous.- Utiliser Game Manager pour déployer et configurer des serveurs
- Utiliser PowerShell/l’API pour déployer et configurer des serveurs
- Commande de démarrage :
- Utilisez C:\Assets\wrapper.exe -g C:\Assets\fakegame.exe arg1 arg2
- Remplacez fakegame.exe par le nom de l’exécutable de votre serveur de jeu, si vous utilisez votre propre build de serveur de jeu
- Configuration réseau : Name : gameport, Port : 80, Protocol : TCP
- Actifs : si vous utilisez FakeGame, téléversez gameassets.zip en tant qu’actif.
Déployer des serveurs de jeu Linux
Suivez les étapes générales ci-dessous pour effectuer le déploiement.- Utiliser Game Manager pour déployer et configurer des serveurs
- Utiliser PowerShell/l’API pour déployer et configurer des serveurs
- Sélectionnez le conteneur que vous avez téléversé
- Configuration réseau : Name : gameport, Port : 80, Protocol : TCP
- Inutile de téléverser des actifs et de définir Start Command
Lors de l’allocation à l’aide de l’API RequestMultiplayerServer, le port auquel vous vous connectez sera différent de 80. En effet, le service PlayFab Multiplayer Server crée un mappage entre l’équilibreur de charge Azure (qui expose vos ports sur l’Internet public) et les serveurs de jeu qui s’exécutent sur les machines virtuelles Azure.
Exécution du wrapper à l’aide de LocalMultiplayerAgent
L’utilisation de LocalMultiplayerAgent est fortement recommandée si vous souhaitez tester l’intégration du GSDK sur vos serveurs de jeu personnalisés. Si vous utilisez LocalMultiplayerAgent avec des conteneurs Windows, vous devez configurer correctement le fichier MultiplayerSettings.json. Vous trouverez un exemple ci-dessous; prêtez une attention particulière aux valeurs de LocalFilePath et de StartGameCommand. N’oubliez pas de remplacer fakegame.exe par le nom de l’exécutable de votre serveur de jeu.Se connecter à un serveur de jeu sur MPS
Pour établir une connexion avec un serveur de jeu sur MPS, il est essentiel de déterminer le numéro de port approprié. Cette exigence découle de la configuration dans laquelle plusieurs machines virtuelles, chacune pouvant exécuter de nombreuses instances de serveur de jeu, sont gérées derrière un équilibreur de charge. Dans une telle configuration, un même port IP public peut correspondre à différents ports sur ces machines virtuelles, chacun étant associé à une instance de serveur de jeu distincte.Utiliser Game Manager
Vous pouvez utiliser l’interface utilisateur de Game Manager pour allouer un serveur de jeu et établir une connexion avec celui-ci.- Connectez-vous à Game Manager
- Accédez à la page Multiplayer => Servers, puis sélectionnez votre build
- Accédez à la page Servers, puis cliquez sur le bouton “Request server”.
- Sur la page suivante, notez l’adresse IPv4 publique et le Port.
- Utilisez curl pour vous connecter à http://[IPV4Address]:[Ports->Num]/Hello.”
Utiliser l’exemple MPS Allocator
Voici comment utiliser l’exemple MPS Allocator pour allouer un serveur de jeu et établir une connexion avec celui-ci.- Compilez et exécutez l’exemple MPS Allocator.
- Utilisez la commande “ListBuildSummaries” pour afficher les builds disponibles et leurs ID de build correspondants.
- Appelez “RequestMultiplayerServer” pour lancer une demande d’instance de serveur de jeu.
- Saisissez l’ID de build sélectionné dans la commande “ListMultiplayerServers” pour générer la liste des serveurs disponibles.
- Choisissez une instance de serveur de jeu active, puis utilisez “GetMultiplayerServerDetails” avec les ID de build et de session obtenus aux étapes précédentes.
- Notez les valeurs IPV4Address et Ports->Num affichées dans la réponse.
- Utilisez curl pour vous connecter à http://[IPV4Address]:[Ports->Num]/Hello.
