Analog zur Ink-Pipeline: eine .blend neben ihrer .glb im Map-Ordner (assets/maps/<map>/<name>.blend) wird von tools/build-models.sh headless zu <name>.glb exportiert, inkrementell per mtime. build.rs stößt das beim cargo-Build an, sobald sich eine .blend geändert hat. - Export: blender -b --factory-startup ... export_scene.gltf mit export_extras (collide/signal/role), export_apply, yup, image AUTO. - Blender über $BLENDER oder PATH; fehlt es, wird der Schritt still übersprungen — die committeten .glb reichen zum Bauen/Spielen. - Ein Export-Fehler bei vorhandenem Blender ist fatal (wie bei Ink). - build.rs teilt sich jetzt run_script/watch-Helfer für beide Pipelines. - Cinemaroom.blend -> assets/maps/cinema/cinema.blend verschoben und die .glb einmal daraus gebaut. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0196AM4UyAJEXVtPvp5DdKr8
56 lines
1.9 KiB
Markdown
56 lines
1.9 KiB
Markdown
# 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/<map>/<name>.blend` — Skript laufen lassen, fertig. Die
|
|
`.glb` landen direkt daneben (`assets/maps/<map>/<name>.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.
|