| Les deux révisions précédentesRévision précédente | |
| reference:divers:format_fichier_solution [2024/10/06 21:24] – jonathan | reference:divers:format_fichier_solution [2026/10/25 14:33] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| ====== Format fichier sauvegarde et fichier solution ====== | ====== 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 ===== |
| |
| Sauvegarde : | |
| <code json> | <code json> |
| { | { |
| "versionDonjon": "020100", | "type": "sauvegarde", |
| "versionJeu": "1.5", | "version": 31102, |
| "partie": [ | "declenchementsFuturs": [ |
| "g:0.25796434437940996", | { "routine": "activationPiege", "tempsMs": 345 } |
| "c:prendre clé", | ], |
| "r:2", | "etapesSauvegarde": [ |
| "c:i", | "g:0.25796434437940996", |
| "c:x porte", | "c:prendre clé", |
| "c:ouvrir la porte avec la clé", | "r:2", |
| "c:entrer", | "c:i", |
| "c:x trou", | "c:x porte", |
| "d:porteRougeSeReferme", | "c:ouvrir la porte avec la clé", |
| "c:manger baie", | "c:entrer", |
| "g:0.7474848097328197", | "c:x trou", |
| "c:x baie", | "d:porteRougeSeReferme", |
| "c:p baie" | "c:manger baie", |
| ], | "g:0.7474848097328197", |
| "declenchementsFuturs": [ | "c:x baie", |
| "activationPiege:345" | "c:p baie", |
| ], | "c:*orthographe: il manque un accent à « clé »" |
| "scenario": "Le joueur se trouve dans le salon.\r\n\r\nSa description est \"Vos vêtements sont sales. Vous avez perdu des kilos. Il est temps de sortir d’ici !\"." | ], |
| | "horlogesSauvegarde": [null, null, null, [1758566400000]], |
| | "horlogeIntro": [], |
| | "scenario": "Le joueur se trouve dans le salon.\r\n\r\nSa description est \"Vos vêtements sont sales. …\"." |
| } | } |
| </code> | </code> |
| | |
| | ===== Types d'étapes ===== |
| | |
| | Chaque entrée du tableau ''etapesSauvegarde'' commence par un préfixe à une lettre, suivi de deux-points puis de la valeur. **Seuls les premiers deux-points servent de séparateur** : la valeur peut elle-même en contenir (cas d'un commentaire du joueur). |
| | |
| | ^ 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'' | |
| | |
| | Une commande qui commence par ''*'' ou ''@'' est un [[reference:debogage:commentaires_joueur|commentaire du joueur à l'auteur]] : elle est stockée comme une commande ordinaire (''c:* la porte est introuvable'') mais n'est pas interprétée par le jeu. |
| | |
| | À 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. |
| | |
| | ===== Autres champs ===== |
| | |
| | ^ Champ ^ Sens ^ |
| | | ''type'' / ''version'' | Type de fichier et version de Donjon FI qui l'a produit. | |
| | | ''declenchementsFuturs'' | Routines programmées **pas encore déclenchées** au moment de la sauvegarde (nom + temps restant en millisecondes). | |
| | | ''horlogesSauvegarde'' | Lectures d'horloge (epoch ms) faites par chaque étape, **alignées par index** sur ''etapesSauvegarde'' (''null'' = l'étape n'a pas lu l'heure). Rejouées au lieu de l'heure réelle pour que le replay soit déterministe. Le champ est **absent** si aucune étape de la partie n'a lu l'heure. | |
| | | ''horlogeIntro'' | Idem pour la phase d'introduction (avant la première commande). Absent si vide. | |
| | | ''scenario'' | Le code source du jeu. Présent dans une sauvegarde de partie (''.sav''), **absent** d'un fichier solution généré par ''générer solution''. | |
| | |
| | ===== 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. |
| | * [[reference:debogage:commentaires_joueur|Commentaires du joueur à l'auteur]] — recueillir les retours d'un bêta-testeur via le ''.sol''. |
| | |
| | {{tag>fichier_solution sauvegarde sauvegardes sol .sol rejeu rejouer replay graine prng aléatoire aleatoire mode_triche déclenchement declenchement routine format}} |
| | |