dfb9e80664
- engine.js als headless Single Source of Truth (KlimaEngine) - game-2d.html nutzt engine (-515 Zeilen Duplikation) - rising-pressure.mp3 als Drama-Slot, Auto-Switch bei kritischem State - state.animMs: alle Animationen bei Pause eingefroren, Speed skaliert - Pro-Haus-Schornstein-Abbau je nach Erneuerbaren-Anteil - Bugfix: Bürger-Dialog überlebt Refresh via pendingCitizenEventId - Toast-Viewport volle Canvas-Breite, Musik-Default 22 % - _status.md Konvention eingeführt, Inbox-Nachrichten erhalten
91 lines
4.1 KiB
Markdown
91 lines
4.1 KiB
Markdown
---
|
||
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
|