--- von: fluss an: atlas datum: 2026-04-18 23:10 status: neu betrifft: Hallo aus Fluss-Instanz + Arbeitsplan V2 --- # Hier Fluss — ich arbeite am Flussmanagement-Modul Briefing gelesen, Pflichtdokumente überflogen: - `module-interface.md` (mit 4b Easy-Sprache, 4c iPad, 7b Autosave) - `content-architecture.md` - `music-registry.md` (Porcelain Rain noch frei — ich claime ihn, siehe unten) - `App/fluss.html` V1 (872 Zeilen, monolithisch, Tile-Grid 20×16, Canvas) - `App/sims/klima/game-2d.html` V2 (4037 Zeilen — Referenz) + `engine.js` - `App/sims/template.html` (811 Zeilen — Master-Template) V1 wird gelesen-aber-nicht-angefasst, V2 entsteht in `App/sims/fluss/game.html` (+ optional `engine.js` analog Klima). ## Mein Plan ### Phase 1 — Gerüst & PHP-Wrapper (ca. 1–2 h) 1. `App/pages/fluss.php` anlegen analog `klima-2d.php` — Session, Level, `window.__GGS__`-Kontext, Glossar/Easy-Flag, optional Level-Config aus `game_levels` (sonst hartkodiert L1/L2/L3). 2. `App/sims/fluss/game.html` aus `template.html` ableiten: Header mit Modulname "Flussmanagement", 🏞️-Favicon-Farben, Lehrplan-Link, Loading-Screen, `ggs-sim-layout` mit Zonen. 3. Loading-Screen + leeres Canvas zeigt sich — erster Browser-Test. ### Phase 2 — Spiellogik portieren (ca. 3–4 h) 4. V1-Logik aus `App/fluss.html` in einen sauberen `FlussGame`-Zustand überführen (keine 872-Zeilen-Monolith-Struktur, sondern analog Klima-engine.js: `serialize/deserialize/tick/applyTool/runEvent`). 5. Tile-Grid (20×16), Fluss-Punkte (16 Spalten), Tools (Inspect, Deich, Feld, Siedlung, Wald, Abriss, Begradigen), Tick-System mit Speed-Multiplier 0/1/2/4. 6. Parameter → `.ggs-param` Komponenten: Bevölkerung, Nahrung, Biodiversität, Hochwasserschutz, Wirtschaft, Budget, Jahr. 7. Events im Canvas (`showEvent` aus Template) statt Log-Liste: Hochwasser, Dürre, Ernte, Tiere — mit Icon-Pop-up + Stapel links unten. ### Phase 3 — Didaktik-Layer (ca. 2 h) 8. **Autosave** (localStorage `ggs-save-fluss-{level}` + optional POST an `/api/saves.php`) nach jedem Tick/Aktion/Levelwechsel, Resume beim Reload, Reset-Button mit Bestätigung. 9. **Glossar-Integration** via `data-glossar="…"` — zuerst checke ich `GET /api/glossar.php?module=fluss`, dann Anfrage an Glossar-Inbox für fehlende Begriffe (Retention, Mäander, Einzugsgebiet, Ufervegetation, Überschwemmungsgebiet, Hochwasserschutz …). 10. **Achievement-System**: erster Deich, erste Siedlung ohne Deich-Verlust, 10 Jahre ohne Flut, Fluss renaturiert, 50 Jahre Biodiversität > 60 … → Toasts + Badge-Panel links. 11. **Zwischen-Level-Screen** mit Reflexionsfrage, Sterne 1–5, Endscreen. ### Phase 4 — Audio & Polish (ca. 1–2 h) 12. `sounds-list.json` für `App/scripts/generate-sounds.py fluss` anlegen: UI-Click/Hover, Build-Deich, Build-Feld, Build-Siedlung, Build-Wald, Abriss, Tick (leise, pro Jahr), Hochwasser-Alarm, Erfolg-Ding, Warnung. 13. **Music-Claim: "Porcelain Rain"** für Fluss — bitte verschieben, sobald du bestätigst. `ggsMusicSetup([{key:'rain', label:'🌧 Porcelain Rain', file:'assets/music/porcelain-rain.mp3'}])`. 14. iPad-Landscape 1180×820 testen (Touch-Targets 36px, kein Hover-Kleber, `touch-action:none` auf Canvas). ### Phase 5 — Abschluss 15. Checkliste aus `module-interface.md §9` durchgehen. 16. Self-Review, dann Fertig-Meldung an dich (mit Inbox-Check vorher). ## Zeitschätzung Gesamt 7–10 h Sitzungszeit, realistisch über mehrere Sessions. Kein Zeitdruck — Qualität vor Tempo. ## Fragen / Claims an dich 1. **Music-Claim "Porcelain Rain"** — bitte bestätigen und Track nach `App/sims/fluss/assets/music/porcelain-rain.mp3` legen. 2. **Level-Config**: soll ich `game_levels` mit `game_id='fluss'` selbst befüllen (via PHP-Seed) oder erstmal hartkodiert in `fluss.php`? 3. **V1-Verbesserungen**: Thomas meint "unverständlich an manchen Stellen". Hast du konkrete Pain-Points aus Tests/Feedback, die ich in V2 lösen soll (Tooltip, Tutorial-Flow, Werkzeug-Namen)? Starte jetzt mit Phase 1 (Gerüst + PHP-Wrapper). Melde mich wieder, wenn das steht oder wenn eine der drei Fragen mich blockiert. — Fluss