Exportation pour les serveurs dédiés

Si vous voulez exécuter un serveur dédié à votre projet sur une machine qui n'a pas de GPU ou de serveur d'affichage disponible, vous devrez utiliser une version serveur de Godot.

Support de plate-forme

Si votre projet utilise le C#, vous devrez utiliser un binaire serveur compatible Mono.

Binaires "Headless" contre binaires "server"

La page de téléchargement du serveur propose deux types de binaires avec plusieurs différences.

  • Server : Utilisez celui-ci pour faire fonctionner des serveurs dédiés. Il ne contient pas la fonctionnalité éditeur, et est donc plus petit et plus optimisé.
  • Headless : Ce binaire contient la fonctionnalité éditeur et est destiné à être utilisé pour l'exportation de projets. Ce binaire peut être utilisé pour faire fonctionner des serveurs dédiés, mais il n'est pas recommandé car il est plus gros et moins optimisé.

Exportation d'un fichier PCK

Il y a deux façons d'exporter un projet pour un serveur :

  • Créez un préréglage d'exportation Linux/X11, définissez un modèle d'exportation de version personnalisé qui pointe vers le binaire du serveur, puis exportez le projet comme d'habitude.
  • Exportez uniquement un fichier PCK, de préférence à partir d'un préréglage d'exportation Linux/X11.

Les deux méthodes devraient donner un résultat identique. Le texte ci-dessous décrit l'approche du fichier PCK.

Une fois que vous avez téléchargé un binaire de serveur, vous devez exporter un fichier PCK contenant les données de votre projet. Après avoir créé le préréglage d'exportation, cliquez sur Export PCK/ZIP en bas de la boîte de dialogue Exporter puis choisissez un chemin de destination. La case à cocher Export With Debug dans la boîte de dialogue des fichiers n'a aucune incidence sur le fichier PCK final, vous pouvez donc le laisser tel quel.

Voir Exporter des projets pour plus d'informations.

Note

Si vous exportez le projet à partir d'un éditeur headless, appelez l'éditeur headless avec l'option --export-pack dans le dossier du projet pour n'exporter qu'un fichier PCK.

Note

Le fichier PCK inclura des ressources dont le serveur n'a normalement pas besoin, telles que des textures et des sons. Cela signifie que le fichier PCK sera plus volumineux qu'il ne pourrait l'être. La prise en charge de l'extraction des ressources non nécessaires d'un PCK pour l'utilisation du serveur est prévue dans une prochaine version de Godot.

Le bon côté des choses est que cela permet d'utiliser le même fichier PCK à la fois pour un client et pour un serveur dédié. Cela peut être utile si vous voulez expédier une seule archive qui peut être utilisée à la fois comme client et comme serveur dédié.

Préparation de la distribution du serveur

Après avoir téléchargé ou compilé un binaire de serveur, vous devez maintenant le placer dans le même dossier que le fichier PCK que vous avez exporté. Le binaire de serveur doit avoir le même nom que le PCK (sans l'extension). Cela permet à Godot de détecter et d'utiliser automatiquement le fichier PCK. Si vous voulez démarrer un serveur avec un PCK qui a un nom différent, vous pouvez spécifier le chemin d'accès au fichier PCK en utilisant l'argument de ligne de commande``--main-pack`` :

./godot-server --main-pack my_project.pck

Démarrage du serveur dédié

Si votre client et votre serveur font tous deux partie du même projet Godot, vous devrez ajouter un moyen de démarrer le serveur directement en utilisant un argument de ligne de commande. Cela peut être fait en ajoutant le bout de code suivant dans la méthode _ready() de votre scène principale (ou d'un singleton) :

if "--server" in OS.get_cmdline_args():
    # Run your server startup code here...
    # Using this check, you can start a dedicated server by running
    # a Godot binary (headless or not) with the `--server` command-line argument.
    pass

Vous pouvez également faire en sorte que le serveur dédié démarre toujours si un binaire sans tête ou un binaire de serveur est détecté :

# Note: Feature tags are case-sensitive! It's "Server", not "server".
if OS.has_feature("Server"):
    # Run your server startup code here...
    # Note that using this check may break unit testing scripts when
    # running them with headless or server binaries.
    pass

Si votre client et votre serveur sont des projets Godot distincts, votre serveur devrait très probablement être configuré de manière à ce que l'exécution de la scène principale lance automatiquement un serveur.

La suite

Sous Linux, pour faire redémarrer votre serveur dédié après un plantage ou un redémarrage du système, vous pouvez créer un service systemd. Cela vous permet également de consulter les logs du serveur de manière plus pratique, avec la rotation automatique des journaux fournie par systemd.

Si vous avez de l'expérience avec les conteneurs, vous pourriez aussi envisager d'emballer votre serveur dédié dans un conteneur Docker. De cette façon, il peut être utilisé plus facilement dans une configuration de mise à l'échelle automatique (ce qui n'entre pas dans le cadre de ce tutoriel).