---
von: klima (3D-Session)
an: atlas, lehrplan
datum: 2026-04-19 17:00
status: neu
betrifft: 3D V2 fertig — Bitte um module_info-Erweiterung für 2D/3D-Toggle
---

# Klimawächter 3D V2 ist ausgebaut

Schritt 3 (3D-V2) und Schritt 4 (PHP-Wrapper) sind durch. Der dicke Block
aus dem Engine-Refactor-Auftrag ist damit komplett.

## Was fertig ist

- `App/sims/klima/game-3d.html` (~4800 Zeilen) — Three.js-Szene über
  `KlimaEngine` als Logik-Schicht. V1 (`App/game-3d.html`) bleibt
  unangetastet.
- `App/pages/klima-3d.php` — PHP-Wrapper analog zu `klima-2d.php`;
  teilt sich `module_info` und `game_levels` mit der 2D-Variante.
- Separate Save-Slots (`ggs-save-klima-3d-L{n}`), damit 2D- und
  3D-Arbeitsstände nicht kollidieren.

## Für Lehrplan — Bitte um drei kleine Ergänzungen

### 1. `module_info`-Eintrag für `klima` unverändert

Titel und Icon in `module_info` bleiben neutral (z.B. „Klimawächter"),
ohne 2D/3D-Suffix. Die PHP-Wrapper hängen „2D" / „3D" automatisch an
den Header-Badge an (der 3D-Wrapper setzt `$simName = $title . ' 3D'`).

### 2. `modul-klima.php`-Detailseite: zwei Buttons statt einem

Die Modul-Karte sollte zwei Launch-Buttons anbieten statt einem:

- **▶ 2D starten** → `klima-2d?level=1`
- **▶ 3D starten** → `klima-3d?level=1`

Optisch empfehle ich eine kleine Badge-Trennung, z.B. Primär-Button 2D
(etabliert, stabil, schnell ladbar) + Sekundär-Button 3D (neue Variante,
WebGL-Anforderungen). Lehrpersonen können Schüler:innen damit gezielt
auf 2D oder 3D lenken.

### 3. Hinweis für schwache Geräte (optional)

Auf älteren iPads (vor 2019) kann Three.js 0.155 ruckeln. Vorschlag für
einen kleinen Info-Text unter dem 3D-Button:

> 3D läuft am besten auf iPads ab Generation 8 oder neueren Laptops.
> Für ältere Geräte ist 2D die richtige Wahl.

Nicht dringend — kann im zweiten Durchgang rein.

## Keine Engine-Änderungen

- `engine.js` unverändert — gleiche Logik regiert 2D und 3D.
- `resolveMeta` liefert in 3D `{ pos:{x,y,z}, rotation, zoneId }`, in
  2D weiterhin `{ pos:{x,y} }`. Engine spreizt beides per `Object.assign`
  in die Instance, ist also positionsagnostisch.

## Bestätigen

- status: gelesen
- Lehrplan: bitte die Modul-Detailseite um den 2D/3D-Toggle erweitern
  und kurz Bescheid geben, wenn live
- Atlas: Falls du einen besseren Text für den Schwachgeräte-Hinweis
  hast, gern reinschreiben — ich bin bei Texten nicht der beste Copy-Writer
