====== Format des fichiers sauvegarde (.sol) ====== Donjon FI utilise un fichier ''.sol'' pour **sauvegarder** une partie en cours et la **rejouer** plus tard à l'identique. C'est aussi le format utilisé par le [[reference:debogage:mode_triche|mode triche]] pour reproduire automatiquement une séquence de commandes. ===== Structure générale ===== { "versionDonjon": "020100", "versionJeu": "1.5", "partie": [ "g:0.25796434437940996", "c:prendre clé", "r:2", "c:i", "c:x porte", "c:ouvrir la porte avec la clé", "c:entrer", "c:x trou", "d:porteRougeSeReferme", "c:manger baie", "g:0.7474848097328197", "c:x baie", "c:p baie" ], "declenchementsFuturs": [ "activationPiege:345" ], "scenario": "Le joueur se trouve dans le salon.\r\n\r\nSa description est \"Vos vêtements sont sales. …\"." } ===== Types d'étapes ===== Chaque entrée du tableau ''partie'' commence par un préfixe à une lettre : ^ Préfixe ^ Sens ^ Exemple ^ | ''c'' | **Commande** du joueur | ''c:prendre clé'' | | ''r'' | **Réponse** à une question du jeu (1, 2, oui…) | ''r:2'' | | ''g'' | **Graine** aléatoire courante (PRNG) | ''g:0.25796…'' | | ''d'' | **Déclenchement** d'une routine forcée (chrono) | ''d:porteRougeSeReferme'' | | ''d'' (avec arguments) | Routine programmée **avec arguments** — résolus au déclenchement | ''d:afficherScore avec 3'' | À la reprise (mode triche / replay), le moteur ré-applique chaque étape **dans l'ordre** : il pose la graine ''g'', envoie la commande ''c'' au commandeur, ou injecte la réponse ''r'' attendue, ou force le déclenchement ''d'' de la routine. ===== Routines programmées et sauvegardes ===== Quand une [[reference:temps:programmer_routine|routine programmée]] arrive à échéance, son déclenchement est enregistré comme une étape ''d:nomRoutine''. À la reprise, la routine est rejouée à la même place dans la chronologie, sans relancer le chronomètre temps réel. Si la routine a été programmée [[reference:temps:programmer_routine|avec des arguments]], l’étape encode les arguments **résolus** au moment du déclenchement, sous forme canonique : un nombre est écrit tel quel (''d:afficherScore avec 3''), un texte entre guillemets (''d:annoncer avec "bravo"''), un élément du jeu par son intitulé. **Cas limite** : une routine **programmée mais pas encore déclenchée** au moment de la sauvegarde n'est **pas** restaurée — le chrono en cours n'est pas reporté. Pour des scénarios qui exigent un comptage déterministe, utilisez plutôt le [[reference:debogage:magneto|magnétoscope]] ''.rec''. ===== .sol vs .rec ===== * **''.sol''** (sauvegarde) — contient les étapes de la partie. Permet de reprendre le jeu. Ne stocke **pas** la sortie attendue. * **''.rec''** (enregistrement) — contient les étapes **et** la sortie attendue à chaque étape. Permet de **vérifier** qu'une modification du scénario n'a pas cassé un parcours. Voir [[reference:debogage:magneto|magnétoscope]]. ===== Voir aussi ===== * [[reference:debogage:mode_triche|Mode triche]] — rejouer un ''.sol'' automatiquement. * [[reference:debogage:magneto|Magnétoscope]] — rejeu pas-à-pas avec vérification de sortie (''.rec''). * [[reference:temps:programmer_routine|Programmer une routine]] — interaction des chronos avec la sauvegarde. {{tag>fichier_solution sauvegarde sauvegardes sol .sol rejeu rejouer replay graine prng aléatoire aleatoire mode_triche déclenchement declenchement routine format}}