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

# Notions de base d'un serveur de jeu PlayFab

> Découvrez comment les serveurs de jeu multijoueurs PlayFab sont empaquetés sous forme de conteneurs Windows ou Linux, chargés en tant que ressources et intégrés au GSDK pour l'hébergement.

PlayFab exécute les serveurs de jeu en tant qu'applications conteneurisées. Ce tutoriel explique comment les serveurs de jeu sont empaquetés et intégrés aux systèmes PlayFab.

## Conteneurisation et empaquetage des serveurs de jeu

### Windows

Sous Windows, vous empaquetez généralement l'exécutable du serveur de jeu et les autres fichiers sous forme de fichiers zip, puis vous les chargez en tant que ressources de jeu. Les ressources sont combinées à une image de conteneur pour créer votre build de serveur de jeu. L'image de conteneur de base fournit les fichiers du système d'exploitation Windows et l'environnement d'exécution qui permet au jeu de s'exécuter. PlayFab fournit un ensemble d'images de conteneur managées à utiliser pour les builds Windows.
Lorsqu'une build Windows est créée via Game Manager ou des API telles que [CreateBuildWithManagedContainer()](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.createbuildwithmanagedcontainer), vous spécifiez les ressources et l'emplacement où elles doivent être montées dans le système de fichiers du conteneur. Vous spécifiez également la commande shell permettant de démarrer le jeu (`StartGameCommand`), qui peut ressembler à l'exemple ci-dessous.

```cmd theme={null}
C:\GameCoreApp\GameServer.exe -mode RETAIL
```

La `StartGameCommand` doit démarrer une application qui utilise le SDK du serveur de jeu PlayFab pour appeler `ReadyForPlayers` lorsqu'elle est prête à servir les clients de jeu. Le conteneur est arrêté et recyclé lorsque le processus de l'application se termine.

### Linux

Sous Linux, vous créez vous-même l'image de conteneur en empaquetant l'exécutable et les ressources du jeu. L'utilisation de ressources combinées à l'image de conteneur au moment de l'exécution est facultative.
Lorsqu'une build Linux est créée via Game Manager ou des API telles que [CreateBuildWithCustomContainer()](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.createbuildwithcustomcontainer), vous pouvez éventuellement spécifier les ressources et l'emplacement où elles doivent être montées dans le système de fichiers du conteneur. La spécification de la commande shell permettant de démarrer le jeu (`StartGameCommand`) est également facultative, car cette commande peut aussi être incluse dans l'image de conteneur.

<Note>
  Consultez [cette](/fr/services/playfab/multiplayer/servers/deploying-linux-based-builds) page pour plus d'informations sur la création d'images de conteneur Linux pour PlayFab Multiplayer Servers
</Note>

## Conteneurs managés pour Windows

PlayFab prend actuellement en charge un conteneur managé : l'image de conteneur PlayFab Multiplayer, basée sur Windows Server Core. Vous pouvez télécharger ce conteneur sur [Docker Hub](https://hub.docker.com/r/microsoft/playfab-multiplayer/) afin que votre environnement local corresponde à l'environnement d'exécution dans Azure.

Des outils de débogage vous permettent de parcourir pas à pas la machine à états du serveur multijoueur localement sur votre machine de développement.

Pour plus d'informations, consultez [Débogage local des serveurs de jeu et intégration à PlayFab](/fr/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab).

L'image suivante illustre les principaux flux de chargement d'un serveur de jeu et de combinaison de ce package avec un conteneur sélectionné.

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/tutorials/thunderhead-container-flow.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=ad4750d314c63445ba7af4b08e4b6d3c" alt="Flux de conteneur Thunderhead" width="739" height="428" data-path="images/playfab/multiplayer/servers/tutorials/thunderhead-container-flow.png" />

### Mises à jour des conteneurs managés

Les conteneurs managés constituent l'option d'intégration la plus simple pour les projets Windows et un bon point de départ si vous ne connaissez pas bien les conteneurs.

