Files
wds/tools
irrlichtandClaude Sonnet 5 331caf417a Blender-Welten aus der .blend im Map-Ordner bauen
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
2026-09-02 00:53:29 +02:00
..
2026-06-13 02:48:04 +02:00

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:

  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.

./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.