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:
2026-04-19 20:43:48 +02:00
parent 3931a701e1
commit 3885c83294
54 changed files with 5717 additions and 71 deletions
@@ -0,0 +1,155 @@
---
von: atlas
an: heli
datum: 2026-04-19 22:15
status: neu
betrifft: Willkommen, Heli — Kickoff-Briefing für die eigene Instanz
---
# Heli bekommt eine eigene Instanz
Thomas will die Heli-Rettung aufräumen. Das Modul ist zu groß für die
Zentrale, also bekommst du deine eigene Session nach Vorbild von Klima
und Fluss. Diese Nachricht ist dein Einstieg.
## Deine Rolle
Du bist die **Heli-Instanz**. Du besitzt:
- `App/sims/heli/` (game.html, start.html, landing.html, bewertung.html,
radio-test.html, routes.html, waypoints.js, sounds/, assets/)
- `App/pages/heli.php`, `App/pages/heli-game.php`, `App/pages/modul-heli.php`
- `App/heli.html` (alte statische Version — NICHT ANFASSEN, bleibt für
Nicht-XAMPP-Abruf; Refactor-Ziel ist die PHP-Variante)
Atlas bleibt Plattform-Zentrale (Design-System, APIs, Admin, Templates,
Dashboards, Music-Registry, Crash-Recovery). Anfragen dafür schickst du
an `_inbox/zentrale/`.
## Stand (Kurzfassung, bitte verifizieren)
### Spielfluss (6 Phasen)
1. Auftragswahl (`game.html`) — 3 zufällige aus 9 Missionen
2. Routenplanung (`game.html`) — Pilot gibt Richtung+Distanz, Klick auf
Karte (4 km Toleranz)
3. Start (`start.html` via iframe) — Flappy-Physik, Autostart über URL
4. Kartenflug (`game.html`) — Heli fliegt animiert, Pilot-Kommentare,
1×/2×/4× Speed
5. Landung (`landing.html` via iframe) — Bergrettung
6. Auswertung (`game.html`) — Sterne aus allen Phasen
### Audio
- 100+ TTS-Dateien in `sounds/radio/` + `sounds/nav/`
- 6 Stimmen getestet, Pilot wechselt echo/alloy
- Walkie-Talkie-Effekt (Bandpass 1800 Hz Q=3 + Distortion)
- Touch-Controls für Tablet
### Routen & Karte
- 60 Routen (30 Vorarlberg + 30 Tirol), Basen: Nenzing, Hohenems,
Innsbruck, Zams, Kitzbühel, Lienz
- `routes.html` als Demo-Ansicht
- Karte: Leaflet + OSM, alle Heli-Basen AT, Städte mit KI-Bildern, Berge
- Quartett-Cards bei Klick auf Hubschrauber
### Bekannte offene Punkte (aus Memory, 4 Tage alt)
- Kartenflug: Pilot muss alle Stationen ansagen (TTS teils da)
- Wirkungsklammer (Pre/Post-Fragen) fehlt im Flow
- Level-System UI fehlt (Backend-API existiert)
- Lehrkräfte-Dashboard für Heli-Auswertungen erweitern
## Heute frisch gefixt (Atlas)
Die Tabelle `geo_waypoints` war auf dieser DB nicht angelegt —
`heli-game.php` warf Fatal Error. Seed-Script liegt jetzt unter
`App/php/seed-waypoints.php`; Tabelle hat 70 Waypoints. Falls du
nochmal eine frische DB hast: `curl http://localhost/geograsim/App/php/seed-waypoints.php`.
Schema: `App/assets/data/waypoints.sql` (einfache INSERT-Liste).
## Was Thomas heute Abend will
Er spielt gerade durch und notiert:
- **„Sprachausgabe etwas chaotisch"** — Reihenfolge, Timing, Dopplungen,
Lücken in TTS-Ansagen
- **„Da und dort eine Kleinigkeit"** — sammelt er beim Durchspielen
Er wird dir eine Bug-Liste geben. Priorisiere daraus.
## Konventionen (PFLICHT)
### Sprachregel 4a — Keine Spielsprache
**Nie** „spielen", „Spiel", „Spieler:in", „Game Over", „Mission erfüllt".
**Stattdessen** „arbeiten mit", „Simulation", „Bearbeiter:in",
„Durchgang beendet", „Ziel erreicht". Bildungstheoretische Grundlage:
Wygotski, Lernarbeit statt Spiel.
Siehe `App/docs/module-interface.md`, Abschnitt 4a. Bei Heli besonders
wichtig in Pilot-Ansagen und Endscreens. TTS-Dateinamen kannst du
lassen, **gesprochener Text** aber anpassen — das bedeutet ggf. neue
TTS-Generierung.
### iPad als Referenzgerät
1180×820 (Landscape). Touch-Ziele min 36 px, `touch-action: manipulation`,
kein Hover-Kleber. Media Query `@media (hover: hover)` für Desktop-only.
### Inbox-Check vor „Fertig"
Bevor du Thomas „fertig" meldest, schaue in `_inbox/heli/` — sonst
gehen Antworten verloren.
### Commit-Format
`Heli: <Kurzbeschreibung>` — z.B. `Heli: TTS-Reihenfolge Phase 2 fixiert`.
### `_status.md`
Lege dir eines an unter `App/sims/_inbox/heli/_status.md` mit:
Rolle, aktueller Stand, offene Aufgaben, Blocker. Aktualisiere es
nach jeder Phase.
## Zentrale Dateien
| Datei | Zweck |
|-------|-------|
| `App/sims/heli/game.html` | Haupt-Spielloop (6 Phasen) |
| `App/sims/heli/start.html` | Iframe Phase 3 (Start) |
| `App/sims/heli/landing.html` | Iframe Phase 5 (Landung) |
| `App/sims/heli/waypoints.js` | Routen + Waypoint-Daten (JS-Fallback) |
| `App/sims/heli/sounds/radio/` | TTS Pilot-Funk |
| `App/sims/heli/sounds/nav/` | TTS Navigations-Ansagen |
| `App/pages/heli-game.php` | PHP-Wrapper, lädt WP aus DB |
| `App/pages/modul-heli.php` | Detailseite mit Launcher |
| `App/pages/heli.php` | Übersichtskarte (Leaflet) |
| `App/assets/data/waypoints.sql` | DB-Seed für `geo_waypoints` |
## Test-Links (absolute URLs)
- Spiel: `http://localhost/geograsim/App/heli-game`
- Detailseite: `http://localhost/geograsim/App/modul-heli`
- Übersichtskarte: `http://localhost/geograsim/App/heli`
## Audio-Pipeline
Zentrale SFX-Generierung läuft über `App/scripts/generate-sounds.py`
(ElevenLabs SFX-API). Für neue TTS-Ansagen bitte dort anhängen, nicht
eigene Pipeline aufbauen. Musik-Claims in `App/docs/music-registry.md`
eintragen, wenn du einen Track belegst.
## Crash-Recovery
`App/docs/crash-recovery.md` lesen. Nach Absturz: `_status.md` +
Inbox + Memory prüfen, dann weiter.
## Deine ersten Schritte
1. Bestätige den Empfang dieser Nachricht in `_inbox/zentrale/`
2. Lies `App/docs/module-interface.md` Abschnitte 4a, 4b, 4c, 7b
3. Lege `_inbox/heli/_status.md` an
4. Aktualisiere dein Memory `project_heli_state.md`
5. Spiele einmal selbst durch
(`http://localhost/geograsim/App/heli-game`), um den Ist-Zustand zu
verstehen, und gleiche mit Thomas' Bug-Liste ab
6. Priorisiere mit Thomas: welche Baustelle zuerst
## Bestätigen
- status: gelesen
- Empfangsbestätigung + erste Einschätzung in `_inbox/zentrale/`
- Bei Unklarheiten zur Plattform-Architektur, Design-System, APIs:
frag Atlas (mich) über `_inbox/zentrale/`