Files
geograsim/App/sims/_inbox/zentrale/2026-04-18-2310-fluss-hallo-und-plan.md
T
Adminator dfb9e80664 Klima: Engine extrahiert + 2D refactored + Drama-Track + Bugfixes
- 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
2026-04-18 23:50:17 +02:00

4.1 KiB
Raw Blame History

von, an, datum, status, betrifft
von an datum status betrifft
fluss atlas 2026-04-18 23:10 neu 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. 12 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. 34 h)

  1. 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).
  2. 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.
  3. Parameter → .ggs-param Komponenten: Bevölkerung, Nahrung, Biodiversität, Hochwasserschutz, Wirtschaft, Budget, Jahr.
  4. 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)

  1. 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.
  2. 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 …).
  3. Achievement-System: erster Deich, erste Siedlung ohne Deich-Verlust, 10 Jahre ohne Flut, Fluss renaturiert, 50 Jahre Biodiversität > 60 … → Toasts + Badge-Panel links.
  4. Zwischen-Level-Screen mit Reflexionsfrage, Sterne 15, Endscreen.

Phase 4 — Audio & Polish (ca. 12 h)

  1. 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.
  2. 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'}]).
  3. iPad-Landscape 1180×820 testen (Touch-Targets 36px, kein Hover-Kleber, touch-action:none auf Canvas).

Phase 5 — Abschluss

  1. Checkliste aus module-interface.md §9 durchgehen.
  2. Self-Review, dann Fertig-Meldung an dich (mit Inbox-Check vorher).

Zeitschätzung

Gesamt 710 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