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
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.
./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:
$INKLECATE(Pfad zum Binary)tools/inklecate(mitgeliefert)inklecateimPATH
build-models.sh
Exportiert die Blender-Welten zu den .glb, die das Spiel lädt.
./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.