diff --git a/.godot/editor/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.scn-folding-a060f4dbf8a9c309eafac21915e9719e.cfg b/.godot/editor/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.scn-folding-a060f4dbf8a9c309eafac21915e9719e.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.scn-folding-a060f4dbf8a9c309eafac21915e9719e.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.scn-folding-566827100cb2d09bd1472ce2b582f01f.cfg b/.godot/editor/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.scn-folding-566827100cb2d09bd1472ce2b582f01f.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.scn-folding-566827100cb2d09bd1472ce2b582f01f.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.scn-folding-df5f46d7ef09fd0481b69c22f13a0729.cfg b/.godot/editor/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.scn-folding-df5f46d7ef09fd0481b69c22f13a0729.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.scn-folding-df5f46d7ef09fd0481b69c22f13a0729.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.scn-folding-ef2cb0fb82a2b778a0a9f95e2ab638db.cfg b/.godot/editor/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.scn-folding-ef2cb0fb82a2b778a0a9f95e2ab638db.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.scn-folding-ef2cb0fb82a2b778a0a9f95e2ab638db.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/imported/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.md5 b/.godot/imported/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.md5 new file mode 100644 index 0000000..340fbbb --- /dev/null +++ b/.godot/imported/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.md5 @@ -0,0 +1,3 @@ +source_md5="5e86facfc289d6bb9c6b6c6a929d6acc" +dest_md5="35f9a9349a2402b173be2ac502f2b760" + diff --git a/.godot/imported/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.scn b/.godot/imported/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.scn new file mode 100644 index 0000000..a9f3867 Binary files /dev/null and b/.godot/imported/pirate_cup.glb-cdd60ea84612bfe7354e919cda5eaf78.scn differ diff --git a/.godot/imported/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.md5 b/.godot/imported/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.md5 new file mode 100644 index 0000000..871f241 --- /dev/null +++ b/.godot/imported/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.md5 @@ -0,0 +1,3 @@ +source_md5="82eb6df69d65615f487e91f31c7942c8" +dest_md5="73a38f0d08ddcd5a545f8873e85d3049" + diff --git a/.godot/imported/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.scn b/.godot/imported/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.scn new file mode 100644 index 0000000..5048fd6 Binary files /dev/null and b/.godot/imported/pirate_mat.glb-a4dfe01af5b62473721bff6b0cf953cf.scn differ diff --git a/.godot/imported/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.md5 b/.godot/imported/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.md5 new file mode 100644 index 0000000..19652cf --- /dev/null +++ b/.godot/imported/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.md5 @@ -0,0 +1,3 @@ +source_md5="85a86da0fc4ba888480556d08b0fe059" +dest_md5="ba89aff125908b015c693c3cf34fe6ee" + diff --git a/.godot/imported/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.scn b/.godot/imported/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.scn new file mode 100644 index 0000000..5955842 Binary files /dev/null and b/.godot/imported/ship_barrel.glb-7be9aa0dc28aea504fb088e9097fc40d.scn differ diff --git a/.godot/imported/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.md5 b/.godot/imported/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.md5 new file mode 100644 index 0000000..57611fa --- /dev/null +++ b/.godot/imported/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.md5 @@ -0,0 +1,3 @@ +source_md5="2950db89a33f62d84fc0df6d7c720b9f" +dest_md5="455ed4218a71d348042fd85f1a4a479c" + diff --git a/.godot/imported/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.scn b/.godot/imported/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.scn new file mode 100644 index 0000000..632eb45 Binary files /dev/null and b/.godot/imported/ship_lantern.glb-99312342dff9af31ac3021850bd555b2.scn differ diff --git a/art/pirate_assets.blend1 b/art/pirate_assets.blend1 new file mode 100644 index 0000000..4301a2c Binary files /dev/null and b/art/pirate_assets.blend1 differ diff --git a/assets.md b/assets.md new file mode 100644 index 0000000..ec71ad6 --- /dev/null +++ b/assets.md @@ -0,0 +1,105 @@ +# 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.