> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Exemple Wrapper

> Utilisez l'exemple Wrapper (wrappingGsdk) pour exécuter un serveur de jeu Windows ou Linux existant sur PlayFab Multiplayer Servers sans ajouter d'appels au GSDK dans votre binaire.

L'exemple Wrapper, également appelé wrappingGsdk, encapsule un jeu existant afin qu'il puisse être utilisé dans le déploiement de builds pour des serveurs de jeu utilisant le **système d'exploitation Windows** et **Linux**.

Grâce à l'application wrapper, vous pouvez également utiliser votre build de serveur de jeu sur PlayFab Multiplayer Servers.

<Info>
  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.
</Info>

## 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

* [SDK .NET Core 3.1 x64](https://dotnet.microsoft.com/download)

<Note>
  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](/fr-CA/services/playfab/multiplayer/servers/enable-playfab-multiplayer-servers).
</Note>

## 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) :

<iframe src="https://www.youtube.com/embed/kj2TcMlvWgk" width="100%" height="400" allowFullScreen frameBorder="0" />

<a id="acquire-and-build-wrapper-executable" />

## Obtenir et générer l'exécutable Wrapper

* Obtenez l'[exemple de wrapper GSDK](https://github.com/PlayFab/MpsSamples/tree/master/wrappingGsdk) à 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 :

```
dotnet publish --self-contained -r win-x64 /p:PublishSingleFile=true /p:PublishTrimmed=true
```

Lorsque la génération du wrapper réussit, l'exécutable est publié dans le dossier ..\wrappingGsdk\wrapper\bin\Debug\netcoreapp3.1\win-x64\publish, comme illustré dans l'image ci-dessous.

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/create-your-first-server/wrapper-exe-location.PNG?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=1667c376bbaa6670b270d5264513278c" alt="Emplacement de publication de l'exécutable wrapper" width="1615" height="365" data-path="images/playfab/multiplayer/servers/create-your-first-server/wrapper-exe-location.PNG" />

## Créer un actif de serveur de jeu

Il existe deux façons de créer un actif de serveur de jeu.

<a id="use-fakegame-game-server-with-the-wrapper" />

### 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](#acquire-and-build-wrapper-executable)
* 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](/fr-CA/services/playfab/multiplayer/servers/determining-required-dlls)
* 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.

