--- 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 + `
` 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.