Sauvegarder les données avec des ressources personnalisées dans Godot ¶
Table des matières ¶
Introduction¶
Dans Godot, une ressource personnalisée permet de structurer et de sauvegarder facilement des informations complexes, comme l'état du joueur ou l'inventaire d'objets, sans les complications associées à l'utilisation de fichiers JSON ou d'autres formats de stockage brut. Cette approche rend les sauvegardes plus simples à gérer et à charger.
Dans cette leçon, nous allons :
- Créer une ressource de sauvegarde pour un joueur
- Comprendre comment ajouter des sous-ressources (comme un inventaire)
- Voir les avantages de l'utilisation des ressources personnalisées par rapport aux fichiers JSON.
Qu’est-ce qu’une ressource personnalisée ?¶
Une ressource personnalisée est un composant de Godot que vous pouvez créer pour stocker des données spécifiques. Par exemple, une texture est une ressource assignable à un Sprite. En utilisant des ressources personnalisées, vous pouvez créer des structures de données propres à votre jeu, avec toutes les propriétés et méthodes dont vous avez besoin, tout en profitant de l'intégration avec l'éditeur Godot.
Les ressources personnalisées se prêtent particulièrement bien aux fichiers de sauvegarde car :
- Elles permettent de sauvegarder des structures de données complexes.
- Elles facilitent le chargement sans conversion ni traitement supplémentaire.
- Elles permettent d'utiliser des sous-ressources, idéales pour un inventaire d'objets ou des statistiques complexes.
Préparation du projet¶
Nous allons juste créer un projet avec des contrôles de base pour illustrer les concepts de sauvegarde et de chargement. Vous pouvez suivre ces étapes dans un nouveau projet ou ajouter ces fonctionnalités à un projet existant.

La structure de la scène est la suivante :
-
Node2D(Main) : racine de la scène.HBoxContainer: conteneur horizontal.VBoxContainer: conteneur vertical.Button(LoadButton) : bouton pour charger les données.Button(SaveButton) : bouton pour sauvegarder les données.Button(ChangeButton) : bouton pour modifier la santé du joueur.Button(AddButton) : bouton pour ajouter un item à l’inventaire.
Panel: panneau pour afficher les informations.Label: étiquette pour afficher la santé du joueur.
-
Création d'un script
main.gdpour gérer les interactions avec les boutons - Ajout des signaux pour les boutons
pressedpour appeler les fonctions correspondantes.