Une fonctionnalité clé des conteneurs managés est que PlayFab met automatiquement à jour l'image de base avec les correctifs de sécurité critiques afin de garantir un jeu fiable. En général, les mises à jour de sécurité ont lieu tous les mois et ne devraient pas entraîner d'interruption de service. Pour en savoir plus, consultez [Mises à jour des correctifs du système d'exploitation pour Windows](/fr/services/playfab/multiplayer/servers/os-patch-updates).

Pendant une mise à niveau, les sessions en attente (standing-by) qui sont naturellement recyclées sont remplacées par une image de conteneur mise à jour et le même package de serveur de jeu.

Lorsque PlayFab prévoit de mettre à jour une image de conteneur managée que vous utilisez, vous recevez des événements PlayStream.

## Intégration du SDK du serveur de jeu PlayFab

*En savoir plus :* [Intégration des serveurs de jeu au SDK du serveur de jeu PlayFab (GSDK)](/fr/services/playfab/multiplayer/servers/integrating-game-servers-with-gsdk)

Le SDK du serveur de jeu PlayFab (GSDK) est fourni dans plusieurs langages de programmation, tels que **C++**, **C#** et **Java**. Le GSDK connecte votre serveur de jeu à un agent local installé sur la machine virtuelle. Cet agent facilite les interactions clés du serveur avec l'infrastructure de contrôle PlayFab.

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/tutorials/thunderhead-gsdk.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=1a53d24933a02325bba1ec5b35cc7d22" alt="GSDK Thunderhead" width="580" height="138" data-path="images/playfab/multiplayer/servers/tutorials/thunderhead-gsdk.png" />

Lorsque votre serveur de jeu est initialisé, il est placé dans un *état de préparation*, PlayFab attendant que votre serveur de jeu appelle `ReadyForPlayers()`.

Une fois cette méthode appelée, le serveur de jeu passe à l'*état en attente* (standing by) et attend les demandes d'allocation envoyées par votre service de matchmaking à PlayFab via la méthode [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver).

L'image ci-dessous montre les états d'un serveur multijoueur PlayFab.

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/tutorials/thunderhead-game-server-states.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=5660725368a9559f65480d95e5a6faeb" alt="États d'un serveur de jeu Thunderhead" width="2792" height="1252" data-path="images/playfab/multiplayer/servers/tutorials/thunderhead-game-server-states.png" />

En apparence, l'appel de `ReadyForPlayers()` est la seule condition requise pour que votre serveur de jeu s'exécute et continue de s'exécuter. Toutefois, il existe plusieurs rappels et événements que vous pouvez souhaiter traiter afin d'offrir la meilleure expérience utilisateur possible.

## Scripts de serveur et variables d'environnement configurées par PlayFab

Dans certains cas, vous pouvez souhaiter que les serveurs de jeu exécutent un script CMD, PowerShell ou bash (un « programme d'amorçage »), qui lance ensuite l'exécutable compilé de votre serveur de jeu. Ce script peut configurer l'environnement interne du conteneur, transmettre des arguments de ligne de commande à l'exécutable ou effectuer toute autre tâche que vous ne souhaitez pas exécuter dans l'exécutable du serveur de jeu lui-même.

Par commodité, PlayFab configure certaines informations de build sous forme des variables d'environnement suivantes dans le conteneur. Elles sont également accessibles via le GSDK, mais l'utilisation des variables d'environnement peut être plus simple à partir d'un script.

* **PF\_TITLE\_ID** : ID de titre de l'hôte de session
* **PF\_BUILD\_ID** : ID de build de l'hôte de session
* **PF\_REGION** : région Azure de l'hôte de session
* **PUBLIC\_IPV4\_ADDRESS** : adresse IP publique de la machine virtuelle
* **PF\_VM\_ID** : identificateur unique de la machine virtuelle (par exemple 'xcloudeau4u4yyxj4xymu:AustraliaEast:1E03\_6f27ad88-9bc3-4ea3-8d16-75480aba4637:tvmps\_0e05c37e0bbdca298a09fb0d597bd666eb7c5fd0ebcf1fed4c52e608a39a7c9c\_d')
* **CERTIFICATE\_FOLDER** : dossier contenant les certificats du jeu
* **PF\_SERVER\_LOG\_DIRECTORY** : dossier contenant les journaux du jeu
* **PF\_SERVER\_INSTANCE\_NUMBER** : numéro d'instance du serveur. Le premier serveur de la machine virtuelle porte le numéro 0, le deuxième 1, le troisième 2, etc.


## Related topics

- [Termes de PlayFab Multiplayer Server](/fr/services/playfab/multiplayer/servers/server-terms.md)
- [Intégration du GSDK PlayFab dans Unity](/fr/services/playfab/multiplayer/servers/mps-unity.md)
- [Notions fondamentales de PlayFab](/fr/services/playfab/get-started/index.md)
- [Déboguer des serveurs de jeu basés sur un processus à l'aide de LocalMultiplayerAgent](/fr/services/playfab/multiplayer/servers/LocalMultiplayerAgent/run-process-based-gameserver.md)
- [Débogage local des serveurs de jeu et intégration à PlayFab](/fr/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab.md)
