126 lines
4.1 KiB
Markdown
126 lines
4.1 KiB
Markdown
# Asset-Plan
|
|
|
|
Status: umgesetzt in `scripts/stoffe.gd` (Materialregeln) und
|
|
`scripts/formen.gd` (Bauregeln). Unten der Plan, darunter, was davon wie
|
|
gebaut ist.
|
|
|
|
## Stand
|
|
|
|
Der Look ist **Low-Poly wie Knete** (Vorbild: pastelliges Haus-Diorama):
|
|
flache Farben, runde Kanten, weiche Schatten, heller Himmel. Der frühere
|
|
Plan einer dunklen Taverne mit Maserung und Relief ist verworfen - er wirkte
|
|
aus Kamerahöhe schäbig.
|
|
|
|
- `stoffe.gd`: eine Farbe je Stoff, matt, kaum Glanz. Keine Texturen.
|
|
- `formen.gd`: Profile (Radius, Höhe) um die Achse gedreht, Fasen als
|
|
Viertelkreise. Scheibe, runder Zylinder, Ring, Becher, Laterne.
|
|
- Tisch: Holzscheibe mit Filzeinlage auf einem Mittelfuss, auf einer runden
|
|
Sockelplatte wie ein Diorama. Zonen: Filzscheiben mit Holzring.
|
|
- Licht: eine Sonne mit weichen Schatten, viel Umgebungslicht, kein Nebel,
|
|
kein Glow. Belichtung 0,9, sonst brennt die Platte aus.
|
|
- Gelernt: Der Look lebt von den Fasen und dem Licht, nicht vom Material.
|
|
Ohne Fasen sieht flache Farbe nach Prototyp aus. Und aus Kamerahöhe muss
|
|
am Rand Himmel bleiben, sonst ist alles Platte.
|
|
|
|
## 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.
|