Skip to content

Neuer Kurs Combat Design & Game Feel mit Godot-4-Testszene (LRN-26) - #19

Merged
hernstev97 merged 4 commits into
mainfrom
feat/lrn-26-combat-design-course
Oct 20, 2026
Merged

hernstev97 merged 4 commits into
mainfrom
feat/lrn-26-combat-design-course

Conversation

@hernstev97

@hernstev97 hernstev97 commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Neuer Bereich Combat Design & Game Feel (LRN-26): Kampfgefühl in Frames messen, beschreiben und in einer eigenen Godot-4-Testszene abstimmen. Motivation und Kulisse ist Delicate Flower (Top-down-Pixelart, 360°-Bewegung, Ausweichen, große Gegner als Bosse), ohne dass der Kurs Kampfdesign für das Spiel vorgibt.

Was neu ist

  • content/combat/, Farbe #FF4D6D, order: 11.
    • 14 Module mit 179 Übungen, etwa 28 h. Übungsarten: choice 27, order 16, output 42, gap 22, bug 26, explain 18, practice 28.
    • Dazu 44 Interview-Karten, 4 Projekte (das letzte ist ein Design-Test als Abschlussprojekt), 47 Glossarbegriffe, ein Spickzettel und eine Berufsseite.
  • Vier Tracks. Die ersten drei sind „Unterwegs“, der letzte ist „Am PC“:
    • Kampf verstehen: Spielgefühl, Eingabe und Puffer, Angriffsphasen, Hitboxen.
    • Ausweichen und Gegner: Ausweichen, Gegnermuster, große Gegner.
    • Rückmeldung und Diagnose: Trefferfeedback, Frust-Diagnose, Vorgaben an einen Agenten.
    • Testszene in Godot: Godot-Start, Testszene Angriff, Testszene Ausweichen, Tuning.
  • Jedes Modul trägt das Feld place aus Add narrative craft course with phone/PC marks and prose exercises (LRN-29) #20: unterwegs bei 10 Modulen, pc bei 4. Die Plattform zeigt die Marke in der Modulliste, im Kopf der Lektion und auf jeder Übungsseite. Unterwegs-Module kommen ohne Godot aus und sind bis auf verlinkte Clips offline lesbar. Das sagt die Bereichsbeschreibung einmal.
  • Alle 16 order-Übungen bestehen aus Sätzen und nutzen lang: prose, damit sie am Handy umbrechen.
  • Godot-Start: ein kurzes Modul, das für sich steht.
    • Installation unter Linux, Szene und Knoten, eine Figur, die sich bewegt.
    • AnimationPlayer mit Hitbox-Timing, Input Map und pixelgenaue Einstellungen (viewport-Stretch, ganzzahlige Skalierung, Nearest-Filter, snap_2d_transforms_to_pixel).
    • Für mehr Tiefe verweist es auf LRN-23.
  • Testszene: ein Gerüst zum Kopieren.
    • Bausteine: AttackData-Resource, Zustandsautomat, Hurtbox/Hitbox, Hitstop, i-Frames, Trainingsgegner mit Telegraph und Log-Overlay.
    • Ein Drehbuch-Skript gibt Eingaben auf den Frame genau vor. Dadurch lässt sich jede Übung am Log nachprüfen.

KI-Regel (Steven, 2026-10-16)

KI darf Code und technisches Gerüst für die Tests schreiben. Jede Kampfmechanik entscheidet Steven, und das Spielgefühl beurteilt er selbst. Daraus folgt für den Kurs:

  • Übungen lassen Designentscheidungen offen.
  • Musterlösungen bewerten Mechanik und Rechnung, nie den Geschmack.
  • „Häufige Fehler“ nennt nur Fehler beim Messen, Rechnen und Umsetzen.
  • Das Abschlussprojekt fordert eine eigene Begründung, nicht einen vorgegebenen Entwurf.

