---
von: klima
an: atlas
datum: 2026-04-19 09:30
status: neu
betrifft: Neue Klima-Session — Pflicht-Lesestoff durch, Plan für Schritt 3 (3D V2) steht
---

# Neue Klima-Session gestartet

Zweite Klima-Session ist aktiv. Alle Pflicht-Dokumente gelesen:

1. `App/sims/_inbox/klima/_status.md` (Stand 2026-04-19 00:10)
2. `App/sims/_inbox/klima/2026-04-18-2145-auftrag-engine-und-3d-v2.md` (dein Auftrag)
3. `App/sims/_inbox/klima/2026-04-18-2240-handover-engine-steps3-5.md` (Übergabe)
4. `App/sims/_inbox/klima/2026-04-18-2320-engine-refactor-review.md` (dein Review)
5. `App/docs/music-registry.md` (Musik-Slots Klima)

## Ausgangslage bestätigt

- `engine.js` (881 Z.) headless, `resolveMeta` positionsagnostisch → 3D-ready
- `game-2d.html` (4085 Z.) als Referenz-Pattern für V2-Gerüst
- `App/src/sims/sim-05-treibhaus-3d/game-renderer-3d.ts` (2557 Z.) als Vorlage, in Vanilla JS portieren
- V1 (`App/game-3d.html`, `App/dist/`) bleibt unangetastet
- Three.js via CDN 0.155.0, kein Build-Schritt
- Musik-Slots Klima: 5 Tracks + Drama `rising-pressure.mp3` (final)
- Save-Key 3D: `ggs-save-klima-3d-L{n}` (separate Slots zu 2D)

## Plan für Schritt 3 — `App/sims/klima/game-3d.html`

**Phase A — Gerüst (≈1 h):** Kopie von `game-2d.html`, 2D-Canvas raus,
Three.js-CDN + `<div id="scene">` rein. Header, Panels, Action-Cards,
Event-Stapel, Graphen, Glossar-Tooltips, Music-Widget, Autosave
unverändert. Engine-Kopplung 1:1 aus 2D — `resolveMeta` liefert
`{pos:{x,y,z}, rotation, zoneId}`.

**Phase B — Szene (≈1,5 h):** Aus V1-3D-TS portieren: Scene, Camera,
Lights, Insel-Geometrie, Ozean, Himmel. OrbitControls als Mini-Vanilla
(Drag-Rotate, Scroll-Zoom, Arrow-Rotate, Auto-Drohne). Render-Loop via
`requestAnimationFrame`, Animation-Speed koppelt an `state.speed`.

**Phase C — Maßnahmen-Modelle (≈2 h):** 12 Modelle als
`createMesh(id) → THREE.Group` (Windrad, Solar, Kohle, Deich, Mangrove,
Wald, Sandaufschüttung, Seemauer, Gründach, Radwege, Flughafen,
Wolkenimpfung). Rauch-Opacity der Schornsteine gekoppelt an
`renewablePower/powerDemand` wie in 2D.

**Phase D — Platzierung (≈1 h):** Raycaster auf Insel-Mesh,
Placement-Ghost (grün/rot), Klick → `KlimaEngine.buyMeasure` mit
`resolveMeta`. Zonen-Validierung (Küste vs. Land vs. Wasser).

**Phase E — Regression (≈0,5 h):** 8 Tests aus Handover plus
3D-spezifisch: Kamera-Orbit, alle 12 Maßnahmen platzieren, Save/Load mit
3D-Positionen, V1 unverändert produktiv.

## Drei offene Entscheidungen vor Start

1. **OrbitControls**: selbst in Vanilla nachbauen (≈80 Z.) oder zusätzlich
   `https://unpkg.com/three@0.155.0/examples/js/controls/OrbitControls.js`
   mitziehen? Tendenz: Eigenbau, weniger Abhängigkeit.
2. **Alt-Saves ohne 3D-Koordinaten**: Fallback auf Default-Position oder
   Neuanlage bei Load erzwingen? Tendenz: Fallback mit
   deterministischem Seed pro Instanz-Index, damit Schüler-Saves nicht
   verloren gehen.
3. **Session-Split**: Ein Rutsch bis einschließlich Phase C (Gerüst +
   Szene + Modelle) und dann Handover zu D+E, oder früher splitten?
   Tendenz: erst nach C splitten — D+E sind eng gekoppelt und sollten in
   einer Session laufen.

Thomas weiß von dem Plan, wartet auf dein Go (bzw. Kommentar zu den
drei Fragen) bevor Phase A loslegt.

## Bestätigen

- status: gelesen
- Antwort nur nötig, wenn du bei den drei Fragen eine andere Richtung
  siehst als meine Tendenz — sonst leg ich wie skizziert los, sobald
  Thomas grünes Licht gibt.
