Sauvegarder et charger une partie avec Save Game dans Unreal Engine
Tu arrêtes ton jeu, tu le relances, et ton score est revenu à 0. Quand le jeu s’arrête, toutes les variables s’effacent. À la fin de ce guide, tu sauras écrire des valeurs dans un fichier, les relire au lancement suivant, vérifier qu’un fichier existe et effacer une sauvegarde. Tout est vérifié sur la documentation officielle d’Epic Games.
Le principe : un objet SaveGame écrit dans un slot
Une sauvegarde est un objet de classe SaveGame : il garde des valeurs que le moteur sait écrire dans un fichier sur le disque. On ne le pose jamais dans le niveau. Tu crées un Blueprint de cette classe et tu y ajoutes les variables à garder, par exemple un score de type Integer.
Les grandes étapes
- Écrire : Create Save Game Object fabrique un objet vide de ta classe, tu remplis ses variables, puis Save Game to Slot l’écrit dans un fichier.
- Charger : Does Save Game Exist vérifie qu’un fichier existe, Load Game from Slot le lit, puis un Cast To vers ta classe donne accès à tes variables.
- Effacer : Delete Game in Slot supprime le fichier d’un slot, pour une nouvelle partie.
Le pas à pas complet, avec les captures de l’éditeur, des quiz et un mini-projet, est dans le chapitre « Données et sauvegardes » du cours.
L’ordre sur le fil blanc compte. Save Game to Slot écrit l’objet tel qu’il est à ce moment-là : si tu remplis l’objet après, le fichier garde la valeur de départ, 0. Toujours : créer, remplir, puis écrire. Create Save Game Object fabrique l’objet en mémoire mais n’écrit rien : sans Save Game to Slot, aucun fichier n’apparaît.
Sur PC, pendant que tu développes, chaque slot devient un fichier .sav dans le dossier Saved › SaveGames, à côté du dossier Content du projet.
Slot Name et User Index
- Slot Name : le nom de l’emplacement de sauvegarde, comme « Partie 1 » et « Partie 2 » dans un menu. Deux noms différents donnent deux fichiers séparés. Le même nom, c’est le même emplacement : l’ancienne valeur est remplacée.
- User Index : le numéro du joueur sur la plateforme. Certaines plateformes l’ignorent. Sur PC, en solo, mets 0 partout.
Pour relire une sauvegarde, il faut le même Slot Name et le même User Index. Si Does Save Game Exist répond toujours faux alors que tu as sauvé, compare les Slot Name : ils doivent être écrits exactement pareil partout.
Pourquoi un Cast au chargement
Le Cast est obligatoire : Load Game from Slot lit un fichier et rend une SaveGame de base, sans savoir ce qu’il y a dedans. Le Cast vérifie que c’est bien ta classe. Si le fichier n’existe pas (premier lancement, nom mal écrit), Load Game from Slot rend None : aucun objet, et le Cast échoue. C’est pour cela qu’on vérifie d’abord avec Does Save Game Exist.
Sauver au bon moment
Sauver écrit sur le disque, ce qui prend un peu de temps. Ne sauve jamais dans Event Tick, 60 fois par seconde. Sauve aux moments importants : un objet ramassé, un niveau fini, le menu pause.
Save Game to Slot fige le jeu un court instant pendant l’écriture. Async Save Game to Slot écrit en arrière-plan, sans à-coup : Epic le conseille en pleine partie.
Nouvelle partie : effacer la sauvegarde
Delete Game in Slot rend vrai si un fichier a vraiment été effacé. Faux peut vouloir dire qu’il n’y avait rien à effacer : demande d’abord Does Save Game Exist pour faire la différence.
Attention : effacer le fichier ne vide pas le Game Instance. Une variable qui y est rangée garde son nombre jusqu’à la fermeture du jeu, et la prochaine sauvegarde réécrirait l’ancien total. Il faut donc aussi remettre cette variable à 0.
Questions fréquentes
Pourquoi mes variables repartent-elles à 0 quand je relance le jeu ?
Une variable ne vit que tant que le jeu tourne. Pour la retrouver au lancement suivant, il faut l’écrire dans un fichier avec un objet SaveGame.
Où est mon fichier de sauvegarde ?
Pendant le développement sur PC, dans le dossier Saved › SaveGames du projet. Le Slot Name donne le nom du fichier. Pour y aller, fais un clic droit sur le dossier Content › Show in Explorer, puis remonte d’un dossier.
Pourquoi un Cast après Load Game from Slot, mais pas après Create Save Game Object ?
Pour Create Save Game Object, tu choisis la classe : le nœud la connaît. Load Game from Slot lit un fichier et rend une SaveGame de base. Le Cast vérifie que c’est bien ta classe.
Sources officielles
- Saving and Loading Your Game (documentation Epic)
- Create Save Game Object (documentation Epic)
- Save Game to Slot (documentation Epic)
- Load Game from Slot (documentation Epic)
- Does Save Game Exist (documentation Epic)
- Async Save Game to Slot (documentation Epic)
- Delete Game in Slot (documentation Epic)
- Casting Quick Start Guide (documentation Epic)
- Functions (documentation Epic)
- Gameplay Framework (documentation Epic)
À lire aussi : le Game Instance et le changement de niveau, Cast To et références Blueprint et Data Table et Struct.
Tu veux faire en sorte que ton jeu se souvienne de la partie, pas à pas dans un vrai projet ? Le cours propose des leçons courtes, des quiz et des mini-projets, à ton rythme.
Apprendre Unreal Engine 5 gratuitement