diff --git a/assets/signals.toml b/assets/signals.toml index 41aa3da..c2d45d4 100644 --- a/assets/signals.toml +++ b/assets/signals.toml @@ -8,9 +8,8 @@ # set KV setzen (true/false/i32/f32/string) # inc [] KV-Integer +Delta (Default +1) # clear KV-Eintrag entfernen -# hide_object Effect: Instance ausblenden -# play_sound Effect: SFX abspielen -# load_palette Effect: Farbschema laden +# hide_object deferred (Frontend): Instance ausblenden +# play_sound deferred (Frontend): SFX abspielen # # Reserviertes Signal `[init]` feuert einmal vor der Game-Loop — # idealer Ort für KV-Defaults. diff --git a/notes/renderer-plan.md b/notes/renderer-plan.md index b946b91..dbcc2dc 100644 --- a/notes/renderer-plan.md +++ b/notes/renderer-plan.md @@ -84,8 +84,11 @@ Material-Batching später, wenn es weh tut. - **Asset-Pipeline:** Texture-Painting in Blender ist mühsam. Kandidaten für Textur-pro-Fläche-Workflows: TrenchBroom (Map-Format-Import nötig), Crocotile 3D, Blockbench. Entscheidung wenn der Szenen-Loader ansteht. -- **Texturformat:** 8-Bit-CLUT-TGA weiterverwenden (PS1-authentisch, - Paletten-Swaps bleiben möglich) vs. direkte 16/24-Bit-Texturen. +- **Texturformat:** direkte True-Color-Texturen statt 8-Bit-CLUT-TGA — + wir arbeiten durchgehend mit 15-Bit-True-Color, es gibt keine globale + Palette mehr (das `load_palette`-Verb ist entfernt). Offen bleibt nur + das Dateiformat (TGA/PNG) und ob Quantisierung beim Import oder erst + im Shader passiert. - **Fog / Distance-Fade:** irl3d hat hartes Pop-In bei `CULL_DIST` — in wds von Anfang an als Fade Richtung Sky-Farbe einplanen (im Shader trivial, passt zur PS1). @@ -102,9 +105,9 @@ selbst rechnet f32 — die GPU kennt ohnehin nur Floats). ## Projektphasen 1. **CLI-Phase (läuft):** KV-Store, Signal/Action-Dispatcher, - Ink-Integration, Konsolen-REPL als erstes Frontend. Effects als Daten - (`hide_object`, `play_sound`, `load_palette`), damit spätere Subsysteme - sie konsumieren, ohne dass der Kern sie kennt. + Ink-Integration, Konsolen-REPL als erstes Frontend. Deferred Actions + als Daten (`hide_object`, `play_sound`), damit spätere Subsysteme sie + konsumieren, ohne dass der Kern sie kennt. 2. Datenmodell (Mesh/Instance/Material/Scene + TOML-Formate) headless. 3. Renderer nach diesem Plan, gegen das stehende Datenmodell. 4. Physik, Audio, Panel-UI andocken (Ports aus irl3d).