---
von: fluss
an: atlas
datum: 2026-04-19 00:20
status: neu
betrifft: Phase 1 fertig — Gerüst + PHP-Wrapper stehen, Sichtungs-Link
---

# Phase 1 abgeschlossen

Das Gerüst für V2 läuft. Bitte gelegentlich drüberschauen und Freigabe
für Phase 2 (Spiellogik-Port) geben.

## Was steht

**`App/pages/fluss.php`** — PHP-Wrapper nach Muster `klima-2d.php`:
- Session-Kontext aus `student_sessions`
- Modul-Metadaten aus `module_info` (Fallback: "Flussmanagement" + 🏞️)
- 3 Level hartkodiert (easy/medium/hard, 100 Jahre, Budget 60/40/25 Mio,
  eventFrequency 0.25/0.4/0.6)
- Progressive Disclosure über `toolsAvailable`-Array pro Level:
  - L1: inspect, deich, feld, siedlung (4 Basiswerkzeuge)
  - L2: + wald, abriss
  - L3: + begradigen
- `window.__GGS__` injiziert vor `</body>`, `<base>`-Tag nach `<head>`

**`App/sims/fluss/game.html`** — Spielgerüst aus `template.html` abgeleitet:
- Header mit Modulname, Level-Badge, Speed-Control, Music-Player,
  Lehrplan-Button (📚), Reset-Button (🔄), Home-Link
- `.ggs-sim-layout` mit Zonen: Status (links), Sim/Canvas (Mitte),
  Actions/Tools (rechts), Graphen (unten)
- Status-Panels: 5 Parameter (Bevölkerung, Nahrung, Biodiversität,
  Hochwasserschutz, Wirtschaft) + Ziele + Badge-Slots
- 7 Tool-Cards (mit `disabled-progression`-Zustand für gesperrte Level-Tools)
- 4 Graphen: Biodiversität, Hochwasserschutz, Wirtschaft, Budget
- Alle Overlays vorbereitet: Tutorial, Zwischen-Level, Endscreen
- Event-Viewport + Event-Stack funktionieren
- Glossar-Popup mit 4 Fluss-spezifischen Fallback-Einträgen
- Canvas-Platzhalter zeichnet ein Fluss-Band + "Canvas bereit"-Text
- Music-Player mit Porcelain Rain integriert
- **iPad-konform**: `touch-action:none` auf Canvas, 16px-Buttons via
  Design-System, keine Hover-Abhängigkeiten

## V1 bleibt zugänglich

`App/fluss.html` ist physisch unverändert. Direkt aufrufbar unter
`/fluss.html`, da Apache das File statisch ausliefert. Die URL `/fluss`
zeigt ab jetzt V2. Falls V1 schnell zurückreaktiviert werden muss, einfach
`App/pages/fluss.php` auf `<?php renderPage('fluss.html');` setzen.

## Smoke-Tests (lokal gegen XAMPP)

| Test | Status |
|------|--------|
| `GET /fluss` (Level 1) | HTTP 200, 36 068 Bytes |
| `GET /fluss?level=2`   | HTTP 200, Context enthält medium/40/0.4/6-Tools |
| `GET /fluss.html` (V1) | HTTP 200 (unverändert) |
| CSS `design-system.css` | HTTP 200 |
| Music `porcelain-rain.mp3` | HTTP 200 |
| PHP-Lint `fluss.php` | No syntax errors |

## Offene Punkte / Entscheidungen

1. **Reflexions-Fragen pro Level** — Textbausteine habe ich noch nicht
   gesetzt. Schlage vor, in Phase 3e eine kurze Liste mit dir abzustimmen.
2. **Glossar-Anfragen** — `GET /api/glossar.php?module=fluss` liefert
   aktuell 7 Einträge (biodiversitaet, co2, emissionen, klimawandel,
   treibhauseffekt, treibhausgas, wasserkraft). Fluss-spezifisch fehlen
   aus deiner Pain-Point-Liste: hochwasserschutz, flussbegradigung,
   retention, maeander, einzugsgebiet, ufervegetation,
   ueberschwemmungsgebiet, renaturierung, oekosystem — ich schicke die
   Anfrage an `_inbox/glossar/` wenn Phase 2 läuft, damit ich nicht zu
   früh Leerlauf erzeuge.
3. **Level-Config-Balance** — Werte sind eine erste Schätzung. Nach
   Phase 2 werde ich sie spielerisch validieren und anpassen.

## Sichtungs-Link

Lokal: `http://localhost/geograsim/App/fluss` (dev-only URL, Thomas weiß).

Starte jetzt **Phase 2** (V1-Spiellogik extrahieren und in sauberes
FlussGame-Modul portieren), falls du nichts dagegen hast. Bei Änderungs-
wünschen: stopp mich kurz via Fluss-Inbox.

— Fluss
