Charakter-System, Wasser, Renn/Idle-Animationen, echtes HUD

Stefans Feedback-Paket (7 annotierte Screenshots):
- Player-Klasse mit CHAR_DEFS: Tony (RENNEN mit ALT -- echte Rad-Animation,
  Frames 26-33) und Smacks (SCHWIMMEN, Frames 37-44; kein Rennen) spielbar;
  Coco/Toucan vorbereitet. Idle-Packungs-Animation nach 5s Stillstand
  (Tony 44-49, Smacks 31-36). Sprung-Frames 18/19 (gestreckt).
- Sprunghoehe kalibriert (-360, ~72px: "Tony kommt mit dem Kopf an den Ast").
- WASSER (Stefans Fund: nur bei DOSBox machine=vgaonly sichtbar): water_y
  pro Level + dunkelblaues Overlay; Nicht-Schwimmer verlieren alle 5s ein
  Herz, 0 Herzen -> Respawn/Leben-1, 0 Leben -> Karte. Smacks schwimmt
  schadlos (traege Wasserphysik, Space = Schwimmstoss).
- TUER mit Kopf-Symbol (Level-1-Haus): ALT im STEHEN oeffnet das
  Charakter-Auswahlmenue "MIT WEM MOECHTEST DU SPIELEN?" -- WECH_1-4 =
  farbige Koepfe, WECH_5-8 = grau (nicht verfuegbar; Level 1: nur
  Tony+Smacks). Auswahl blinkt, Wechsel uebernimmt die Position.
- HUD nach Referenz-Screenshot: Keks-Box mit Cerealien-Icon (ITE0-3) des
  aktiven Charakters, Herz-Box als 2x2-Grid, Charakter-Kopf-Box (zeigt die
  gewaehlte Figur) + Leben, Uhr.
- Level-Metadaten (Charaktere/Wasserlinie/Tuer/Spawn) v1 als LEVEL_INFO-
  Konstanten -- Original-Quelle ist vermutlich das .ARE-Format (Header
  enthaelt BE-Pixelkoordinaten, Analyse in NOTES.md, noch offen).

Verifiziert: E2E (Xvfb+XTEST) -- Tuer->Menue->Smacks, HUD wechselt auf
Smacks-Kopf+Puff-Icon, Wasser-Overlay sichtbar, ESC/QUIT rc=0; --once ok.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-25 10:49:09 +02:00
co-authored by Claude Fable 5
parent 0bb66b73a4
commit 07b347b607
3 changed files with 369 additions and 180 deletions
+42
View File
@@ -1438,3 +1438,45 @@ Stefans annotierter Screenshot (4 Punkte), alle behoben:
Physik-Feel laut Stefan gut. Levelmusik-Song prueft er nach Gehoer.
Offen bleiben: Tueren oeffnen (ALT an Tuer, Schluessel-Logik), Items,
Gegner, Karten-Animationen.
## 25.07.2026 (3) -- Stefans grosses Feedback-Paket: Charaktere, Wasser, Animationen, HUD
Referenz: 7 annotierte Screenshots von Stefan + DOSBox (machine=vgaonly --
Stefans Fund: das WASSER wird nur bei vgaonly gerendert, VGA-Palette-Effekt!).
**Asset-Funde:**
- WECH_1-4.PCC = die 4 Charakter-Koepfe FARBIG, WECH_5-8 = GRAU (= im Level
nicht verfuegbar) -- exakt das Tuer-Auswahlmenue "MIT WEM MOECHTEST DU
SPIELEN?". ITE0-3.PCC = die 4 Cerealien-HUD-Icons (Flake/Puff/Loop/Choco).
FROS/SMAC/COCO/LOOP_W1-3.ICO = SAMMEL-Cerealien-Animationsphasen pro Welt
(fuer Items spaeter). TONY-Frames: 18/19=Sprung, 24/25=Ducken, 26-33=
RENN-"Rad" (Stefans Fuesse-wie-ein-Rad), 44-49=Idle-Packung. SMACKS: 51
Frames, 18/19=Ducken, 24/25=Sprung, 31-36=Idle-Packung, 37-44=SCHWIMMEN,
45-47=Wasserblasen.
- ARE-Format angeschaut (W1L1: 6690B, 3 Regionen; Header ab Byte 8 enthaelt
Big-Endian-Pixelkoordinaten-Paare, u.a. (256,592)~Spawn-Kopfposition) --
noch NICHT geknackt, v1 nutzt LEVEL_INFO-Konstanten. TODO.
**Implementiert (game/level.py):**
- Player-Klasse mit CHAR_DEFS (Tony/Smacks/Coco/Toucan): Tony rennt (ALT/
Shift, Rad-Animation), Smacks schwimmt (kein Wasserschaden, traege
Physik, Space=Schwimmstoss), Idle-Packungs-Animation nach 5s Stillstand,
Sprung-Frames korrigiert (18/19 gestreckt statt 16/17).
- Sprunghoehe kalibriert: -360 (~72px ~ Stefans "Kopf an den Ast").
- WASSER: water_y pro Level, dunkelblaues Overlay, Nicht-Schwimmer verlieren
alle 5s ein Herz; 0 Herzen -> Leben-1 + Respawn; 0 Leben -> Karte.
- TUER (Level-1-Haus, Tiles 12-13/37-39): Kopf-Symbol drueber; ALT im STEHEN
(nicht beim Rennen) oeffnet das Charakter-Menue (WECH-Koepfe, nicht
verfuegbare grau, Auswahl blinkt), Wechsel uebernimmt Position.
- HUD nach Referenz: Keks-Box MIT Cerealien-Icon des aktiven Charakters,
Herz-Box als 2x2-GRID, Charakter-Kopf-Box (zeigt IMMER die gewaehlte
Figur) + Leben, Uhr.
**Verifiziert:** E2E (Xvfb+XTEST): Tuer -> Menue -> Smacks gewaehlt -> HUD
zeigt Smacks-Kopf+Puff-Icon, Wasser-Overlay sichtbar, laufen/springen/
ducken als Smacks, ESC/QUIT rc=0. --once Regression exit 0.
**Offen:** ARE knacken (Charaktere/Wasser/Tueren/Spawns pro Level echt),
Items einsammeln (FROS_W1-Rotationssprites + ctype 4), Smacks-Blickrichtungs-
Paritaet pruefen, Coco/Toucan-Frames zuordnen (aktuell Tony-Layout
angenommen), Kamera-Hoehe feinjustieren, Gegner, Tuer-/Schluessel-Logik.