# tools/ Hilfsskripte für die Asset-Pipeline. Sie sind **nicht** Teil der Engine — die Engine liest nur die fertig gebauten Dateien unter `assets/`. ## build-dialogues.sh Baut alle Ink-Dialoge zu den `.ink.json`, die das Spiel liest. ```sh ./tools/build-dialogues.sh # nur Geändertes neu bauen ./tools/build-dialogues.sh -f # alles neu bauen ``` Workflow für die Autorin: `.ink`-Dateien in `assets/interactions/` schreiben, Skript laufen lassen, fertig. Die `.ink.json` landen direkt neben den `.ink` und werden mit ins Repo eingecheckt, damit ein frischer Clone ohne Toolchain spielbar ist. **Automatisch beim Build:** `cargo build`/`cargo run` ruft dieses Skript über `build.rs` selbst auf, sobald sich eine `.ink` geändert hat. ### inklecate Das Skript sucht den Ink-Compiler in dieser Reihenfolge: 1. `$INKLECATE` (Pfad zum Binary) 2. `tools/inklecate` (mitgeliefert) 3. `inklecate` im `PATH` ## build-models.sh Exportiert die Blender-Welten zu den `.glb`, die das Spiel lädt. ```sh ./tools/build-models.sh # nur Geändertes neu bauen ./tools/build-models.sh -f # alles neu bauen ``` Workflow für die Autorin: `.blend` in den jeweiligen Map-Ordner legen — `assets/maps//.blend` — Skript laufen lassen, fertig. Die `.glb` landen direkt daneben (`assets/maps//.glb`) und werden mit ins Repo eingecheckt, damit ein frischer Clone ohne Blender spielbar ist. Ein `.glb` ohne `.blend` daneben (z.B. `props/testscene.glb`) bleibt unangetastet. **Automatisch beim Build:** `cargo build`/`cargo run` ruft dieses Skript über `build.rs` selbst auf, sobald sich eine `.blend` geändert hat. Blender wird über `$BLENDER` oder den `PATH` gefunden. Fehlt es, wird der Schritt übersprungen (kein Fehler — die committeten `.glb` reichen). Bundeln geht nicht, dafür ist Blender zu groß. Tipp: in Blender „File → External Data → Pack Resources", dann liegen die Texturen in der `.blend` und der Export ist self-contained.