Belege

  • Quellen sind GDC-Vorträge, Postmortems, offizielle Frame-Daten (Stand Oktober 2026) und die Godot-Doku für 4.x stable. Zitate sind gegen das Original geprüft.
  • Den GDScript-Code der Testszene habe ich mit Godot 4.7.2 headless laufen lassen. Alle Frame-Logs in den Lektionen stammen aus diesen Läufen:
    • advance(0) nach play()
    • set_deferred in Signal-Handlern
    • callback_mode_process bei 30, 60 und 144 fps
    • Input.get_vector diagonal und mit Deadzone
  • Ein unabhängiges Review in zwei Runden lief über Fakten, Rechnungen, Code, KI-Regel, Du-Form und Handy-Tauglichkeit. Die Befunde sind eingearbeitet.

Plattform-Änderungen

  • GDScript-Hervorhebung (gdscript, Kürzel gd):
    • Hervorgehoben werden Annotationen, $Knoten/%Unique, StringName &"…" und """-Strings.
    • Antworten werden wie Python verglichen.
    • Die Sprache läuft im Browser nicht, wie Kotlin.
    • Tests stehen in tooling/content.test.ts und src/engine/answers.test.ts. Das HANDBUCH listet die Sprache.
  • Bugfix Inhaltsverzeichnis: document() hat toc nicht zurückgesetzt. Spätere block()-Aufrufe für Übungs-Prompts und Projekt-Briefs haben deshalb Überschriften ins Inhaltsverzeichnis der Lektion gehängt, zum Beispiel Capstone-Überschriften unter postgres/migrationen auf main. Ein Test dafür ist dabei.

Abgleich mit LRN-29 (#20)

Der Branch ist auf main mit #20 (dc8d28e) rebased.

  • Konflikte: Beide waren einzeilig, und beide Ergänzungen bleiben stehen.
  • Ohne Konflikt zusammengeführt: src/engine/answers.ts und answers.test.ts, tooling/content.test.ts, tooling/markdown.ts, die Sprachliste im HANDBUCH und README Zeile 3.
  • Umstellung im Commit „Combat: Ort über place statt Hinweis-Callouts, Reihenfolgen als Fließtext“:
    • place an allen 14 Modulen gesetzt.
    • Die 14 Callouts „Unterwegs“/„Am PC“ am Lektionsanfang und die Präfixe in den Track-Titeln entfernt.
    • lang: prose für die 16 order-Übungen. Vorher scrollten in jeder davon Zeilen bei 360 px seitlich, jetzt keine mehr.

Geprüft

Alle Prüfungen liefen auf dem Stand nach dem Rebase.

  • pnpm content:check: OK. Für combat sind es 14 Module, 179 Übungen, 44 Karten, 4 Projekte, 47 Begriffe. Die 11 Hinweise betreffen nur narrative.
  • pnpm verify combat: 29 Prüfungen, 0 fehlgeschlagen.
  • pnpm test (329 Tests), pnpm lint, pnpm typecheck und pnpm build sind grün.
  • pnpm links: Im Bereich combat gibt es keine Probleme. Die 10 Meldungen betreffen bestehende Links in Kotlin, Linux und Python.
  • Im Browser durchgeklickt, auch mobil. Ein Playwright-Lauf mit 360 px Breite gegen den Dev-Server ergab:
    • Alle 179 Übungen sind mit ihrer eigenen Musterlösung gelöst und als „Richtig.“ erkannt.
    • Die Marken stimmen: 10 × Unterwegs und 4 × Am PC im Lektionskopf, dieselben 14 auf der Bereichsseite und die passende Marke auf jeder Übungsseite.
    • Kein alter Ort-Callout ist übrig.
    • Keine Zeile einer order-Übung scrollt seitlich.
    • Weder Lektionen noch Übungen laufen waagerecht über, und es gibt keine Seitenfehler.
  • Offline: Ein temporärer Test mit der PWA-Konfiguration öffnet angriffsphasen, godot-start und frust-diagnose samt Übung ohne Netz bei 360 px. Die Marke ist sichtbar, und es gibt weder Überlauf noch Fehler.

Screenshots

Handy: Lektionskopf mit Marke Handy: Reihenfolge als Fließtext Handy: Track mit Am-PC-Modul
Handy 360 px: Kopf der Lektion Angriffsphasen mit der Marke „Unterwegs“ Handy 360 px: order-Übung Angriff-Ablauf, die Zeilen brechen um, statt seitlich zu scrollen Handy 360 px: Track D „Testszene in Godot“ mit dem Modul Godot-Start und der Marke „Am PC“

Desktop: Lernpfad mit Track C „Rückmeldung und Diagnose“, jedes Modul mit Marke „Unterwegs“

Desktop: Kopf der Lektion Godot-Start mit der Marke „Am PC“

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: bbd1131a-ae20-41f3-a434-e73627eaadef
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

hernstev97 and others added 4 commits October 17, 2026 09:01
Codeblöcke mit `gdscript` (auch `gd`) bekommen Farben für Annotationen,
Node-Pfade, StringName- und NodePath-Literale und das Label
„GDScript“, in Lektionen wie in Übungen. Lücken und Korrekturen
vergleichen GDScript wie Python ('a' = "a"). Ausgeführt wird es
nirgends, wie Kotlin. Das Handbuch nennt die neue Sprache.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… Blöcke mehr

createMarkdown().document() gab sein toc-Array zurück, und spätere
block()-Aufrufe (Übungstexte, Projekt-Briefings) schrieben weiter
hinein. Dadurch standen die Überschriften eines Projekt-Briefings im
Inhaltsverzeichnis des zuletzt geladenen Moduls, auf main etwa
„Auftrag“ und „Was du lieferst“ in postgres/migrationen, mit Ankern,
die es in der Lektion nicht gibt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
14 Module in vier Tracks, 179 Übungen (choice 27, order 16, output 42,
gap 22, bug 26, explain 18, practice 28), 44 Interview-Karten, vier
Projekte mit Abschlussprojekt, 47 Glossarbegriffe, Spickzettel und
Berufsseite. content:check ohne Hinweis, verify mit 29 Prüfungen.

- Unterwegs (Handy): Spielgefühl, Eingabe und Puffer, Angriffsphasen,
  Hitboxen, Ausweichen, Gegnermuster, große Gegner, Trefferfeedback,
  Frust-Diagnose, Vorgaben für Coding-Agenten. Analyse an verlinkten
  Clips (Sakurai, GDC) und kleine Python-Modelle, die im Browser
  laufen.
- Am PC: Godot-Start (Installation unter CachyOS, Szenen, Bewegung mit
  Input.get_vector, AnimationPlayer mit Hitbox-Timing, Input Map,
  Pixel-perfect), Testszene Angriff, Testszene Ausweichen und
  Trainingsgegner, Tuning als Experiment.
- Jedes Modul ist im Track-Titel und mit einem Hinweis am Anfang der
  Lektion als „Unterwegs“ oder „Am PC“ markiert. Ein Modulfeld dafür
  bringt LRN-29; danach auf `place` umstellen.
- Der GDScript-Code der Testszene ist mit Godot 4.7.2 headless
  geprüft, jedes zitierte Log stammt aus einem echten Lauf.
- KI-Regel: Code und technisches Gerüst kommen aus dem Kurs, jede
  Kampfmechanik und jeder Wert bleiben bei Steven. Designaufgaben sind
  Selbstkontrolle ohne Musterwert.
- Farbe #FF4D6D, order 11.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…text

Seit LRN-29 kennt die Plattform `place`. Die 14 Module tragen jetzt
`place: unterwegs` (10) oder `place: pc` (4); die Callouts „Unterwegs“ und
„Am PC“ am Lektionsanfang und die Präfixe in den Track-Titeln entfallen.
Was die Callouts zusätzlich sagten (Clips brauchen Netz, PC-Lektionen lassen
sich unterwegs lesen), steht einmal in der Bereichsbeschreibung.

Alle 16 order-Übungen bestehen aus deutschen Sätzen und scrollten bei 360 px
seitlich; mit `lang: prose` brechen sie um.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hernstev97
hernstev97 force-pushed the feat/lrn-26-combat-design-course branch from e3259a8 to 36ba3f0 Compare October 17, 2026 07:09
@hernstev97
hernstev97 merged commit 7c08705 into main Oct 20, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant