M1d: Stilproben #12

Merged
steven merged 17 commits from m1d-stilproben into main 2026-10-02 13:01:53 +00:00
Owner

Mit diesem Branch bekommt Grovewright Pixelgrafik aus Code, im Stil klassischer Farmspiele wie Stardew Valley, aber eigenständig, in drei Abwandlungen: Warm, Pastell und Glimmen. Eine Vitrine zeigt jeden Stil zusammen mit Dingen späterer Meilensteine. F2 wechselt den Stil im Spiel, und das Spiel merkt sich die Wahl. Damit lässt sich die Prüffrage von Meilenstein 1 beantworten: „Welche der drei Stilproben soll es sein?“ Umgesetzt nach dem Plan docs/superpowers/plans/2026-10-02-m1d-stilproben.md. Kern und Brücke bleiben unverändert.

Was drin ist

Grafik (game/scripts/art/)

  • Art kennt 16 Kennungen wie terrain/soft_rock, wählt den Stil und lädt Bilder aus game/art/, die eine Zeichnung ersetzen. So kann ein Artist später Grafik austauschen, ohne dass sich Code ändert.
  • ArtStyle verteilt das Zeichnen auf die Kennungen und zeichnet Platzhalter.
  • TileShape kennt die acht Nachbarn jeder Kachel. Damit sind Felsmassen außen rund, innen geschlossen und zeigen zum offenen Boden hin ihre Vorderkante.
  • PixelStyle zeichnet jede Kennung Pixel für Pixel in ein kleines Bild und hebt es auf:
    • Boden, weicher und harter Fels und Grundgestein, schräg von vorn gesehen, mit Schatten;
    • Risse, Splitter und Zielmarke;
    • Figuren mit 16 × 24 Pixeln, einem Bild im Stand und vier beim Laufen;
    • die Dinge der Vitrine: toter und lebendiger Boden, Lebensmoos, eine Ranke mit Steinen, eine wachsende Faserpflanze, ein Weidetier und eine erwachende Ruine.
  • WarmStyle, PastelStyle und GlowStyle wählen nur Palette, Spielerfarben, getönte Umrisse und Leuchten. Warm ist der Standard.

Spielfeld

  • MapView zeichnet in Blöcken von 16 × 16 Kacheln und nach einem Treffer nur die Blöcke um die Kachel neu.
  • Figuren, eigene Figur und Zielmarke zeichnen über Art.
  • Der eigene Schlag zeigt seine Splitter sofort, auch als Gast. Bricht er den Fels, kommen keine zweiten Splitter.
  • Die Namen über den Figuren bleiben scharf.
  • Die Pixel bleiben scharf: Texturfilter „Nearest“, Einrasten auf ganze Pixel und ein ganzzahliger Kamerazoom.

Vitrine und Stilwahl

  • „Stilproben ansehen“ im Menü öffnet die Vitrine. 1 bis 3 oder die Knöpfe wechseln den Stil, Esc oder „Zurück“ führt ins Menü. Eine startende Welt, etwa die eines Hosts beim Beitritt, ersetzt die Vitrine.
  • F2 wechselt den Stil im Spiel, und das Spiel merkt sich die Wahl. --style=NAME wählt einen Stil für einen Start, ohne ihn zu speichern.
  • Das Werkzeug für Bildschirmfotos kennt --style=NAME und --showcase.

Drumherum

  • docs/KONZEPT.md 7.4 und 11: Pixelgrafik aus Code statt flacher Vektorzeichnungen. Warm ist der Favorit, Feinheiten folgen nach den Playtests.
  • CLAUDE.md hat einen Abschnitt „Grafik“: wie gezeichnet wird, was eine neue Kennung braucht und wie ein Bild eine Zeichnung ersetzt. Dazu kommt der Wortlaut „nach etwa“ aus #8.
  • Der Fragebogen docs/playtests/m1d.md zeigt sechs Bilder der drei Stile.

Prüfung

  • 151 Rust-Tests (unverändert) und 154 GDScript-Tests (vorher 96); rustfmt und Clippy ohne Befund. Ein GDScript-Lauf zeigt die drei bekannten Warnungen aus Tests, die Fehler absichtlich auslösen.
  • Jede Task wurde von einem eigenen Prüfer gesehen. Vier brauchten Korrekturen: Task 2 zwei Runden, Tasks 3, 5 und 8 je eine. Jede Korrektur war vorab rot und grün geprüft und wurde nachgeprüft.
  • Die Abschlussprüfung über den ganzen Branch urteilte „mit Korrekturen“. Die Korrekturwelle wurde nachgeprüft, und alle Befunde sind erledigt. Danach wurde nur noch ein Satz im Fragebogen berichtigt.

