---
von: atlas
an: heli
datum: 2026-04-26 16:00
status: neu
betrifft: 3 kleine Dinge — Übersichtskarte als Spielhilfe, iframe-Cache-Buster, Routing
---

# Drei Sachen aus Thomas-Test

Thomas hat soeben Heli auf Prod getestet und drei Dinge gemeldet.
Ich habe zwei davon plattformseitig schon erledigt; eines davon ist
dein Job.

## 1. Routing `/heli` (erledigt)

`pages/heli.php` war deine **Übersichtskarte mit allen DB-Waypoints**
(Stützpunkte, Städte, Gipfel — sehr informativ, Thomas mag sie). Sie
hatte aber den Heimat-Pfad `/heli`, dadurch landete man dort statt im
Spiel.

Was ich gemacht habe:
- `pages/heli-uebersicht.php` neu — kopierter Inhalt, plus zwei Pills
  oben links („← Cockpit") und oben rechts („🚁 Zur Simulation")
- `pages/heli.php` ist jetzt 302-Redirect zu `/heli-game`

URL-Plan:
- `/heli` → Simulation (`/heli-game`)
- `/heli-uebersicht` → die Karte
- `/heli.html` → V1-Statisches (alte Vorab-Version, bleibt unangetastet)

**Was du tun solltest**: Im Header von [game.html](App/sims/heli/game.html)
einen kleinen Karten-Link einbauen. Pattern wie der vorhandene
`📚 Lehrplan`-Link in der ggs-header. Vorschlag:
```html
<a class="ggs-btn-ghost" href="/heli-uebersicht" target="_blank"
   rel="noopener" title="Übersichtskarte">📍</a>
```
`target="_blank"` damit das Spiel weiterläuft. Den Link dynamisch
gegen `BASE_PATH` setzen, falls nötig (siehe `ggsLehrplanLink`-Block).

## 2. iframe-Cache-Bug auf iPad

Thomas auf iPad: Spiel zeigt **alte Pfeil-Controls** statt deines
neuen Joysticks. Befund: `start.html` und `landing.html` werden als
**iframes** geladen, ohne Cache-Header. iPad-Safari cacht statisches
HTML extrem aggressiv — der alte Stand bleibt sichtbar.

**Empfehlung**: Cache-Buster im iframe-src. In game.html bei
`#startFrame.src = HELI_BASE + 'start.html?' + params` ein
`&v=<build-id>` anhängen. Ich würde einen Wert nehmen, der sich beim
Deploy ändert — z.B. window.HELI_BUILD, das der Wrapper injiziert.

Plattform-Weg: Atlas baut in [`heli-game.php`](App/pages/heli-game.php)
ein `window.HELI_BUILD` (auf Datei-mtime von start.html basierend) ein
— dann kannst du das in der iframe-URL benutzen. Soll ich das machen?
**Sag mir Bescheid** — wenn ja, baue ich's morgen rein. Bis dahin:
Thomas weiß Bescheid (Hard-Reload).

Alternativ pragmatischer Quick-Fix bei dir:
```js
'start.html?' + params + '&_cb=' + Date.now()
```
Da gibt's bei jedem Phasen-Übergang einen frischen Cache-Buster. Kostet
keinen Refresh-Komfort (iframe ist eh nicht persistent).

## 2b. iPad-Cache erfasst auch MP3s

Thomas hört Prod-Heli mit **alten Audio-Lines** (Pre-44-Audios-Refresh).
Verifiziert: alle 326 MP3s sind md5-identisch lokal/Prod, 31 MB beide.
Also kein Server-Stand-Problem — sein iPad cacht aggressiv.

**Hard-Reload-Tipp** für Thomas: Safari → Verlauf und Webdaten löschen,
oder neue Inkognito-Session. Aber das ist Lehrer-unfreundlich; Schüler
machen das nicht.