Création d’une ressource de données pour le joueur¶
Pour gérer les données du joueur, comme sa santé, nous allons créer une ressource PlayerData :
- Définir la ressource de joueur :
- Dans un nouveau dossier nommé
resources, créez un script nomméplayerdata.gd. - Ce script va hériter de la classe
Resourcepour être reconnu comme une ressource dans Godot. - Utilisez
class_name PlayerDatapour que la ressource soit facilement accessible dans l'éditeur.
- Dans un nouveau dossier nommé
- Explication :
healthest une propriété exportée qui stocke la santé du joueur.- La méthode
change_healthpermet de modifier la santé du joueur en fonction d’une valeur passée en paramètre, ce qui simplifie les opérations de gain ou de perte de santé.
Configurer le fichier de sauvegarde¶
Pour enregistrer les données du joueur sur le disque, nous devons configurer un fichier de sauvegarde dans main.gd.
-
Définir les variables de chemin :
- La sauvegarde est placée dans le répertoire
user://, accessible à toutes les plateformes. - Le fichier sera nommé
player_save.tres.
- La sauvegarde est placée dans le répertoire
-
Initialiser les données du joueur :
- Instanciez
PlayerDataet assignez-la à une variableplayer_data. - Créez une fonction pour vérifier et, si besoin, créer le dossier de sauvegarde en utilisant
DirectoryAccess.
- Instanciez
- Sauvegarder et charger les données :
- Utilisez
ResourceSaverpour sauvegarder etResourceLoaderpour charger.
- Utilisez
-
Mise à jour de la santé :
- Créez une fonction qui modifie la santé du joueur, puis sauvegardez l'état après chaque changement.
Test de la sauvegarde et du chargement¶
Lors de la première exécution, cliquez sur le bouton Save pour enregistrer les données du joueur. Ensuite, cliquez sur le bouton Change pour modifier la santé du joueur. Enfin, cliquez sur le bouton Load pour charger les données sauvegardées.
Observations¶
- Dans votre explorateur de fichiers, vous devriez voir un dossier
savecontenant le fichierplayer_save.tres. - Ouvrez le fichier
player_save.tresavec un éditeur de texte pour voir les données sauvegardées.- On y constate les différentes propriétés de
PlayerData, comme la santé du joueur ainsi que les identifiants des ressources générées par Godot.
- On y constate les différentes propriétés de
Ajouter un inventaire en tant que sous-ressource¶
En ajoutant un inventaire comme sous-ressource dans PlayerData, chaque item sera sauvegardé automatiquement avec les données du joueur.
- Créer une ressource d’Item :
- Créez
item.gdpour définir un objetItemavec une propriétéitem_name.
- Créez
- Ajouter une propriété d’inventaire à
PlayerData:- Dans
playerdata.gd, ajoutez une propriété exportéeinventorycomme un tableau d'objetsItem.
- Dans
- Ajouter des objets via le script principal :
- Dans
main.gd, créez une méthode pour ajouter des éléments à l’inventaire, comme des pommes.
- Dans
-
Sauvegarde et restauration de l’inventaire :
- Lors de la sauvegarde, les sous-ressources contenues dans
inventoryseront automatiquement sauvegardées dans le fichier principal.
En utilisant cette approche, chaque item est enregistré avec toutes ses propriétés, et lors du chargement, l’inventaire est recréé sans manipulation supplémentaire.
- Lors de la sauvegarde, les sous-ressources contenues dans
Observations¶
- Après avoir ajouté des items à l’inventaire, sauvegardez et chargez les données pour voir comment les items sont stockés et restaurés.
- Ouvrez le fichier
player_save.trespour voir comment les items sont sauvegardés en tant que sous-ressources.
Voici le contenu de mon fichier PlayerSave.tres après avoir ajouté un item à l’inventaire :
Avantages des ressources personnalisées par rapport aux fichiers JSON¶
Les ressources personnalisées sont parfaitement intégrées dans Godot et permettent de simplifier considérablement le travail de sauvegarde et de chargement. Contrairement aux fichiers JSON qui nécessitent souvent une conversion et une gestion des erreurs pour être chargés correctement, les ressources personnalisées :
1 2 3 | |
Combinaison avec les fichiers JSON¶
Les fichiers JSON restent utiles pour stocker des données de référence ou des bases de données. Par exemple, un fichier JSON peut contenir la liste de tous les items du jeu. Lors de l’ajout d’un nouvel item dans l’inventaire, seul l’ID de l'item est utilisé pour récupérer les détails dans le fichier JSON.
Exemple d'utilisation :
1 2 | |
Cette approche hybride permet de conserver des données par défaut tout en offrant la flexibilité d’ajuster chaque item individuellement dans le jeu.
Conclusion¶
Les ressources personnalisées sont un outil puissant pour gérer les données sauvegardées dans Godot. Grâce à elles, vous pouvez facilement créer des fichiers de sauvegarde complexes et structurés. En les combinant avec des fichiers JSON pour la gestion des données par défaut, vous obtenez un système de sauvegarde et de gestion des données extrêmement flexible et efficace.
Ce guide vous a introduit aux ressources personnalisées et vous a montré comment les utiliser pour des sauvegardes efficaces. Ce système est particulièrement adapté aux jeux ayant besoin de gestion de données avancée, comme les RPG ou les jeux d'aventure, où chaque objet ou statistique peut évoluer indépendamment.
Annexe¶
item.gd :
playerdata.gd :
main.gd :
Références¶
- Documentation de Godot sur les ressources
- Save Files in Godot! (Custom Resource Tutorial)
- SECURE saving with Encryption in Godot 4!
- TSCN file format
