Sauvegarder ses données - Fichier rxdata
Dans le tutorial précédent, on a vu que la classe Game_Character_Custom garde en mémoire des données comme l'apparence du héros. Mais comment garder les données même après avoir quitté le jeu ?
1) Les scripts Scene_Save et Scene_Load
Ces deux scripts ont un parent commun : Scene_File. "Scene File" contient les fenêtres, la mise à jour, l'interactivité ...etc. bref comme une scène habituel. Quand le joueur va décider de charger ou de sauver sa partie, toutes la différences sera là car cela va définir :
- Si on charge les données donc dans "Scene_Load"
- Si on sauvegarde les données "Scene_Save"
Mais où et que sauvegarde t-on ?
Evidemment, on sauvegarde les données dans un fichier, plus précisément dans un fichier rxdata. Dit "données" dit principalement "objets". On sauvegarde des objets et principalement des variables globales "$game_system", "$game_switches" ...etc.
2) Sauvegarder/Charger nos objets dans Scene_Save et Scene_Load
Nous allons voir un module permettant de sauvegarder et charger nos objets : Marshal
- Dans Scene_Save , il suffit de mettre à la fin de la méthode "write_save_data", à la suite des Marshal :
Cela permet d'écrire dans le fichier "file" (qui est Save1.rxdata), l'objet "$game_character_custom". Ainsi, tout ses données seront sauvegardées
- Dans Scene_Load , de la même manière dans la méthode "read_save_data", vous mettez :
"$game_character_custom" va reprendre les données enregistrées dans le fichier "file"
3) Faire notre fichier rxdata et ordre des données
On a vu comment ajouter des codes dans des scripts de base, mais maintenant commment faire la même chose mais dans votre script ?
Dans nos exemples, nous allons avoir deux objets à écrire et lire :
- $game_chara
- $game_machin
- Pour écrire avec Marshal.dump, il faut savoir quel est le fichier où nous allons enregistrer les données. pour cela, utilisons "File.open" qui ouvrira un fichier mais le créera automatiquement ci celui n'existe pas (Voir cours sur le Ruby : Fichier)
Nous allons mettre nos objets :
- Pour lire les valeurs Marshal.load, il faut ouvrir le fichier "Fichier.rxdata" créé mais il faut vérifier préalablement s'il existe. Lire des données dans un fichier inexistant provoquera une erreur.
Pour le chargement , l'ordre à de l'importante ! Vous devez charger les objets dans le même ordre que vous avez sauvegardé.
Ceci est bon :
Ceci n'est pas bon :
on aura donc :
4) Des fonctions RGSS
qui remplacent Marshal Il existe deux fonctions fesant la même chose que Marshal :
- load_data
- save_data
a) load_data
Si le fichier existe (sinon faire la condition), on charge comme avec Marshal.load :
b) save_data
De la même manière que Marshal.dump, on sauvegarde l'objet dans un fichier :
c) Quelle différence avec Marshal.
En fait, elle peut charger/Sauver des fichiers depuis des archives encryptées, ce qui n'est pas le cas de Marshal.
Page vue 3816 fois | Auteur : Samarium

