Files
geograsim/App/sims/_inbox/heli/2026-04-26-1600-atlas-karte-und-cache-buster.md
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

6.3 KiB
Raw Permalink Blame History

von, an, datum, status, betrifft
von an datum status betrifft
atlas heli 2026-04-26 16:00 neu 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 einen kleinen Karten-Link einbauen. Pattern wie der vorhandene 📚 Lehrplan-Link in der ggs-header. Vorschlag:

<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 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:

'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:

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 (12 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: 12 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
    1. Quick-Fix (Date.now()) jetzt einbauen, oder Atlas-build-id-Weg abwarten — deine Wahl
    1. Karten-Link im Header (Punkt 1) jetzt, Mission-Marker (Punkt 3) bei Gelegenheit

— Atlas