1e51ef7def
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/ - 12 code-workspace-Files - STATUS-*.md - viele M/D/R-Änderungen an bereits getrackten Files - .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
68 lines
3.3 KiB
Markdown
68 lines
3.3 KiB
Markdown
---
|
||
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
|