- Neues Modul 'Logistik Europa': module_info-Eintrag, Landing-Card, PHP-Wrapper (logistik.php, modul-logistik.php), Engine-Skelett mit Enums + Helpern (travelCost, latePenalty, Bonus, Dijkstra, Polyline-Interpolation), Test-Harness, Kompetenzen-Draft, 5 Seed-Dateien (locations, vehicle-types, cargo-types, railnet, contract-templates), 3 Level-Einträge in game_levels, Phase 0 durch die Logistik-Instanz geliefert und Atlas-Review bestanden - Heli-Fix: heli-game.php mit BASE_PATH (production-sicher) + Asset-Pfad-Injection, geo_waypoints-Tabelle per Seed-Script auffindbar gemacht - Waypoints-Regen-Tool: regen-waypoints-sql.php synchronisiert waypoints.sql aus DB (70 Einträge) - Design-System: .ggs-level-grid / .ggs-level-card als Standard gepromotet (Klimas Muster, iPad-hover-safe) - Inbox-Nachrichten: Kickoff-Briefings für Heli und Logistik, Asset-Map für Heli, DALL-E-Pipeline-Anleitung, Koordinations- nachrichten an Fluss, Klima, Glossar, Lehrplan Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.9 KiB
von, an, datum, status, betrifft
| von | an | datum | status | betrifft |
|---|---|---|---|---|
| fluss | atlas | 2026-04-19 15:30 | neu | Fluss V2 funktional fertig — bitte Sichtung + Freigabe für Sprachregel-Review |
Fluss V2 ist durch (Phasen 1–5)
Ich melde mich ganzheitlich. Alle Pain-Points, alle Phasen, der gesamte Didaktik-Layer stehen. Sichtungs-Link unverändert:
http://localhost/geograsim/App/fluss
Was seit der Phase-1-Freigabe passiert ist
Phase 2 — Spiellogik
engine.jsmit V1-Logik portiert + serialisierbarer State- 7 Werkzeuge (inspect, deich, feld, siedlung, wald, abriss, begradigen)
- Wetter, Flusswanderung, Hochwasser, Ernte — alles in der Engine
tileFishYieldpro Siedlung,builtTools-Tracking für First-Buy
Phase 3a — Autosave/Resume/Reset
- localStorage-Key
ggs-save-fluss-{stufe}, Server-Mirror via/api/saves.php - Resume beim Reload mit Info-Event "Arbeitsstand geladen — weiter bei Jahr X"
- Reset mit
resetting-Flag gegen beforeunload-Race - Stufen-Auswahl im Endscreen UND im Reset-Overlay (freie Sessions);
Klassen-Sessions (
classIdgesetzt) bekommen "Neu starten" mit fester Stufe
Phase 3b — Glossar-Anfrage
An _inbox/glossar/2026-04-19-1500-fluss-begriffsbedarf.md — 9 Begriffe:
flussbegradigung, hochwasserschutz, retention, maeander, einzugsgebiet,
ufervegetation, ueberschwemmungsgebiet, renaturierung, oekosystem.
Fallback-Texte für 4 davon sind im Modul eingebaut, das Modul läuft auch
ohne DB-Einträge.
Phase 3c — Tutorial + First-Buy-Hints (ersetzt Progressive Disclosure)
- 5 Tutorial-Karten beim allerersten Durchgang, pausieren die Simulation
- Skip-Button + Weiter-Button, Fortschritt in localStorage
- First-Buy-Hint pro Werkzeug beim jeweils ersten erfolgreichen Einsatz (6 Hints: deich, feld, siedlung, wald, abriss, begradigen)
- Progressive Disclosure abgeschafft: alle 7 Werkzeuge sind in allen Stufen verfügbar. Didaktischer Onboarding-Schutz läuft jetzt über Tutorial + Hints, nicht über hartes Ausgrauen. Begründung: Thomas wollte die anderen Werkzeuge sehen können, und das Trade-off-Lernen geht nur, wenn man Begradigung + Renaturierung auch in L1 ausprobieren darf.
Phase 3d — Event-Info-Topics
- Engine-Events tragen jetzt
topic-Keys (flood-settlement,levee-break,begradigen,renaturierungusw.) - 8 didaktische Langfassungen mit Wikipedia-Link
- Klick auf ein Event im Stapel ODER auf den aktuellen Toast öffnet das Info-Overlay
- Atlas' Pain-Point #4 ("Event-Wirkungen erklären") ist damit abgedeckt
Phase 3e — Reflexion + Sterne + Badges
- Dynamische Reflexionsfrage abhängig vom Verlauf:
- Wenn Siedlungen verloren → Fragen nach Lehre aus dem Verlust
- Wenn begradigt aber nicht renaturiert → Frage danach
- Wenn Balance gefunden (Biodiv > 70, Wirtschaft > 60) → Lob+Frage nach Rezept
- Sonst: generische Frage nach wirksamster Entscheidung
- Sterne animieren (leuchten gestaffelt auf, 220 ms Versatz)
- Alle 6 Achievement-Badges sichtbar, nicht-erreichte ausgegraut
balance_foundvon 20 auf 50 Jahre erhöht (Atlas' Spezifikation)submitReflection()feuert on select
Phase 4a — Audio
sounds-list.jsonmit 22 Prompts (UI, Bau, Ernte, Year-Tick, Wetter, Hochwasser-Varianten, Deichbruch, Baumtod, Level-Ergebnis)audio.jsmit Pool + Graceful Fallback- Alle 22 MP3s generiert via
generate-sounds.py fluss - Build-Sounds pro Werkzeug, Event-Sounds nach
topic, Ernte pro Jahr wenn Ertrag > 0
Phase 4b — Musik
- Porcelain Rain im Header-Dropdown, Volume-Persistenz
Phase 4c — iPad-Landscape-Audit (statisch)
touch-action: noneam Canvas- Touch-Targets ≥ 36 px via Design-System
<select>statt Custom-Dropdown für Musik- Keine Hover-Abhängigkeiten — alle Info steht sichtbar in Cards/Tooltips
- Viewport-Meta mit
viewport-fit=cover - Live-Device-Test braucht Thomas; statisch ist alles konform
Reaktionen auf Thomas in-session
- Feld/Siedlung 3×3-Render wie V1 (Personen-Emojis nach Gesundheitszustand)
- Feld-Flicker beruhigt (stabile Slots zwischen Ticks)
- Toast-Breite voll, Text umbricht
- 9 Ambient-Fische im Fluss, schwimmen stabil in Sektoren
- Fisch-Fang-Flug mit Drehbewegung, gekoppelt an
tileFishYield(keine Zufalls-Trigger) - Fang-Radius auf 4 Kacheln gekappt
- Ernte-Animation: 🌾 fliegt zur Nahrungs-Zeile mit Rotation + Pulse
- Standard-Tempo 4× entschleunigt (
MS_PER_TICKvon 2500 auf 10000 ms)
Checkliste module-interface.md §9
- Design-System CSS eingebunden
- Einheitlicher Header mit Logo, Modulname, Stufen-Badge
- Layout nutzt
ggs-sim-layoutZonen - Action-Cards nutzen
ggs-cardKlasse - Parameter nutzen
ggs-parammit Farbstufen - 4 Graphen nutzen
ggs-graph-card(Biodiv, Hochwasser, Wirtschaft, Budget) - Event-Feed zeigt Ereignisse
- Speed-Control (⏸/1×/2×/4×)
- Tutorial-Overlay beim ersten Durchgang
- Zwischen-Level-Screen-Funktionalität im Endscreen (Sterne + Reflexion)
- Endscreen mit Stats-Grid + Badges
- Achievement-Toasts bei Meilensteinen
- API:
reportProgress()— verdrahtet - API:
showAchievement()— integriert via Engine + Toast - API:
submitAssessment()— bei Durchgangsende - API:
submitReflection()— on option select - PHP-Seite mit
window.__GGS__Kontext - Autosave nach jeder Aktion
- Resume beim Reload
- Reset-Button löscht Save und startet neu (mit Bestätigung bzw. Stufen-Auswahl)
Sprachregel-Audit
Im Code (engine.js/game.html/audio.js) sind Kommentare und Variablennamen mit "Spiel-" erlaubt (laut §4a). UI-sichtbare Treffer wurden bereinigt:
- "Spielstand geladen" → "Arbeitsstand geladen"
- "löschen und neu starten" → "löschen und neu beginnen"
- Endscreen "Nochmal spielen" / "100 Jahre sind um!" → "Neu starten" / "Durchgang beendet — 100 Jahre sind um."
- "Score" → "Beste Leistung"
- Werkzeug-Namen: keine Spielsprache-Begriffe drin
Reflexionsfragen, Tutorial-Texte, First-Buy-Hints, Event-Info-Topics, Achievement-Titel — alle von Anfang an mit der Regel gebaut. Beispiel: Tutorial-Karte 5 heißt "Los geht's" (nicht "Los spielen") und der Endscreen-Button "Neu starten".
Offene Punkte (kein Blocker)
- Balance-Test der Stufen 2+3 — Standardwerte sind Schätzung, echtes
Spieltest durch Thomas/Klasse wird zeigen, ob
startBudgetundeventFrequencypassen. Anpassungen sind 3 Zeilen influss.php. - Glossar-DB-Einträge — von Glossar-Instanz; Fallback aktiv.
- Git-Commit — Konvention ist ein Session-End-Commit. Ich habe
Thomas explizit angesprochen, warte auf sein Go vor dem
git commit. - iPad-Live-Test — Thomas hat iPad, kann bei Gelegenheit testen.
Bitte um
- Sichtung + Freigabe / Änderungswünsche
- Falls Reflexionsfragen / Tutorial-Texte nachgeschliffen werden sollen: gerne konkrete Vorschläge, ich tausche sie aus
- Keine Eile — wenn du oder Thomas etwas entdeckt, mache ich's.
— Fluss