mirror of
https://github.com/deunix-educ/aventuriers-des-mots.git
synced 2026-10-13 02:11:58 +02:00
Produce version 0.1.0: single-file exports and make package
Re-read the specification (§12, §13, §15) before producing the game: Linux and Windows are the target platforms for this version. Embed the PCK for one executable per platform, add config/version, and add `make package` which re-exports from scratch and builds dist/*.tar.gz, dist/*.zip and SHA256SUMS (executable + LICENSE + READMEs + CREDITS + a short notice). READMEs updated to the real status. Known gaps against the spec are listed in decisions.md. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
# Runtime et artefacts Godot
|
# Runtime et artefacts Godot
|
||||||
.godot/
|
.godot/
|
||||||
build/
|
build/
|
||||||
|
dist/
|
||||||
|
|
||||||
# Outillage telecharge par `make setup` (Godot, GUT), non versionne
|
# Outillage telecharge par `make setup` (Godot, GUT), non versionne
|
||||||
.godot-bin/
|
.godot-bin/
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ Le `Makefile` est le seul point d'entrée pour les opérations système. Tenir c
|
|||||||
- `make content-review` : régénère `docs/review/content-review.md` à partir de `data/`
|
- `make content-review` : régénère `docs/review/content-review.md` à partir de `data/`
|
||||||
- `make generate-dictation-audio` : génère l'audio provisoire des dictées (voix neuronale Piper via `.venv`, `ffmpeg` requis sur la machine) dans `assets/audio/dictations/`, sans écraser l'existant (`--force` pour régénérer)
|
- `make generate-dictation-audio` : génère l'audio provisoire des dictées (voix neuronale Piper via `.venv`, `ffmpeg` requis sur la machine) dans `assets/audio/dictations/`, sans écraser l'existant (`--force` pour régénérer)
|
||||||
- `make export-linux` / `make export-windows` : exports dans `build/`
|
- `make export-linux` / `make export-windows` : exports dans `build/`
|
||||||
|
- `make package` : réexporte puis produit les archives distribuables (exécutable unique + licence + crédits + notice) et `SHA256SUMS` dans `dist/`
|
||||||
|
|
||||||
## Conventions de code
|
## Conventions de code
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ PYRIGHT := $(VENV)/bin/pyright
|
|||||||
PYTHON := $(VENV)/bin/python3
|
PYTHON := $(VENV)/bin/python3
|
||||||
GD_SOURCES := autoload scripts tests
|
GD_SOURCES := autoload scripts tests
|
||||||
|
|
||||||
.PHONY: setup run lint format validate-data test check content-review generate-dictation-audio export-linux export-windows
|
.PHONY: setup run lint format validate-data test check content-review generate-dictation-audio export-linux export-windows package
|
||||||
|
|
||||||
setup:
|
setup:
|
||||||
tools/setup.sh
|
tools/setup.sh
|
||||||
@@ -42,3 +42,6 @@ export-linux:
|
|||||||
export-windows:
|
export-windows:
|
||||||
mkdir -p build/windows
|
mkdir -p build/windows
|
||||||
$(GODOT_BIN) --headless --path . --export-release "Windows" build/windows/aventuriers_des_mots.exe
|
$(GODOT_BIN) --headless --path . --export-release "Windows" build/windows/aventuriers_des_mots.exe
|
||||||
|
|
||||||
|
package:
|
||||||
|
tools/package.sh
|
||||||
|
|||||||
+4
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
An educational French-language game for 7-9 year olds (French grades CE1-CE2): an offline 2D adventure with an explorable map, a guide character, and grammar, spelling, and dictation exercises.
|
An educational French-language game for 7-9 year olds (French grades CE1-CE2): an offline 2D adventure with an explorable map, a guide character, and grammar, spelling, and dictation exercises.
|
||||||
|
|
||||||
Open source project, in development. Current status: first playable prototype (scope of cahier-des-charges §15) — boot, profiles, a three-location map, all three exercise types, saves, Linux/Windows exports. Pedagogical content is still minimal (see `docs/specs/decisions.md` for scoping decisions and `docs/specs/cahier-des-charges.md` for the full specification, both in French — this is a French-curriculum product).
|
Open source project, in development. Current status: version 0.1.0, playable offline on Linux and Windows — profiles, saves, three exercise types (multiple choice, sentence correction, dictation), a CE1 chapter on noun-group agreement (3 rules) and a CE2 chapter on grammatical homophones (a/à, et/est, son/sont, on/ont), 21 missions. All pedagogical content is still `draft` (awaiting validation) and dictation voices are placeholders (see `assets/CREDITS.md`; see `docs/specs/decisions.md` for scoping decisions and `docs/specs/cahier-des-charges.md` for the full specification, both in French — this is a French-curriculum product).
|
||||||
|
|
||||||
## Tech stack
|
## Tech stack
|
||||||
|
|
||||||
@@ -27,7 +27,10 @@ make run # runs the game
|
|||||||
| `make validate-data` | validates the JSON files in `data/` |
|
| `make validate-data` | validates the JSON files in `data/` |
|
||||||
| `make test` | headless tests |
|
| `make test` | headless tests |
|
||||||
| `make check` | lint + validate-data + test, must pass before every commit |
|
| `make check` | lint + validate-data + test, must pass before every commit |
|
||||||
|
| `make content-review` | regenerates `docs/review/content-review.md` (content validation document) |
|
||||||
|
| `make generate-dictation-audio` | generates the placeholder dictation audio |
|
||||||
| `make export-linux` / `make export-windows` | exports into `build/` |
|
| `make export-linux` / `make export-windows` | exports into `build/` |
|
||||||
|
| `make package` | builds the distributable archives in `dist/` (single executable + license + credits) |
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Jeu éducatif de français pour les CE1-CE2 (7-9 ans) : une aventure 2D hors ligne, avec une carte à explorer, un personnage guide, et des exercices de grammaire, d'orthographe et de dictées.
|
Jeu éducatif de français pour les CE1-CE2 (7-9 ans) : une aventure 2D hors ligne, avec une carte à explorer, un personnage guide, et des exercices de grammaire, d'orthographe et de dictées.
|
||||||
|
|
||||||
Projet open source, en développement. Statut actuel : premier prototype jouable (périmètre du §15 du cahier des charges) — démarrage, profils, carte à trois lieux, trois types d'exercices, sauvegardes, exports Linux/Windows. Contenu pédagogique encore minimal (voir `docs/specs/decisions.md` pour les décisions de cadrage et `docs/specs/cahier-des-charges.md` pour la spécification complète).
|
Projet open source, en développement. Statut actuel : version 0.1.0, jouable hors ligne sur Linux et Windows — profils, sauvegardes, trois types d'exercices (choix multiple, correction de phrase, dictée), chapitre CE1 « accords dans le groupe nominal » (3 règles) et chapitre CE2 « homophones grammaticaux » (a/à, et/est, son/sont, on/ont), 21 missions. Contenu pédagogique entièrement en brouillon (`draft`, à valider) et voix des dictées provisoires (voir `assets/CREDITS.md` ; voir `docs/specs/decisions.md` pour les décisions de cadrage et `docs/specs/cahier-des-charges.md` pour la spécification complète).
|
||||||
|
|
||||||
## Pile technique
|
## Pile technique
|
||||||
|
|
||||||
@@ -27,7 +27,10 @@ make run # lance le jeu
|
|||||||
| `make validate-data` | valide les JSON de `data/` |
|
| `make validate-data` | valide les JSON de `data/` |
|
||||||
| `make test` | tests headless |
|
| `make test` | tests headless |
|
||||||
| `make check` | lint + validate-data + test, à passer avant chaque commit |
|
| `make check` | lint + validate-data + test, à passer avant chaque commit |
|
||||||
|
| `make content-review` | régénère `docs/review/content-review.md` (document de validation du contenu) |
|
||||||
|
| `make generate-dictation-audio` | génère l'audio provisoire des dictées |
|
||||||
| `make export-linux` / `make export-windows` | exports dans `build/` |
|
| `make export-linux` / `make export-windows` | exports dans `build/` |
|
||||||
|
| `make package` | produit les archives distribuables dans `dist/` (exécutable unique + licence + crédits) |
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
|
|||||||
@@ -262,3 +262,11 @@ Ajouts à l'arborescence proposée :
|
|||||||
**Correction** : restauration des accents sur 76 lignes de 44 fichiers de `data/` (champs `instruction`, `question`, `hint`, `explanation`, `statement`, `example`, `title`, `narrative_context` uniquement ; aucun identifiant, `target_text`, mot de dictée ni token modifié, donc aucun lien entre données ni audio touché). Cas particuliers : « a » devenu « à » (préposition) et « annonce » devenu « annoncé ». Le tag interne `feminin` de `review_tags` est conservé (identifiant, non affiché).
|
**Correction** : restauration des accents sur 76 lignes de 44 fichiers de `data/` (champs `instruction`, `question`, `hint`, `explanation`, `statement`, `example`, `title`, `narrative_context` uniquement ; aucun identifiant, `target_text`, mot de dictée ni token modifié, donc aucun lien entre données ni audio touché). Cas particuliers : « a » devenu « à » (préposition) et « annonce » devenu « annoncé ». Le tag interne `feminin` de `review_tags` est conservé (identifiant, non affiché).
|
||||||
|
|
||||||
**Règle pour la suite** : tout texte destiné à l'enfant est écrit avec ses accents dès la rédaction.
|
**Règle pour la suite** : tout texte destiné à l'enfant est écrit avec ses accents dès la rédaction.
|
||||||
|
|
||||||
|
## 29. Production de la version 0.1.0 (relecture du cahier des charges)
|
||||||
|
|
||||||
|
**Relecture** : le §15 (première version jouable) demande un export Linux et Windows ; le §12 demande « une version installable et testée » par plateforme ; le §13 recommande de valider d'abord Linux et Windows, Android/macOS/iOS venant ensuite (hors périmètre, prompt-lancement.md). La version est donc produite pour Linux x86_64 et Windows x86_64.
|
||||||
|
|
||||||
|
**Mise en œuvre** : `config/version="0.1.0"` dans `project.godot` ; PCK embarqué dans l'exécutable (`binary_format/embed_pck=true`) pour un fichier unique par plateforme ; `make package` (`tools/package.sh`) réexporte depuis zéro puis crée `dist/` : `.tar.gz` Linux et `.zip` Windows contenant l'exécutable, `LICENSE`, `README.md`, `README-EN.md`, `CREDITS.md` et une notice `LISEZMOI.txt` (lancement, emplacement des sauvegardes, voix provisoires), plus `SHA256SUMS`. Le script refuse d'empaqueter un document vide (un README tronqué par une erreur d'édition a été détecté pendant cette production).
|
||||||
|
|
||||||
|
**Écarts connus par rapport au cahier des charges, non traités** (hors périmètre du §15 ou nécessitant des ressources/décisions humaines) : voix préenregistrées naturelles (§16 : voix de synthèse provisoires), illustrations originales et personnage guide animé (formes simples, §11/§16), espace adulte et export/restauration des sauvegardes (§9/§10), écran de réglages (volume, taille du texte, animations — `SettingsManager` existe sans interface), tests sur appareils réels et sur d'autres distributions/Windows (§12/§13), contenu entièrement en `draft` (validation humaine requise avant diffusion).
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ Tout ce qui suit ne peut pas être vérifié sans écran (rendu, mise en page, a
|
|||||||
|
|
||||||
## Exports
|
## Exports
|
||||||
|
|
||||||
|
- `make package` produit `dist/aventuriers-des-mots-0.1.0-{linux,windows}-x86_64.*` (exécutable unique, PCK embarqué) : sommes de contrôle et lancement headless de l'archive Linux vérifiés ici ; le binaire Windows n'a été vérifié que par son format (PE32+).
|
||||||
|
|
||||||
- `make export-linux` produit `build/linux/aventuriers_des_mots.x86_64` : lancé et vérifié en headless dans cet environnement, mais **jamais vu à l'écran** ni testé sur une autre distribution (cahier des charges §13 demande un test sur les distributions cibles).
|
- `make export-linux` produit `build/linux/aventuriers_des_mots.x86_64` : lancé et vérifié en headless dans cet environnement, mais **jamais vu à l'écran** ni testé sur une autre distribution (cahier des charges §13 demande un test sur les distributions cibles).
|
||||||
- `make export-windows` produit `build/windows/aventuriers_des_mots.exe` : seul le format du binaire (PE32+) a pu être vérifié ici. **Jamais exécuté** (pas de machine Windows ni de Wine disponibles) : à tester sur une vraie machine Windows avant toute diffusion.
|
- `make export-windows` produit `build/windows/aventuriers_des_mots.exe` : seul le format du binaire (PE32+) a pu être vérifié ici. **Jamais exécuté** (pas de machine Windows ni de Wine disponibles) : à tester sur une vraie machine Windows avant toute diffusion.
|
||||||
- Vérifier manuellement que le jeu se comporte correctement en plein écran et en fenêtré sur les deux plateformes.
|
- Vérifier manuellement que le jeu se comporte correctement en plein écran et en fenêtré sur les deux plateformes.
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ script_export_mode=2
|
|||||||
[preset.0.options]
|
[preset.0.options]
|
||||||
|
|
||||||
binary_format/architecture="x86_64"
|
binary_format/architecture="x86_64"
|
||||||
|
binary_format/embed_pck=true
|
||||||
|
|
||||||
[preset.1]
|
[preset.1]
|
||||||
|
|
||||||
@@ -43,3 +44,4 @@ script_export_mode=2
|
|||||||
[preset.1.options]
|
[preset.1.options]
|
||||||
|
|
||||||
binary_format/architecture="x86_64"
|
binary_format/architecture="x86_64"
|
||||||
|
binary_format/embed_pck=true
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ config_version=5
|
|||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Les Aventuriers des mots"
|
config/name="Les Aventuriers des mots"
|
||||||
|
config/version="0.1.0"
|
||||||
run/main_scene="res://scenes/boot/boot.tscn"
|
run/main_scene="res://scenes/boot/boot.tscn"
|
||||||
config/features=PackedStringArray("4.6", "Forward Plus")
|
config/features=PackedStringArray("4.6", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|||||||
Executable
+58
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Produit les archives distribuables dans dist/ : un executable unique par
|
||||||
|
# plateforme (PCK embarque) + licence, credits et notice. Reexporte toujours
|
||||||
|
# depuis zero pour ne jamais empaqueter un build perime.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
VERSION="$(sed -n 's/^config\/version="\(.*\)"/\1/p' project.godot)"
|
||||||
|
[ -n "${VERSION}" ] || { echo "config/version absent de project.godot" >&2; exit 1; }
|
||||||
|
|
||||||
|
rm -rf build dist
|
||||||
|
make export-linux export-windows >/dev/null
|
||||||
|
|
||||||
|
write_notice() {
|
||||||
|
cat > "$1/LISEZMOI.txt" <<NOTICE
|
||||||
|
Les Aventuriers des mots ${VERSION}
|
||||||
|
Jeu éducatif de français CE1-CE2, hors ligne.
|
||||||
|
|
||||||
|
Lancer : $2
|
||||||
|
Aucune installation ni connexion Internet n'est nécessaire.
|
||||||
|
|
||||||
|
Les profils et la progression sont enregistrés localement :
|
||||||
|
$3
|
||||||
|
Sauvegarder ce dossier suffit à conserver la progression.
|
||||||
|
|
||||||
|
Les voix des dictées sont provisoires (synthèse vocale) ; voir CREDITS.md.
|
||||||
|
Licence : GNU AGPL v3 (fichier LICENSE). Code source : voir README.md.
|
||||||
|
NOTICE
|
||||||
|
}
|
||||||
|
|
||||||
|
stage() {
|
||||||
|
local name="$1" src="$2" launch="$3" saves="$4"
|
||||||
|
local dir="dist/${name}"
|
||||||
|
mkdir -p "${dir}"
|
||||||
|
cp "${src}" "${dir}/"
|
||||||
|
for doc in LICENSE README.md README-EN.md assets/CREDITS.md; do
|
||||||
|
[ -s "${doc}" ] || { echo "${doc} est vide : paquet refuse" >&2; exit 1; }
|
||||||
|
done
|
||||||
|
cp LICENSE README.md README-EN.md "${dir}/"
|
||||||
|
cp assets/CREDITS.md "${dir}/CREDITS.md"
|
||||||
|
write_notice "${dir}" "${launch}" "${saves}"
|
||||||
|
}
|
||||||
|
|
||||||
|
LINUX="aventuriers-des-mots-${VERSION}-linux-x86_64"
|
||||||
|
WINDOWS="aventuriers-des-mots-${VERSION}-windows-x86_64"
|
||||||
|
|
||||||
|
stage "${LINUX}" build/linux/aventuriers_des_mots.x86_64 \
|
||||||
|
"./aventuriers_des_mots.x86_64 (au besoin : chmod +x aventuriers_des_mots.x86_64)" \
|
||||||
|
"~/.local/share/godot/app_userdata/Les Aventuriers des mots/"
|
||||||
|
stage "${WINDOWS}" build/windows/aventuriers_des_mots.exe \
|
||||||
|
"double-clic sur aventuriers_des_mots.exe" \
|
||||||
|
"%APPDATA%\\Godot\\app_userdata\\Les Aventuriers des mots\\"
|
||||||
|
|
||||||
|
(cd dist && tar czf "${LINUX}.tar.gz" "${LINUX}" && zip -qr "${WINDOWS}.zip" "${WINDOWS}")
|
||||||
|
(cd dist && sha256sum "${LINUX}.tar.gz" "${WINDOWS}.zip" > SHA256SUMS)
|
||||||
|
rm -rf "dist/${LINUX}" "dist/${WINDOWS}"
|
||||||
|
ls -lh dist
|
||||||
Reference in New Issue
Block a user