Cycle de vie du SDK du serveur de jeu (GSDK) et du processus du serveur de jeu
Le cycle de vie des serveurs de jeu dans PlayFab Multiplayer Servers (MPS) est étroitement lié aux méthodes du GSDK appelées par votre serveur de jeu ainsi qu’à l’état du processus du serveur de jeu.Pour plus d’informations sur l’intégration de votre serveur de jeu au GSDK, consultez la documentation ici.
États d’un serveur de jeu
Voici les principaux états d’un serveur de jeu dans MPS :- Initializing : le serveur de jeu passe à cet état lorsqu’il appelle la méthode Start() du GSDK. Dans cet état, le serveur de jeu commence à charger les actifs nécessaires et le GSDK commence à envoyer des pulsations à MPS.
- StandingBy : le serveur de jeu passe à cet état lorsqu’il appelle la méthode ReadyForPlayers() du GSDK. Cette méthode doit être appelée une fois tous les actifs de jeu nécessaires chargés. En substance, cet état signale à MPS que le serveur de jeu est prêt à être alloué afin que les joueurs puissent s’y connecter.
- Active : le serveur de jeu passe à cet état lorsqu’il est alloué à l’aide de l’appel d’API RequestMultiplayerServer. Cet état implique que les joueurs peuvent se connecter au serveur de jeu et profiter du jeu. Un serveur de jeu actif ne sera pas arrêté lors d’éventuelles réductions d’échelle de la build (par exemple, si le nombre de serveurs standingBy est diminué).
- Terminating : il s’agit de l’état auquel passe le serveur de jeu lorsque l’API ShutDownMultiplayerServer est appelée. Cet état implique que le serveur de jeu est en cours d’arrêt et que les joueurs ne pourront plus s’y connecter.
- supprime le conteneur ou le processus qui exécute ce serveur de jeu
- collecte et charge les journaux du jeu afin qu’ils soient prêts pour l’archivage (plus d’informations)
- crée un nouveau conteneur ou processus pour remplacer celui qui s’est terminé
Un serveur de jeu à l’état Active ne peut jamais revenir à l’état StandingBy. Une fois l’état du jeu défini sur Active, la seule façon d’obtenir un nouveau serveur de jeu à l’état StandingBy est que le processus de votre serveur de jeu se termine.
Durée de vie maximale d’un serveur
Les machines virtuelles qui hébergent les serveurs MPS ont une durée de vie maximale de 10 jours; la durée de vie d’un serveur est donc limitée par celle-ci. La durée de vie d’un serveur est garantie d’au moins 23 heures : MPS n’alloue pas de serveurs sur une machine virtuelle dont la durée de vie restante est inférieure à 23 heures. Le GSDK déclenche l’événement OnMaintenanceScheduled 23 heures avant l’arrêt forcé de la machine virtuelle, afin que les serveurs qui s’y exécutent puissent s’arrêter proprement à temps. Si un serveur s’exécute encore sur la machine virtuelle lorsque celle-ci atteint sa durée de vie maximale de 10 jours, le serveur est arrêté de force et aucun journal n’est téléversé. Pour éviter que votre serveur soit arrêté de force, assurez-vous que ses sessions durent toujours moins de 23 heures, ou utilisez l’événement OnMaintenanceScheduled du GSDK pour arrêter proprement le serveur et migrer les joueurs vers un autre serveur avant l’échéance.Arrêt d’un processus de serveur de jeu
À la fin de la session de jeu, vous devez arrêter proprement le processus du serveur de jeu afin d’obtenir un nouveau serveur de jeu. Si le processus du serveur de jeu plante, MPS crée un nouveau processus de serveur de jeu pour remplacer celui qui a planté. Si le serveur de jeu est bloqué ou figé, vous pouvez toujours appeler l’API ShutDownMultiplayerServer pour arrêter manuellement le processus du serveur de jeu. Cette API ne doit être appelée que lorsque le processus du serveur de jeu ne peut pas s’arrêter de lui-même. Lorsque vous appelez cette API, le serveur de jeu passe aux états “Terminating” puis “Terminated”. En outre, tous les serveurs bloqués à l’état Terminating ou Terminated sont remplacés par le système au bout d’un certain temps.Le GSDK comporte un appel de méthode qui, s’il est utilisé, marque le serveur de jeu comme Unhealthy. Pour l’instant, MPS l’ignore, mais cela pourrait changer à l’avenir. Si cette fonctionnalité est essentielle pour vous, laissez une note dans le référentiel du GSDK ici.
