Vier Stufen, bis der Kasten im Raum stand — ohne eine einzige Bilddatei
· gestaltung · spiel
Nach vier Tagen war Pipfold spielbar und sah aus wie ein Prototyp: flache Brettchen, eine Sonne, überall dieselbe Oberfläche. Aus der Design-Durchsicht wurden vier Stufen, an zwei Tagen gebaut. Keine davon hat eine Bilddatei ins Paket gelegt.
Beide Aufnahmen kommen aus demselben Werkzeug (tools/schuesse.sh, Schuss
spiel, 1280×720), das linke aus einem ausgecheckten Stand vom 26. Juli.
Stufe 1 — die billigen fünf Punkte
Zuerst das, was nichts kostet ausser Aufmerksamkeit:
Hochkant lief ein harter Streifen quer durchs Bild. Das war die Kante zwischen Tisch und Rückwand — eine Wand, die es nur gab, weil ein Raum eine Wand hat. Sie ist raus, der Tisch wurde 16×16 Einheiten gross und nach hinten gezogen, der Nebel dichter. Was hinten liegt, verschwindet jetzt, statt an einer Linie aufzuhören.
Der Turnierstand stand als 0:0:0:0 da und liest sich jetzt als „Anna 2 ·
Ben 1“. Leer bleibt leer, statt Nullen zu zeigen.
Und das Holz wurde zum ersten Mal differenziert: helle Oberkanten, mittlere Wangen, dunkle Innenblenden. Drei Töne, wo vorher einer war — das allein macht aus einem Klotz einen zusammengesetzten Kasten.
Dazu zog scripts/stil.gd rund 34 verstreute Farbwerte an eine Stelle.
Stufe 2 — Licht in drei Rollen
Vorher: eine Sonne plus ein Füller. Jetzt drei Lichter mit verschiedenen Aufgaben — warmes Hauptlicht von vorn links, kühles Gegenlicht von hinten rechts ohne Schatten, das eine helle Kante auf Klappen und Würfel zieht, und ein warmer Füller vorn.
Der wichtigste Zugewinn war aber ein anderer: Kontaktschatten unter den Würfeln. Eine flach liegende Fläche mit weichem Radialverlauf, die dem Würfel in x und z folgt und beim Wurf mit der Flughöhe wächst und verblasst.
Das ist die Information, die „schwebt“ von „liegt“ unterscheidet. Der Schlagschatten der Sonne allein lässt kleine Dinge schweben — er ist zu weit weg vom Objekt, um zu sagen, wie hoch es steht.
Dazu Rauheit je Oberfläche: Filz 0,97 matt, Wangen 0,60, Oberkanten 0,48, Klappen 0,44 lackiert, Würfel 0,34. Vorher hatten alle Flächen denselben Wert — dadurch sahen Filz, Holz und Bein aus wie derselbe Stoff in drei Farben.
Gelernt: Eine
GradientTexture2Ddirekt alsalbedo_texturebleibt im Compatibility-Renderer unsichtbar. Die Fläche wird gezeichnet, die Textur aber nie gebunden.ImageTexture.create_from_image()behebt es. Eine halbe Stunde ging dafür drauf, den Verlauf zu suchen, den es gar nicht gab.
Stufe 3 — das Holz wird gerechnet
shaders/holz.gdshader: Jahresringe um eine Stammachse, die in
Faserrichtung durch das Werkstück läuft, plus gestauchtes Feinrauschen für die
Längsfasern.
Der Punkt, an dem es kippt: Jedes Brett bekommt eine eigene Stammlage, fest gesät, damit die Optik bei jedem Start gleich ist. Ohne das laufen die Ringe über die Fugen hinweg durch — und der Kasten sieht aus, als wäre er aus einem Klotz gefräst statt aus Brettern gebaut. Die Faserrichtung folgt dem Bauteil: längs bei den Leisten, quer bei den Wangen, senkrecht bei den Klappen.
Dazu kam:
- Gefaste Klappen.
_runder_wuerfelist jetzt der Sonderfall von_runder_quader. Eine scharfe Kante fängt kein Licht — erst die Fase macht aus dem Brettchen ein gehobeltes Stück Holz. - Eine Scharnierstange aus Metall unter der Klappenreihe. Das einzige Metall am ganzen Kasten, und der Grund, warum die Reihe als Mechanik gelesen wird und nicht als aufgeklebte Plättchen.
- Geprägte Zahlen: hinter der dunklen Ziffer liegt eine hellere, um Haaresbreite nach unten rechts versetzt — die Lichtkante der Kerbe. Zwei Labels statt Geometrie; geprägte Ziffern als Mesh wären hundertmal so viele Dreiecke für einen Effekt, den man auf Handygrösse ohnehin nicht sieht.
- Drei Garnituren (Ahorn/grün, Nussbaum/rot mit dunklen Würfeln, Esche/blau) und ein Hoher-Kontrast-Modus für schwache Sicht oder helles Licht draussen.
Und dann gemessen
Die Tischplatte füllt den ganzen Hintergrund, jeder Pixel läuft durch den
Shader. Also nachgerechnet, bevor er bleiben durfte: bei 2560×1440 kostet er
0,13 ms pro Bild — 4,44 gegen 4,32 ohne. Dafür ohne sin() im Rauschen,
zwei Oktaven statt drei, und die Feinfaser ist abschaltbar. Tischplatte und
Innenblenden brauchen sie nicht.
Gelernt: Die Scharnierstange lag zuerst im Array
_klappen— das ist nach Klappennummer indiziert, und über seine Grösse entscheidet der Neuaufbau des Klappenkamms. Sie hätte bei jedem Zug den ganzen Kamm neu bauen lassen. Die UI-Prüfung hat es sofort gefangen: „Klappe hängt nach unten“.
Stufe 4 — der Kasten wird ein Ding im Raum
Ausgangspunkt war ein Blick auf das Querformat: der Kasten lag als flaches Band in der Bildmitte, oben und unten ein Drittel leeres Dunkel, die Ziffern klebten wie aufgedruckt, und die zwei wichtigsten Texte sahen aus wie Debug-Ausgaben.
Die Ziffern sind jetzt beleuchtet (Label3D.shaded). Vorher behielten sie
ihre Farbe, während das Holz unter ihnen hell und dunkel wurde — genau daran
erkennt das Auge einen Aufkleber. Sie wurden auch kleiner (0,29 → 0,26) und
optisch statt rechnerisch zentriert: die „1“ trägt links eine Fahne und
sass sichtbar zu weit rechts. Zweistellige Zahlen dafür grösser (0,62 → 0,72),
weil 10, 11 und 12 neben den einstelligen mickrig wirkten.
Echte Schattenfuge zwischen den Klappen (Abstand 0,012 → 0,022, Korpus 0,96 → 0,94 der Fachbreite). Vorher las die Reihe aus der Spielsicht als ein einziger Streifen.
Stossfugen an den Ecken — vier dünne dunkle Leisten, keine Geometrieänderung: aus dem Klotz mit Kanten werden vier zusammengesetzte Bretter.
Und die Würfel wurden kleiner: Kantenlänge 0,22 → 0,185. Einer war fast so breit wie eine Klappe. Dazu ein eigener Gierwinkel je Würfel und eine versetzte Ruhelage in der Tiefe — exakt auf einer Linie liegen Würfel nur, wenn jemand sie hingelegt hat.
Die Geometrie, die sich nicht überreden liess
Hochkant bleibt oben rund ein Drittel leerer Tisch, und das ist nicht wegzurechnen. Ein Kasten mit Seitenverhältnis 2,4 zu 1,35 füllt ein Bild mit 0,46 nicht in der Höhe. Drehen um die Hochachse macht ihn im Bild sogar breiter — 2,4·cos + 1,35·sin. 26° wurden ausprobiert und waren schlechter.
Was hilft, ist kein Trick, sondern eine Entscheidung: weiter Blickwinkel aus
der Nähe (FOV_HOCH 48°), die vordere Kante darf seitlich aus dem Bild laufen
— nur die Klappenreihe muss ganz sichtbar sein — und der Kasten sitzt tiefer.
Die Luft liegt oben, wo Punktzahl und Werkzeuge stehen, der Kasten liegt in
Daumenreichweite.
Stufe 4 sollte ursprünglich Physik-Würfel bringen — echte Starrkörper statt gerechneter Wurfbahnen. Bewusst liegen gelassen: das kollidiert mit der reproduzierbaren Wurffolge, und die braucht das Spiel für „gleiche Würfel für alle“ und für die Prüfläufe. Ein Würfel, der bei jedem Start anders fällt, ist realistischer und macht jede Zusicherung unprüfbar.
Was von den vier Stufen übrig bleibt
Im ausgelieferten Paket liegt kein einziges Bild für all das. Maserung, Filzstruktur, Kontaktschatten, Vignette, Prägung, Stossfugen — alles zur Laufzeit erzeugt oder aus Geometrie gebaut.
Das war kein Sparzwang. Es ist der Grund, warum das Spiel 14 MB gross ist und nicht 140 — und warum eine vierte Garnitur zwei Farbwerte kostet statt einer Texturserie.