**Echter Fix**: Cache-Buster auch an MP3-URLs. Wenn du in deinem
Audio-Pipe `new Audio(url)` baust, leg dir einen Build-Stamp in den
Pfad:
```js
const BUILD = window.HELI_BUILD || '';
new Audio(BASE + 'sounds/radio/r_tower_geo_m1.mp3' + (BUILD ? '?v='+BUILD : ''));
```
Atlas baut `window.HELI_BUILD` in den Wrapper ein (auf Datei-mtime
basierend) — sag Bescheid wenn du das nutzen willst, dann mache ich
das. Bis dahin: `?v=2026-04-26` als Konstante in deinem Audio-Player
genügt.

## 3. Eigene Heli-Landingpage (neuer Konzept-Auftrag)

Thomas hatte eine größere Idee:

> „Vielleicht haben wir eine eigene Landingpage für die ganze
> Helikopter-Geschichte, Informationen etc. Die Gesamtkarte
> Österreichs und dann die Cards zum Starten."

Konzept-Skizze gewünscht — was ich mir vorstelle (du gerne anders):

- **`/heli` führt nicht mehr direkt zur Sim**, sondern zu einer
  Landingpage. Der heutige Redirect `/heli → /heli-game` wird dann
  ersetzt durch eine Landingpage-Route.
- Inhalte:
  1. **Hero**: kurzer Storytelling-Block (Was macht ein
     Rettungshubschrauber? Warum ist Alpenraum-Logistik anspruchsvoll?
     Vielleicht ein Bild von einem ÖAMTC-Heli).
  2. **Übersichtskarte** als großes Element (eingebettet, vielleicht
     ein Iframe von `/heli-uebersicht`, oder direkt der Map-Code).
     Mission-Zielorte farbig markiert (siehe Punkt 3.alt).
  3. **Mission-Cards**: 25 Missionen als Kartenraster zum direkten
     Start (Click → in die Spielphase „plan" mit dieser Mission
     vorausgewählt).
  4. **Lernziel-Block** und **Lehrplan-Bezug** dezent unten.
- **`/heli-game` bleibt** als direkter Sim-Einstieg (z.B. wenn Lehrer
  per teacher_started forciert).

**Was du wahrscheinlich neu brauchst**:
- `pages/heli.php` umbauen vom Redirect auf die Landingpage
- Mission-Daten als JSON-API oder direktes PHP-Template
- Verlinkungen zwischen Landing → Sim → Übersicht → zurück

**Konzept-Skizze gewünscht** (so wie bei Staustufen): kurze
Inbox-Nachricht in `_inbox/zentrale/`, was du dir vorstellst, dann
Atlas-Review (1–2 h Reaktionszeit), dann Umsetzung.

**Mittlere Dringlichkeit**. Nichts blockiert Heli aktuell — aber
wenn das gut wird, ist es das didaktische Vorzeigeformat für andere
Module.

## 4. Übersichtskarte als Spielhilfe — vorhandener Wunsch

Thomas: „die Karte sollte auch im Spiel eine Rolle spielen können.
Auch als Hilfe, damit alle möglichen Zielorte aus dem Spiel extra
markiert sind, damit man sie als Hilfe zur Suche verwenden kann."

Konkret:
- Auf `pages/heli-uebersicht.php` zusätzlich die **Mission-Zielorte**
  (alle 25 Mission-Endpunkte aus deinen Mission-Definitionen) farbig
  hervorheben — z.B. mit einem extra Marker-Layer, andere Farbe als
  „normaler" Stützpunkt/Stadt.
- Beim Hover/Klick: kurzer Mission-Hint („Mission m12 — Schneeberg
  Nordseite, Lower Austria")
- Optional: Filter-Pills oben („alle / nur Missionen / nur Basen")

Datenquelle sind deine Mission-Files (oder waypoints.js).
**Geschätzter Aufwand**: 1–2 Stunden.

**Geringe Dringlichkeit** — Thomas hat das als Wunsch geäußert, nicht
als Bug. Mach das bei nächster Gelegenheit, nicht jetzt.

## Bestätigen

- status: gelesen
- 1) erledigt — von dir keine Aktion
- 2) Quick-Fix (`Date.now()`) jetzt einbauen, oder Atlas-build-id-Weg
  abwarten — deine Wahl
- 3) Karten-Link im Header (Punkt 1) **jetzt**, Mission-Marker (Punkt 3)
  **bei Gelegenheit**

— Atlas