Entscheidungen während der Umsetzung

  1. Tests dürfen private Teile der Pixelstile aufrufen. Die Bilder sind das sichtbare Verhalten eines Stils.
  2. Warm bekommt seine ganze Palette schon in Task 5, auch die Farben, die erst Task 6 zeichnet.
  3. Task 2: Bricht der eigene Schlag den Fels, zeigt er keine zweiten Splitter. Die Hülle zählt eigene Schläge pro Kachel, bis der Kern sie meldet. Auch für einen Gast, dessen Meldung erst nach dem nächsten Schlag kommt, stimmt die Zählung. Sofortige Splitter gibt es nur auf Fels.
  4. Task 3: Eine startende Welt ersetzt die Vitrine. Sonst läge die Welt eines Gastes, der beim Verbinden die Vitrine öffnet, unter ihr.
  5. Task 5: Beim Laufen sinkt der Körper einen Pixel, statt zu steigen. So behält der Kopf in jedem Bild seinen Umriss.
  6. Task 8: Die Regel für eine neue Grafik-Kennung in CLAUDE.md nennt alle Schritte.
  7. Korrekturwelle nach der Abschlussprüfung:
    • Das Lebensmoos hat links und rechts Platz für seinen Umriss; die Bilder der Vitrine sind neu aufgenommen.
    • Die Pausenanzeige kehrt zurück, wenn eine Meldung während der Pause abläuft.
    • Ein Test prüft die Splitter fremder Schläge.
    • Der Test ohne Bilderordner hängt nicht mehr davon ab, was in res://art liegt.
    • Der Fragebogen nennt die Felsproben und sagt, was sofort kommt und was erst mit der Antwort des Hosts.
    • Nach der Nachprüfung: Der Fragebogen sagt richtig, dass harter Fels eine Kupferspitzhacke braucht und Grundgestein nie bricht.
  8. Die zweite Figur in den Kartenbildern hat dieselbe Farbe wie die erste. Eine zweite Farbe bräuchte einen zweiten echten Spieler in der Sitzung; die Vitrine zeigt zwei Farben.
  9. Weitere Punkte sind bewusst nach #11 verschoben, darunter der untere Rand des Lebensmooses.

