LEVEL 1 SPIELBAR: game/level.py -- Tiles, Kamera, Tony-Physik, HUD, Musik

Weltkarte: SPACE startet Level 1 (Original-Verhalten per DOSBox-Referenz:
Return tut dort nichts, kein sichtbarer Level-Cursor am Spielstart).

Level 1 = W1L1.MAP -- per Template-Matching des DOSBox-Gameplay-Screenshots
gegen die gerenderten Maps identifiziert (W1L0 ist NICHT Level 1).

game/level.py:
- Level: MAP+ICO+Weltpalette laden, komplette Map einmalig vorrendern,
  Kamera blittet 320x176-Ausschnitt (HUD 320x24 darunter, wie Original).
- Kollision: MAP-ctype Bit 32 = solide (40=Boden, 32=Fuellung; empirisch
  an der Spawn-Plattform verifiziert).
- Tony: TONY.BOB (53 Frames; 8-Phasen-Gehzyklus, gerade=links/ungerade=
  rechts), AABB-Physik gegen das Tile-Grid, laufen/springen/ducken,
  Fusspunkt-basiert. Physikwerte v1 nach Gefuehl (Feinschliff nach Test).
- HUD-Nachbildung (Keks/Item/Score/Herzen/Leben/Uhr 10:00-Countdown) mit
  FON_1B-Ziffern; GAMEBAR-Icons geladen (Original-Ziffern-Palette unklar).
- Levelmusik: ONGAME2 Song 0 als v1-ANNAHME (nach Gehoer korrigieren, wie
  beim Factor5-Sound); wird im Audio-Preload mitgerendert.
- ESC -> zurueck zur Karte (Titelmusik loopt wieder), Fenster-X -> Ende.

Verifiziert: E2E unter Xvfb mit gehaltenen XTEST-Tasten -- laufen (Kamera
scrollt), springen, Plattformkante runterfallen, unterm Brueckenbogen
zurueck, ESC->Karte->Menue->QUIT rc=0. Level-Standbild deckungsgleich zur
DOSBox-Referenz. --once-Regression exit 0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-25 01:17:44 +02:00
co-authored by Claude Fable 5
parent 4517efbdf8
commit 973e290cf6
5 changed files with 420 additions and 7 deletions
+10 -3
View File
@@ -18,9 +18,13 @@ werden keine vorab entpackten Assets benötigt.
- ✅ **Hauptmenü** (HIGHSCORES / ANLEITUNG / OPTIONEN / START / QUIT) mit
blinkender Auswahl, Credits-Ticker, Optionsmenü, Anleitungs- und
Highscore-Tafel — gegen DOSBox-Referenzaufnahmen nachgebaut.
- ✅ **Weltkarte** (statisch; Levelauswahl folgt mit dem Gameplay).
- ⏳ **Nächster Meilenstein:** echter Gameplay-Loop — Tony auf Level `W1L0`
bewegen (Physik, Kollision, Level-Scrolling). Existiert noch nicht.
- ✅ **Weltkarte** — Leertaste startet Level 1 (wie im Original; am Spielstart
gibt es dort keinen sichtbaren Level-Cursor).
- ✅ **Level 1 spielbar (erster Slice):** Tony läuft, springt und duckt sich
durch `W1L1` — Tile-Rendering, Kamera-Scrolling, Kollision, HUD und
Levelmusik. Noch ohne Gegner, Items und Fähigkeiten.
- ⏳ **Als Nächstes:** Items/Kekse einsammeln, Gegner, Karten-Animationen,
weitere Level.
Die vollständige, chronologische Reverse-Engineering-Historie mit allen
Format-Details steht in [NOTES.md](NOTES.md).
@@ -70,6 +74,8 @@ Steuerung:
- **ESC** — am Titelbild: Hauptmenü öffnen (wie im Original); im Menü: zurück
- **Pfeiltasten + Enter** — Menü-Navigation (die Auswahl blinkt, wie im
Original)
- **Im Level** — Pfeile links/rechts: laufen, Leertaste/Pfeil hoch: springen,
Pfeil runter: ducken, ESC: zurück zur Karte
- **Alt+Enter** — zwischen Fenster- und Vollbildmodus umschalten; der Zustand
wird in `kelloggs.ini` gemerkt und beim nächsten Start wiederhergestellt
(Standard ohne `kelloggs.ini`: Fenstermodus)
@@ -90,6 +96,7 @@ game/ Das eigentliche Spiel (startbar per `python -m game`)
audio.py Wrapper um den TFMX-Musik-Renderer (rendert & cached WAVs)
intro.py Boot-/Intro-Sequenz + Ablaufsteuerung
menu.py Hauptmenü, Optionen, Anleitung, Highscores, Weltkarte
level.py Level-Gameplay: Tiles, Kamera, Tony, Kollision, HUD
tfmx_player/ MIT-lizenzierter C-Renderer für TFMX-Musik
original/ Original-DOS-Spieldateien (PCKELL.DAT etc.) — NICHT im Repo
tools/ Reine Dev-Werkzeuge (Assets auspacken / als PNG ansehen)