--- von: staustufen an: atlas datum: 2026-04-26 (Burst-Session) status: neu betrifft: Level 1 fertig — bereit für Thomas-Test --- # Staustufen Level 1 — fertig Hallo Atlas, Level 1 von „Staustufen — Wasserkraft in der Kaskade" ist durch. Briefing-DoD ist abgehakt: | # | Kriterium | Status | |---|-----------|--------| | 1 | `http://localhost/geograsim/App/staustufen` lädt ohne JS-Fehler | ✅ HTTP 200, Wrapper-Injection verifiziert | | 2 | Mode-Check (locked/free/teacher_started) | ✅ via `staustufen.php` (dein Code) | | 3 | Pumpe/Turbine bedienbar, Wasser fließt sichtbar | ✅ 4-stufige Segmente + Tank-Balken-Animation | | 4 | 5-Tage-Bilanz läuft (Tag wechselt automatisch) | ✅ 60 Ticks (12/Tag), 1.5 s/Tick (1×) bzw. 0.4 s (4×) | | 5 | End-Screen `.ggs-endscreen` mit Versorgung + Verluste + Note | ✅ Plus Narrative + Lücke-KPI + Restart-Button | | 6 | Assessment-Calls feuern | ✅ `started` / 30 s `running` / `completed` an `${API_BASE}/assessment` im echten Schema (`simId`/`processLog`/`results`/`duration`/`completedPhases`) — dein Briefing nannte `{action, sim_id, session_id, payload}`, die echte `assessment.php` will den Heli-Schema-Stil. Hab den Heli-Stil verwendet, weil die DB-Spalten danach geschnitten sind. | | 7 | Sprachregel 4a komplett | ✅ Grep auf "Spiel\|spielen\|Spieler\|Sieg\|Niederlage" über `App/sims/staustufen/` ergibt **null Treffer** | | 8 | iPad Landscape 1180×820, Touch ≥ 36 px | ✅ Layout-Breakpoint 900–1199 aktiv (215+250 Spalten), Pumpe/Turbine-Buttons 40 px, Speed-Buttons 36 px, End-/Hint-Buttons 40 px | ## Mechanik in zwei Sätzen Bedarfskurve `[6, 12, 22, 6, 22]` pro Tick gegen freie Einspeisung 12. Tag 1 + 4 sind Pump-Tage (Überschuss vorhanden), Tag 3 + 5 sind Turbinen-Tage (Defizit). Wer das schafft, kriegt **A**, wer Tag 1/4 nicht pumpt aber sonst sauber ist, kriegt **B/A** (geht knapp), wer über-pumpt fällt auf **C/D**, wer gar nichts macht **D**. ## Dateien - `App/sims/staustufen/game.html` — DOM mit ggs-header (kein Music-Player, Reduktion akzeptiert), Tank-Visualisierung, Steuerpanel, Bedarfsgraph, Hint-/End-Overlays - `App/sims/staustufen/engine.js` — Engine (State, Tick, Bilanz, Bewertung, Assessment, Hints) ## Eine technische Anmerkung — kein Blocker Dein `staustufen.php`-Wrapper rewriten die typischen `../../`-Pfade für CSS/Favicon, aber nicht den Engine-Skript-Pfad. Logistik.php hat einen Eintrag `'src="engine.js"' => 'src="' . $base . 'engine.js"'`, deiner nicht. Ich habe das mit dynamischem Script-Load via `window.STAUSTUFEN_BASE` umgangen — funktioniert sowohl unter Wrapper als auch bei direktem Datei-Aufruf. Wenn du der Konsistenz halber den Logistik-Stil willst, reicht ein str_replace-Eintrag in `staustufen.php`. Dann kann ich den dyn-Loader in `game.html` zurückbauen. Sag Bescheid. ## Anti-Scope eingehalten - Kein zweites Level, keine Wetter-/Solar-/Wind-Mechanik - Keine Sounds, keine Bilder - Kein eigenes API-Endpoint, kein Refactoring von Plattform-Code - Lehrplan-Anker (parallel von Lehrplan-Instanz) habe ich NICHT abgewartet ## Bereit für - Deploy auf `geograsim.at` - Thomas-Test im Browser (iPad bevorzugt) - Falls Bilanz nicht griffig genug: Konstanten in `engine.js` Zeile 26–43 zentral anpassbar (`PUMP_RATE`, `TURB_RATE`, `DEMAND_PER_DAY`, `INIT_TOP`) fertig. — Staustufen