# Asset-Plan Status: Konzept. Noch nicht umgesetzt. ## Grundidee Basis-Mesh ohne Textur. Aussehen kommt aus Shader plus Regeln. Ein Mesh, ein Material, viele Varianten uber Instanz-Uniforms. Vorteile: - Weniger Draw Calls, weniger VRAM. - Varianten kosten nichts. Nur ein anderer Uniform-Wert. - Parameter jederzeit anpassbar. Keine Textur muss neu gebaut werden. Grenze: - Nachbarschafts-Regeln kosten Laufzeit. Nur eine Ebene, Ergebnis cachen. ## Stil Stilisiert, nicht realistisch. Taverne bei Nacht. - Chiaroscuro: warmes Lampenlicht gegen kalten Schatten. Sonst nichts. - Enge Palette. Holz, Messing, Wachs, Leder, Filz. - Kanten leicht angeschraegt. Faengt Licht, wirkt handgemacht. - Abnutzung ueberall. Kratzer, Wachsflecken, Salzraender. Nichts ist neu. - Kein Cartoon-Outline. Bricht mit dem Licht. Die Szene in `scripts/table.gd` setzt das schon an: dunkler Hintergrund, Nebel, warme Lampe, gruener Filz. ## Vier Basis-Shader Mehr braucht es nicht. 1. **Holz** - Maserung, Astloecher, abgegriffene Kanten. Fuer Tisch, Beine, Fass, Becher. 2. **Messing** - Anlauf, Politur an Griffflaechen. Fuer Laterne, Beschlaege, Muenzen. 3. **Filz / Stoff** - Fuzz, Flecken, abgewetzte Stellen. Fuer Tischtuch, Beutel, Kleidung. 4. **Wachs / Knochen** - subsurface-artig, warm durchscheinend. Fuer Kerzen, Wuerfel. Jeder Shader hat dieselben Kern-Uniforms: ``` base_color : Color wear : float 0..1 Abnutzung tint : Color Faerbung obendrauf pattern_mask : float 0..1 Musterstaerke emission : float 0..1 ``` ## Muster Als Masken-Textur, nicht als fertige Textur. RGBA = vier Muster in einer Datei. Der Shader waehlt den Kanal. Beispiel: R = Streifen, G = Wappen, B = Kratzer, A = Salzkruste. ## Regeln als Daten Flache Liste. Keine Vererbung, keine Klassen. Jedes Objekt bekommt Tags. Regeln mappen Tags auf Uniform-Werte. ```gdscript # rules.tres oder JSON { "holz": { "base_color": "#8B5A2B", "grain": 0.8 }, "alt": { "wear": 0.7, "roughness": 0.9 }, "salzwasser": { "wear": "+0.2", "tint": "#5A7A6B" } } ``` Nachbarschaft genauso flach: ```gdscript { "wenn_nahe": "lampe", "dann": { "emission_boost": 0.4, "radius": 2.0 } } ``` ### Drei Regeln fuer die Regeln - Regeln addieren nur. Kein Ueberschreiben, keine Reihenfolge-Abhaengigkeit. - Hoechstens eine Nachbarschafts-Ebene. Keine Kettenreaktion. - Jeder Uniform-Wert hat einen Default. Fehlende Regel heisst nie Absturz. ## Meshes Aktuell liegt nur `art/pirate_assets.blend1` da. Das ist ein Blender-Backup. Die frueheren `.glb` (Becher, Fass, Laterne, Matte) sind nicht mehr im Repo. Nur Cache-Reste in `.godot/`. Vor dem Start: Meshes neu exportieren. Ohne Material, ohne Textur. UVs muessen sauber sein. Der Shader braucht sie fuer Maserung und Muster. ## Reihenfolge beim Umsetzen 1. Meshes als `.glb` exportieren, ohne Material. 2. Holz-Shader bauen. An Tisch und Becher testen. 3. Uniforms per Hand setzen. Schauen, ob der Look traegt. 4. Erst dann die Regel-Datei bauen. 5. Nachbarschaft ganz am Ende. Nur wenn es dann noch fehlt. Schritt 3 ist der Entscheidungspunkt. Sieht es nach Plastik aus, lieber zurueck zu handgemachten Texturen.