<Tip>
  Pour effectuer une vérification croisée, suivez les instructions de [Utiliser le serveur de jeu Fakegame avec le wrapper](#use-fakegame-game-server-with-the-wrapper) pour générer gameassets.zip et l'utiliser comme référence.
</Tip>

## 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](/fr-CA/services/playfab/multiplayer/servers/deploying-linux-based-builds#windows-and-linux-container-image-differences).

1. [Configurer votre appareil de développement Windows](/fr-CA/services/playfab/multiplayer/servers/deploying-linux-based-builds#set-up-your-windows-development-device) (facultatif)
2. [Obtenir les informations d'identification de connexion à votre registre de conteneurs PlayFab](/fr-CA/services/playfab/multiplayer/servers/deploying-linux-based-builds#get-your-playfab-container-registry-sign-in-credentials)
3. 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](https://github.com/PlayFab/MpsSamples/blob/master/wrappingGsdk/Dockerfile)
   * Si vous utilisez votre jeu ou devez créer un Dockerfile, consultez [Créer votre Dockerfile](/fr-CA/services/playfab/multiplayer/servers/deploying-linux-based-builds#create-a-dockerfile). Vous pouvez utiliser le [Dockerfile](https://github.com/PlayFab/MpsSamples/blob/master/wrappingGsdk/Dockerfile) de FakeGame comme point de départ.
4. 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.

```docker theme={null}
TAG="0.1"
ACR="customer5555555.azurecr.io"
docker login ${ACR}
```

<Tip>
  Pour vérifier que les variables ACR et TAG sont correctement définies, exécutez **echo $ACR__ et __echo $TAG**.
</Tip>

5. Saisissez le nom d'utilisateur et le mot de passe obtenus à l'étape précédente.
6. Générez et téléversez l'image de conteneur Linux.

Exécutez les commandes ci-dessous pour générer et téléverser le Dockerfile. La commande **docker build** se termine par un ".". Vous devez vous trouver dans le même dossier/répertoire que le Dockerfile. Pour plus de détails, consultez [Générer et téléverser l'image de conteneur Linux](/fr-CA/services/playfab/multiplayer/servers/deploying-linux-based-builds#build-and-upload-linux-container-image).

```docker theme={null}
docker build -t ${ACR}/wrapper:${TAG} .
docker push ${ACR}/wrapper:${TAG}
```

## 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](/fr-CA/services/playfab/multiplayer/servers/quickstart-for-multiplayer-servers-game-manager)
* [Utiliser PowerShell/l'API pour déployer et configurer des serveurs](/fr-CA/services/playfab/multiplayer/servers/quickstart-for-multiplayer-servers-api-powershell)

Si vous préférez effectuer les tests localement, consultez [Débogage local des serveurs de jeu et intégration à PlayFab](/fr-CA/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab).

**Paramètres propres à cet exemple**

* 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](/fr-CA/services/playfab/multiplayer/servers/deploy-using-game-manager)
* [Utiliser PowerShell/l'API pour déployer et configurer des serveurs](/fr-CA/services/playfab/multiplayer/servers/deploy-using-powershell-api)

**Paramètres propres à cet exemple**

* 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**

<Note>
  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.
</Note>

## 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.

```json theme={null}
"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"
                    }
                }
            ]
        ]
```

Vous êtes maintenant prêt à effectuer des tests avec LocalMultiplayerAgent. Si la configuration est correcte, dès que LocalMultiplayerAgent lance votre serveur de jeu, vous pouvez vous y connecter avec curl à l'adresse **[http://localhost:56100/Hello](http://localhost:56100/Hello)**.

## 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.

1. Connectez-vous à Game Manager
2. Accédez à la page Multiplayer => Servers, puis sélectionnez votre build
3. Accédez à la page Servers, puis cliquez sur le bouton "Request server".
4. Sur la page suivante, notez l'**adresse IPv4** publique et le **Port**.
5. Utilisez curl pour vous connecter à **http\://\[IPV4Address]:\[Ports->Num]/Hello**."

### Utiliser l'exemple MPS Allocator

Voici comment utiliser l'[exemple MPS Allocator](/fr-CA/services/playfab/multiplayer/servers/mps-allocator-sample) pour allouer un serveur de jeu et établir une connexion avec celui-ci.

1. Compilez et exécutez l'exemple MPS Allocator.
2. Utilisez la commande "ListBuildSummaries" pour afficher les builds disponibles et leurs ID de build correspondants.
3. Appelez "RequestMultiplayerServer" pour lancer une demande d'instance de serveur de jeu.
4. Saisissez l'ID de build sélectionné dans la commande "ListMultiplayerServers" pour générer la liste des serveurs disponibles.
5. 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.
6. Notez les valeurs **IPV4Address** et **Ports->Num** affichées dans la réponse.
7. Utilisez curl pour vous connecter à **http\://\[IPV4Address]:\[Ports->Num]/Hello**.

## Voir aussi

* [Créer votre premier serveur](/fr-CA/services/playfab/multiplayer/servers/create-your-first-server)
* [Ressources et exemples](/fr-CA/services/playfab/multiplayer/servers/server-samples-resources)
* [SDK PlayFab Multiplayer Server](/fr-CA/services/playfab/multiplayer/servers/server-sdks/overview)
* [Référence de l'API](xref:titleid.playfabapi.com.multiplayer.multiplayerserver)


## Related topics

- [Créer votre premier serveur](/fr-CA/services/playfab/multiplayer/servers/create-your-first-server.md)
- [Déployer des builds à l'aide de Game Manager](/fr-CA/services/playfab/multiplayer/servers/deploy-using-game-manager.md)
- [Déployer des builds à l'aide de PowerShell/de l'API](/fr-CA/services/playfab/multiplayer/servers/deploy-using-powershell-api.md)
- [Créer et déployer des builds Linux](/fr-CA/services/playfab/multiplayer/servers/deploying-linux-based-builds.md)
- [Wrappers d'API C# Unity pour le GDK](/fr-CA/build/gdk-and-engines/unity/unity-api-wrappers.md)
