Atlas: Logistik-Gerüst + Heli-Fix + Waypoints-Regen + Level-Picker
- 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>
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
---
|
||||
von: fluss
|
||||
an: atlas
|
||||
datum: 2026-04-19 15:30
|
||||
status: neu
|
||||
betrifft: 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.js` mit V1-Logik portiert + serialisierbarer State
|
||||
- 7 Werkzeuge (inspect, deich, feld, siedlung, wald, abriss, begradigen)
|
||||
- Wetter, Flusswanderung, Hochwasser, Ernte — alles in der Engine
|
||||
- `tileFishYield` pro 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 (`classId` gesetzt) 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`, `renaturierung` usw.)
|
||||
- 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_found` von 20 auf **50 Jahre** erhöht (Atlas' Spezifikation)
|
||||
- `submitReflection()` feuert on select
|
||||
|
||||
### Phase 4a — Audio
|
||||
- `sounds-list.json` mit 22 Prompts (UI, Bau, Ernte, Year-Tick, Wetter,
|
||||
Hochwasser-Varianten, Deichbruch, Baumtod, Level-Ergebnis)
|
||||
- `audio.js` mit 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: none` am 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_TICK` von 2500 auf 10000 ms)
|
||||
|
||||
## Checkliste module-interface.md §9
|
||||
|
||||
- [x] Design-System CSS eingebunden
|
||||
- [x] Einheitlicher Header mit Logo, Modulname, Stufen-Badge
|
||||
- [x] Layout nutzt `ggs-sim-layout` Zonen
|
||||
- [x] Action-Cards nutzen `ggs-card` Klasse
|
||||
- [x] Parameter nutzen `ggs-param` mit Farbstufen
|
||||
- [x] 4 Graphen nutzen `ggs-graph-card` (Biodiv, Hochwasser, Wirtschaft, Budget)
|
||||
- [x] Event-Feed zeigt Ereignisse
|
||||
- [x] Speed-Control (⏸/1×/2×/4×)
|
||||
- [x] Tutorial-Overlay beim ersten Durchgang
|
||||
- [x] Zwischen-Level-Screen-Funktionalität im Endscreen (Sterne + Reflexion)
|
||||
- [x] Endscreen mit Stats-Grid + Badges
|
||||
- [x] Achievement-Toasts bei Meilensteinen
|
||||
- [x] API: `reportProgress()` — verdrahtet
|
||||
- [x] API: `showAchievement()` — integriert via Engine + Toast
|
||||
- [x] API: `submitAssessment()` — bei Durchgangsende
|
||||
- [x] API: `submitReflection()` — on option select
|
||||
- [x] PHP-Seite mit `window.__GGS__` Kontext
|
||||
- [x] **Autosave nach jeder Aktion**
|
||||
- [x] **Resume beim Reload**
|
||||
- [x] **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)
|
||||
|
||||
1. **Balance-Test der Stufen 2+3** — Standardwerte sind Schätzung, echtes
|
||||
Spieltest durch Thomas/Klasse wird zeigen, ob `startBudget` und
|
||||
`eventFrequency` passen. Anpassungen sind 3 Zeilen in `fluss.php`.
|
||||
2. **Glossar-DB-Einträge** — von Glossar-Instanz; Fallback aktiv.
|
||||
3. **Git-Commit** — Konvention ist ein Session-End-Commit. Ich habe
|
||||
Thomas explizit angesprochen, warte auf sein Go vor dem `git commit`.
|
||||
4. **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
|
||||
Reference in New Issue
Block a user