mirror of
https://github.com/deunix-educ/aventuriers-des-mots.git
synced 2026-10-13 02:11:58 +02:00
97a065879c
Phase "habillage" of the post-0.1.0 plan. Rendering was reviewed on real screenshots (new tools/screenshot.gd, `make screenshot`), which also caught and fixed map markers overlapping and truncated titles. - Global Godot theme (Atkinson Hyperlegible font, cream/green/gold palette, raised buttons, rounded cards, thick keyboard focus). - Original vector art: forest/marsh backdrops, Plume the owl, stars, exercise-type icons, correct/try-again icons, 10 collection items. - Redesigned world map (markers as cards with icon, title and stars, responsive layout), profile screens, mission intro, exercise host, rule/feedback panels, reward screen and collection grid. - Motion helper (pop-in, fade) honouring an animations setting. - Settings: animations flag; base window 1152x648 with canvas_items. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
5.1 KiB
5.1 KiB
Les Aventuriers des mots
Jeu éducatif de français CE1–CE2 (7–9 ans), aventure 2D, hors ligne, Godot 4 / GDScript typé. Projet open source.
- Spécification de référence :
docs/specs/cahier-des-charges.md. Elle fait foi. En cas de contradiction ou d'ambiguïté, poser la question au lieu de trancher seul. - Cycle de vie d'un exercice :
docs/specs/exercise-lifecycle.md. - Décisions validées en cours de projet :
docs/specs/decisions.md(à tenir à jour).
Commandes
Le Makefile est le seul point d'entrée pour les opérations système. Tenir cette liste à jour.
make setup: installe l'outillage (lint, tests, modèles d'export)make run: lance le jeumake lint/make format: analyse statique et formatagemake validate-data: valide tous les JSON dedata/contre leurs schémasmake test: tests en mode headlessmake check: lint + validate-data + test (à passer avant chaque commit)make content-review: régénèredocs/review/content-review.mdà partir dedata/make generate-dictation-audio: génère l'audio provisoire des dictées (voix neuronale Piper via.venv,ffmpegrequis sur la machine) dansassets/audio/dictations/, sans écraser l'existant (--forcepour régénérer)make export-linux/make export-windows: exports dansbuild/make screenshot SCENE=… OUT=… ARGS=…: capture le rendu réel d'une scène dans une fenêtre (outil de développement, ouvre brièvement une fenêtre)make package: réexporte puis produit les archives distribuables (exécutable unique + licence + crédits + notice) etSHA256SUMSdansdist/
Conventions de code
- Identifiants, noms de fichiers et messages de commit en anglais.
- Commentaires et docstrings en français.
- Aucun texte destiné à l'enfant en dur dans les scripts : il vit dans
data/ou dans les fichiers de traduction. - Indentation : 4 espaces, dans tous les langages, GDScript compris. Jamais de tabulation.
.editorconfiget le formateur sont configurés en conséquence ; dans l'éditeur Godot, régler Editor Settings → Text Editor → Behavior → Indent → Type sur Spaces. - GDScript : typage statique partout (variables, paramètres, retours, tableaux typés). Les déclarations non typées sont traitées comme des erreurs.
- Outils Python éventuels (
tools/) : annotations de type, zéro erreur pyright. README.md(français) etREADME-EN.md(anglais) restent synchronisés.
Git
.gitattributestenu à jour : fins de ligne LF pour le texte, assets marqués binaires..gitignoreexclut.godot/,build/, et tout secret : keystores, identifiants d'export,.env, mots de passe, adresses e-mail personnelles.- Vérifier qu'
export_presets.cfgne contient aucun secret avant de le commiter. - Un commit par unité de travail cohérente,
make checkau vert avant chaque commit.
Invariants d'architecture
- Trois couches strictement séparées : moteur du jeu, données pédagogiques, progression par enfant.
- Les exercices sont des données JSON, validées au chargement. La liste des types d'exercices est fermée et définie dans le moteur.
- Une donnée ne peut jamais exécuter du code : pas d'
Expression, pas destr_to_var, pas de chargement de script ou de scène depuis les données. - Les fichiers référencés par les données (audio, images) le sont par identifiant, résolu par le moteur dans un répertoire fixe. Jamais de chemin libre.
- Les scènes sont autonomes et communiquent par signaux. Une scène d'exercice ne touche ni à la sauvegarde ni à la progression.
- Correction, difficulté et planification des révisions sont du code pur, sans dépendance à l'arbre de scènes, testable en headless. Horloge et hasard y sont injectés, jamais lus directement.
- Les explications viennent des données validées, jamais d'une génération à l'exécution.
- Aucun accès réseau.
- Sauvegardes dans
user://: un fichier par profil,schema_version, écriture atomique (fichier temporaire puis remplacement), copie de secours, migration entre versions. - Interface en conteneurs et ancres, sans positions fixes. Clavier, souris et tactile. Réussite et erreur ne sont jamais signalées par la seule couleur.
- Ne pas créer de module ou d'autoload sans responsabilité réelle.
Invariants pédagogiques
- Une erreur déclenche une explication, jamais une punition. Aucune récompense liée à la vitesse.
- Contenu original uniquement : ne jamais reproduire le texte, les exemples ou les exercices du BLED ni d'aucun manuel. Le nom « BLED » n'apparaît ni dans le jeu ni dans les données.
- Tout exercice a une réponse attendue, un
rule_id, un indice et une explication. - Tout contenu rédigé par Claude porte
"review_status": "draft"jusqu'à validation humaine. - Une réponse ambiguë n'est pas déclarée fausse automatiquement.
Vérification
Tests headless obligatoires pour la correction, la progression et les sauvegardes. Ce qui ne peut pas être vérifié sans écran (rendu, animations, audio, tactile, clavier virtuel) est signalé explicitement comme non vérifié, avec la marche à suivre pour le tester à la main.