Für Steven

  • Bitte den Probelauf mit docs/playtests/m1d.md machen. Danach steht fest, welcher Stil bleibt.
  • Nach dem Probelauf entscheiden: Sollen Splitter auch auf hartem Fels fliegen, den erst eine Kupferspitzhacke bricht, und auf Grundgestein, das nie bricht? Heute tun sie es (Schritt 4 im Fragebogen und #11).

Verschoben

  • #11 sammelt die bewusst verschobenen Punkte aus M1d.
  • In #8 ist der Wortlaut „nach etwa“ abgehakt; der Test dazu bleibt offen.

Spieltest

play.bat im Hauptordner doppelklicken, dann den Fragebogen docs/playtests/m1d.md ausfüllen. Für zwei Spieler auf einem Rechner play-zweites-fenster.bat dazunehmen.

Closes #10

🤖 Generated with Claude Code

Mit diesem Branch bekommt Grovewright Pixelgrafik aus Code, im Stil klassischer Farmspiele wie Stardew Valley, aber eigenständig, in drei Abwandlungen: Warm, Pastell und Glimmen. Eine Vitrine zeigt jeden Stil zusammen mit Dingen späterer Meilensteine. F2 wechselt den Stil im Spiel, und das Spiel merkt sich die Wahl. Damit lässt sich die Prüffrage von Meilenstein 1 beantworten: „Welche der drei Stilproben soll es sein?“ Umgesetzt nach dem Plan `docs/superpowers/plans/2026-10-02-m1d-stilproben.md`. Kern und Brücke bleiben unverändert. ## Was drin ist **Grafik (`game/scripts/art/`)** - **`Art`** kennt 16 Kennungen wie `terrain/soft_rock`, wählt den Stil und lädt Bilder aus `game/art/`, die eine Zeichnung ersetzen. So kann ein Artist später Grafik austauschen, ohne dass sich Code ändert. - **`ArtStyle`** verteilt das Zeichnen auf die Kennungen und zeichnet Platzhalter. - **`TileShape`** kennt die acht Nachbarn jeder Kachel. Damit sind Felsmassen außen rund, innen geschlossen und zeigen zum offenen Boden hin ihre Vorderkante. - **`PixelStyle`** zeichnet jede Kennung Pixel für Pixel in ein kleines Bild und hebt es auf: - Boden, weicher und harter Fels und Grundgestein, schräg von vorn gesehen, mit Schatten; - Risse, Splitter und Zielmarke; - Figuren mit 16 × 24 Pixeln, einem Bild im Stand und vier beim Laufen; - die Dinge der Vitrine: toter und lebendiger Boden, Lebensmoos, eine Ranke mit Steinen, eine wachsende Faserpflanze, ein Weidetier und eine erwachende Ruine. - **`WarmStyle`, `PastelStyle` und `GlowStyle`** wählen nur Palette, Spielerfarben, getönte Umrisse und Leuchten. Warm ist der Standard. **Spielfeld** - `MapView` zeichnet in Blöcken von 16 × 16 Kacheln und nach einem Treffer nur die Blöcke um die Kachel neu. - Figuren, eigene Figur und Zielmarke zeichnen über `Art`. - Der eigene Schlag zeigt seine Splitter sofort, auch als Gast. Bricht er den Fels, kommen keine zweiten Splitter. - Die Namen über den Figuren bleiben scharf. - Die Pixel bleiben scharf: Texturfilter „Nearest“, Einrasten auf ganze Pixel und ein ganzzahliger Kamerazoom. **Vitrine und Stilwahl** - „Stilproben ansehen“ im Menü öffnet die Vitrine. 1 bis 3 oder die Knöpfe wechseln den Stil, Esc oder „Zurück“ führt ins Menü. Eine startende Welt, etwa die eines Hosts beim Beitritt, ersetzt die Vitrine. - F2 wechselt den Stil im Spiel, und das Spiel merkt sich die Wahl. `--style=NAME` wählt einen Stil für einen Start, ohne ihn zu speichern. - Das Werkzeug für Bildschirmfotos kennt `--style=NAME` und `--showcase`. **Drumherum** - `docs/KONZEPT.md` 7.4 und 11: Pixelgrafik aus Code statt flacher Vektorzeichnungen. Warm ist der Favorit, Feinheiten folgen nach den Playtests. - `CLAUDE.md` hat einen Abschnitt „Grafik“: wie gezeichnet wird, was eine neue Kennung braucht und wie ein Bild eine Zeichnung ersetzt. Dazu kommt der Wortlaut „nach etwa“ aus #8. - Der Fragebogen `docs/playtests/m1d.md` zeigt sechs Bilder der drei Stile. ## Prüfung - 151 Rust-Tests (unverändert) und 154 GDScript-Tests (vorher 96); rustfmt und Clippy ohne Befund. Ein GDScript-Lauf zeigt die drei bekannten Warnungen aus Tests, die Fehler absichtlich auslösen. - Jede Task wurde von einem eigenen Prüfer gesehen. Vier brauchten Korrekturen: Task 2 zwei Runden, Tasks 3, 5 und 8 je eine. Jede Korrektur war vorab rot und grün geprüft und wurde nachgeprüft. - Die Abschlussprüfung über den ganzen Branch urteilte „mit Korrekturen“. Die Korrekturwelle wurde nachgeprüft, und alle Befunde sind erledigt. Danach wurde nur noch ein Satz im Fragebogen berichtigt. ## Entscheidungen während der Umsetzung 1. Tests dürfen private Teile der Pixelstile aufrufen. Die Bilder sind das sichtbare Verhalten eines Stils. 2. Warm bekommt seine ganze Palette schon in Task 5, auch die Farben, die erst Task 6 zeichnet. 3. Task 2: Bricht der eigene Schlag den Fels, zeigt er keine zweiten Splitter. Die Hülle zählt eigene Schläge pro Kachel, bis der Kern sie meldet. Auch für einen Gast, dessen Meldung erst nach dem nächsten Schlag kommt, stimmt die Zählung. Sofortige Splitter gibt es nur auf Fels. 4. Task 3: Eine startende Welt ersetzt die Vitrine. Sonst läge die Welt eines Gastes, der beim Verbinden die Vitrine öffnet, unter ihr. 5. Task 5: Beim Laufen sinkt der Körper einen Pixel, statt zu steigen. So behält der Kopf in jedem Bild seinen Umriss. 6. Task 8: Die Regel für eine neue Grafik-Kennung in `CLAUDE.md` nennt alle Schritte. 7. Korrekturwelle nach der Abschlussprüfung: - Das Lebensmoos hat links und rechts Platz für seinen Umriss; die Bilder der Vitrine sind neu aufgenommen. - Die Pausenanzeige kehrt zurück, wenn eine Meldung während der Pause abläuft. - Ein Test prüft die Splitter fremder Schläge. - Der Test ohne Bilderordner hängt nicht mehr davon ab, was in `res://art` liegt. - Der Fragebogen nennt die Felsproben und sagt, was sofort kommt und was erst mit der Antwort des Hosts. - Nach der Nachprüfung: Der Fragebogen sagt richtig, dass harter Fels eine Kupferspitzhacke braucht und Grundgestein nie bricht. 8. Die zweite Figur in den Kartenbildern hat dieselbe Farbe wie die erste. Eine zweite Farbe bräuchte einen zweiten echten Spieler in der Sitzung; die Vitrine zeigt zwei Farben. 9. Weitere Punkte sind bewusst nach #11 verschoben, darunter der untere Rand des Lebensmooses. ## Für Steven - Bitte den Probelauf mit `docs/playtests/m1d.md` machen. Danach steht fest, welcher Stil bleibt. - Nach dem Probelauf entscheiden: Sollen Splitter auch auf hartem Fels fliegen, den erst eine Kupferspitzhacke bricht, und auf Grundgestein, das nie bricht? Heute tun sie es (Schritt 4 im Fragebogen und #11). ## Verschoben - #11 sammelt die bewusst verschobenen Punkte aus M1d. - In #8 ist der Wortlaut „nach etwa“ abgehakt; der Test dazu bleibt offen. ## Spieltest `play.bat` im Hauptordner doppelklicken, dann den Fragebogen `docs/playtests/m1d.md` ausfüllen. Für zwei Spieler auf einem Rechner `play-zweites-fenster.bat` dazunehmen. Closes #10 🤖 Generated with [Claude Code](https://claude.com/claude-code)
steven added 17 commits 2026-10-02 13:01:46 +00:00
Acht Tasks bringen das Spielfeld in drei Stilen auf den Bildschirm, alle
aus Code: Scherenschnitt, Kontur und Geometrisch. Jede Grafik hängt an
einer Kennung, eine Vitrine zeigt jeden Stil mit Dingen späterer
Meilensteine, F2 wechselt im Spiel, und das Spiel merkt sich die Wahl.
Dazu kommen die Antworten aus dem Probelauf von M1c: Der eigene Schlag
zeigt seine Splitter sofort, und die Namen über den Figuren bleiben
scharf. Jede Task-Grenze wurde vorab in einer Kopie von main geprüft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nach der ersten Vorschau soll das Spielfeld Pixelgrafik im Stil
klassischer Farmspiele zeigen, aus Code gezeichnet. Konzept 7.4 und 11
sagen das jetzt. Der Plan behält Kennungen, Kartenblöcke, Vitrine und
Stilwechsel und zeichnet statt der drei Vektorstile Pixelgrafik in drei
Abwandlungen: Warm, Pastell und Glimmen. Warm war nach der Probe der
Favorit. Jede Task-Grenze wurde erneut vorab in einer Kopie von main
geprüft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Jede Grafik auf dem Spielfeld bekommt eine Kennung. Art zeichnet sie im
gewählten Stil oder aus einem Bild gleichen Namens unter game/art.
ArtStyle zeichnet vorerst schlichte Platzhalter. TileShape beschreibt
die Nachbarn einer Kachel, damit Felsmassen außen rund und innen
geschlossen gezeichnet werden können. Die drei Stile Warm, Pastell und
Glimmen gibt es schon mit Namen, noch ohne eigene Zeichnungen.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Karte, Figuren und Zielmarke zeichnet jetzt Art. Die Karte zeichnet in
Blöcken von 16 mal 16 Kacheln und nach einem Treffer nur die Blöcke um
die Kachel neu; jede Kachel kennt ihre Nachbarn. Figuren stehen
aufrecht in ihrer Kachel, schreiten und schauen in die Richtung, in die
sie gehen. Der eigene Schlag zeigt seine Splitter sofort, auch als Gast,
und die Namen über fremden Figuren werden in Bildschirmgröße gezeichnet
und bleiben scharf.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Der Kern meldet einen Schlag, der Fels bricht, nur als geänderte Kachel
ohne Spieler. Die Hauptszene merkt sich deshalb die Kacheln ihrer
eigenen Schläge, bis der Kern sie meldet, und zeigt dann keinen zweiten
Splitterwurf. Als Gast kam der zweite eine Rundreise später und sah
wieder verzögert aus. Splitter gibt es nur noch auf Fels, nicht mehr
außerhalb der Karte.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Als Gast kann die Meldung eines Schlags erst nach dem nächsten Schlag
auf dieselbe Kachel ankommen. Ein Merker pro Kachel ging dabei verloren,
und der brechende Schlag zeigte seine Splitter doch zweimal. Die
Hauptszene zählt ihre noch nicht gemeldeten Schläge deshalb pro Kachel
und vergisst sie, wenn die Welt neu abgeglichen wird.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Das Startmenü führt zu einer Vitrine, die den gewählten Stil an einer
kleinen Szene zeigt: Fels, toter und lebendiger Boden, Lebensmoos, eine
Ranke, die Steine in eine erwachende Ruine trägt, eine wachsende
Faserpflanze, ein hüpfendes Weidetier und zwei Spielfiguren. Knöpfe,
die Tasten 1 bis 3 und F2 wechseln den Stil, Esc führt zurück ins Menü.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Ein Gast kann die Stilproben öffnen, während er sich verbindet. Kam die
Welt dann an, lag sie unter der Vitrine, und „Zurück" legte das Menü
über das laufende Spiel. Jetzt schließt die Hauptszene die Vitrine,
sobald eine Welt erscheint.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
F2 wechselt im Spiel den Stil und meldet ihn, --style=NAME wählt ihn
beim Start, und das Spiel merkt sich die Wahl in den Einstellungen.
Das Bildschirmfoto-Werkzeug nimmt Bilder in einem bestimmten Stil und
von der Vitrine auf und zeigt eine zweite Figur mit Namen.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
PixelStyle zeichnet jede Grafik Pixel für Pixel in ein kleines Bild,
16 mal 16 Pixel pro Kachel, und hebt es auf. Fels ist außen rund, innen
geschlossen und zeigt zum offenen Boden hin seine Vorderkante; Figuren
stehen aufrecht und haben vier Laufbilder. Warm bekommt als erster Stil
seine Palette und acht Spielerfarben. Die Texturfilterung steht auf
Nearest, damit die Pixel scharf bleiben.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
In zwei der vier Laufbilder hob sich der Körper um ein Pixel, und der
dunkle Umriss oben am Kopf fiel aus dem Bild. Laufende Figuren
flackerten dadurch am Kopf. Jetzt sinkt der Körper, solange die Beine
gespreizt sind, und über dem Kopf bleibt immer eine Zeile frei.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Toter Boden hat Risse, lebendiger Boden Gras, Blumen und einen
unregelmäßigen Rand. Moos funkelt, die Ranke trägt Blätter, die
Faserpflanze wächst in sechs Stufen bis zu den Fasern und wiegt sich,
das Weidetier zieht im Sprung die Beine an, und die Ruine leuchtet,
wenn sie erwacht.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Pastell zeichnet mit weichen, hellen Farben und Umrissen im dunkleren
Ton der Fläche. Glimmen zeigt eine gedämpfte, kühle tote Welt, in der
alles Lebendige kräftig ist und leuchtet. Beide haben dieselben
Farbnamen wie Warm und je acht Spielerfarben.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
CLAUDE.md beschreibt, wie die Grafik entsteht: Kennungen, Pixelgrafik
aus Code, scharfe Pixel, Bilder, die Zeichnungen ersetzen, Blöcke und
Kachelformen. Das Bildschirmfoto-Werkzeug und --style=NAME stehen bei
ihren Befehlen. Eine stille Verbindung gilt nach etwa
NetLink.TIMEOUT_MSEC als verloren. Ein Fragebogen mit Bildern der drei
Stile begleitet den Probelauf.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Die Regel nannte nur Zeichnung und Farben. Eine neue Kennung braucht
auch eine Konstante in Art, einen Eintrag in Art.IDS und einen Zweig
mit Platzhalter in ArtStyle.draw. Eine fehlende Farbe führt zu einem
Fehler, nicht zu einem Platzhalter.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Das Lebensmoos bekommt links und rechts Platz für seinen Umriss, der
bei zwei von drei Formen abgeschnitten war; die Bilder der Vitrine sind
neu aufgenommen. Die Pausenanzeige kehrt zurück, wenn eine Meldung
während der Pause abläuft. Ein Test prüft die Splitter fremder
Schläge, und der Test ohne Bilderordner hängt nicht mehr davon ab, was
in res://art liegt. Der Fragebogen nennt die Felsproben und sagt, was
sofort kommt und was erst mit der Antwort des Hosts.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Der Satz zu den Splittern sagte, harter Fels und Grundgestein ließen
sich mit der Steinspitzhacke noch nicht brechen. Harter Fels braucht
eine Kupferspitzhacke, Grundgestein bricht nie.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
steven merged commit 27619b6927 into main 2026-10-02 13:01:53 +00:00
steven deleted branch m1d-stilproben 2026-10-02 13:01:53 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: steven/Grovewright#12