Klimawächter — Entwicklungs-Log

Erkenntnisse, offene Punkte und nächste Schritte · Stand 2026-04-11 (3 Schwierigkeitsgrade + Bilanz + Steg-Rampe)

1. Didaktisches Ziel und Zielgruppe

Der Klimawächter ist kein Spiel um einen high score. Er soll Schülerinnen und Schülern der 1.–4. Klasse Sekundarstufe I (ca. 10 – 14 Jahre) vermitteln, dass:

Kinder haben typischerweise Fehlkonzepte wie „Ozonloch = Klimawandel" oder „Wenn ich hier einen Baum pflanze, ist alles gut". Das Spiel arbeitet dezent dagegen an.

2. Architektur-Überblick

Frontend-Stack

  • TypeScript + Vite (keine Framework-Schicht)
  • Three.js für die 3D-Version
  • 2D-Version nutzt Canvas-API direkt
  • Multi-Page HTML (game.html, game-3d.html, erdbeben.html, energiemix.html)

Kernklassen

DateiRolle
src/core/game-engine.tsAbstract base: Ticks, Resources, Goals, Save/Load, Subscribe-Pattern, Citizen-Events
src/ui/game-ui.tsWiederverwendbare UI-Komponente mit Panels, Graphen, Auto-Save, End-Screen
src/ui/info-overlay.tsKindgerechte Begriffserklärungen (Info-Buttons öffnen Overlay)
src/sims/sim-05-treibhaus/game.tsKlimawächter-Spiellogik
src/sims/sim-05-treibhaus/game-renderer.ts2D-Canvas-Renderer
src/sims/sim-05-treibhaus-3d/game-renderer-3d.tsThree.js 3D-Renderer

Save-System

Alle Spielstände werden pro Spiel-ID in localStorage persistiert. Version-Bump (v2) verhindert, dass alte inkonsistente Saves geladen werden. Ein resetting-Flag verhindert, dass der beforeunload-Handler beim Reset sofort wieder speichert.

3. Mechanik-Erkenntnisse aus Trace-Tests

Es existiert ein automatischer Test unter tests/unit/sim-05-trace.test.ts, der das Spiel rein rechnerisch über 75 Jahre für verschiedene Strategien durchspielt und die Werte tabellarisch ausdruckt. Starten mit:

npx vitest run sim-05-trace --reporter=verbose

Balance-Status (aktuell kalibriert)

StrategieErgebnis 2100Status
Nichts tunTemp 17.9°C, Flut 52%
Nur WälderTemp 17.1°C❌ (knapp)
Nur SolarTemp 15.5°C, Budget knapp
Nur WindTemp 15.5°C, Budget ok
Nur DeicheTemp 17.9°C — Klima läuft durch
Wälder + Solargrenzwertig — meist verloren⚠️
Solar + Wind + 1 Deichalle Goals ✅

Didaktische Aussagen, die aus dem Trace sichtbar werden

  • Einzelmaßnahme = zu wenig. Man muss kombinieren.
  • Deiche allein retten kurzfristig Häuser, aber nicht das Klima.
  • Aufforsten ist wichtig, aber als Einzelmaßnahme zu langsam.
  • Wind ist stärker als Solar, aber wegen Wartungskosten nicht immer die beste Wahl.
  • Das Klima hat eine Trägheit von ca. 8 %/Jahr für Temperatur und 6 – 8 %/Jahr für Meeresspiegel.

Bug-Historie (chronologisch)

  1. Subclass-Felder nicht im Save → Werte driften zwischen UI und Rechnung. Fix: serializeSubclass() Hook.
  2. Wasser stand still im 3D-Renderer → Protection wurde von waterY abgezogen. Fix: Wasser steigt jetzt absolut, Protection wirkt nur auf Submerge-Check der Häuser.
  3. Solar überpowered → CO₂ fiel unter vorindustriell. Fix: Maßnahmen-Reduktion halbiert, CO₂-Floor 350 ppm.
  4. Reset-Button ohne Wirkung → beforeunload schrieb Stand wieder ins localStorage. Fix: resetting-Flag.

4. UI / Interaktion

done Auto-Save

Jede Aktion → debounced Save nach 1.5 s. Sofortiges Save bei Tab-Wechsel oder Page-Verlassen. Auto-Load beim erneuten Öffnen.

done Bürger-Beschwerden mit Choices

Modaler Dialog mit Avatar, Message und 2 – 3 Choice-Karten. Jede Wahl hat echte Konsequenzen. Spiel pausiert automatisch bis der Spieler entscheidet. Bibliothek: 7 Events über die 75 Jahre verteilt (Fischerin, Forscherin, Bauer, Hotel, Jugend-Streik, Industrie, Bergdorf).

done Reset-Button

Im Header oben rechts (🔄). Löscht den Save-Slot und lädt die Seite neu.

done Header-Refactor

Save/Load/Finish/Reset/Home sind jetzt reine Symbole mit Tooltips. Speed-Buttons mit Zahlen (×1, ×2, ×4) und Kamera-Controls (+, −, ⊙) sind in den Header gewandert. Das spart Platz unten und macht die Graphen größer.

done Guided / Free Mode

GameUI unterstützt mode: 'guided' mit totalDurationSec. Im Guided-Mode wird msPerTick automatisch so gesetzt, dass das Spiel genau die vorgegebene Zeit dauert, und Speed-Buttons > 1 sind unsichtbar. Bereit für späteres Lehrer-Backend.

done Strom-System (Phase A der SimCity-Erweiterung)

Neue Ressource ⚡ Strom, Anzeige als „Bedarf/Kapazität MW" in der Status-Box. Bedarf = 1 MW pro 1.000 Einwohner. Kapazität ergibt sich aus den gebauten Kraftwerken:

  • ☀️ Solar = +1 MW (klein, sauber)
  • 🌬️ Wind = +3 MW (mittel, sauber, teuer)
  • 🏭 Kohle = +8 MW (sofort viel Strom — aber +1.5 ppm CO₂/Jahr)

Bei Stromausfall (Bedarf > Kapazität): siehe nächste Karte.

done „Bäume verheizen" bei Stromausfall

Wenn der Strom ausfällt, fällen die Bewohner pro Jahr 2 Bäume und verheizen das Holz. Konsequenzen:

  • +0.6 ppm CO₂ pro Jahr (Holzfeuer)
  • Bäume gehen sichtbar ins „dead"-Stadium über (schwarzer Strunk, Totenkopf-Sprite)
  • Tote Bäume binden kein CO₂ mehr → langfristig schlimmer
  • Ab 3. Stromausfall-Jahr in Folge: Bevölkerung wandert ab

Game führt einen Counter treesChoppedForHeat; Renderer liest ihn pro Frame und tötet die Differenz an lebendigen Bäumen.

done Maßnahme abreißen (50 % Rückzahlung)

Neue Methode game.demolishMeasure(id). UI: 🗑-Button auf jeder Karte mit count>0. Renderer entfernt das zuletzt platzierte Mesh, gibt Geometrie/Material frei. Erlaubt Reparatur falscher Frühentscheidungen (z.B. Kohlekraftwerk wieder loswerden, sobald Wind genug liefert).

done Lina Fischerin nach hinten verschoben

Citizen-Event „Lina, die Fischerin" war auf Tick 4 — viel zu früh. Ist jetzt auf Tick 15 (≈ 1 Minute Spielzeit). Spieler kann zuerst seine Strom-Versorgung in den Griff bekommen, bevor das erste Bürger-Dilemma kommt.

done Drei Schwierigkeitsgrade (Lernen / Üben / Profi)

Ein DifficultyConfig-System mit 3 Levels (🟢/🟡/🔴) bestimmt Startbudget, Steuern, Stromausfall-Schonfrist und die Härte der Klima-Folgen. Spieler wählt beim ersten Start in einem Selector-Overlay; danach klickt er das Level-Badge oben in der Topbar, um zu wechseln (mit Bestätigung, weil das Spiel neu startet).

  • 🟢 Lernen: 750 Mio € Start, 220 €/10k, 3 Jahre Schonfrist, halbe Klima-Folgen — sehr viel Puffer
  • 🟡 Üben: 550 Mio €, 175 €/10k, 1 Jahr Schonfrist — Standard, Strategie nötig
  • 🔴 Profi: 400 Mio €, 145 €/10k, 0 Schonfrist, 1.5× Klima-Folgen — kein Spielraum

URL-Parameter ?level=N erzwingt ein Level (für späteren Lehrer-Override). Save-File enthält das Level für Resume.

done Maßnahmen halbiert (zweite Runde) + Wald-Wartung-Fix

Alle Maßnahmen-Werte (Cost, Upkeep, CO₂-Wirkung, Schutz) erneut halbiert — gleicher Effekt pro Mio €, aber doppelt so viele individuelle Bauschritte. Mehr Streuung, mehr Spielmöglichkeiten.

Wald-Upkeep zusätzlich auf 0.5 Mio €/Jahr reduziert (statt 1) — damit ist Wald jetzt die günstigste Option pro CO₂-Reduktion (12.5 Mio €/ppm vs Wind 15, Solar 17.9). Das passt zur didaktischen Erwartung „Bäume sind die Naturlösung".

done Jahres-Bilanz unter Budget

Kleine Tabelle direkt unter dem Budget-Wert in der Status-Box zeigt: + Steuern, (+ Tourismus), − Wartung, (− Klima-Schaden), = Netto pro Jahr. Tourism- und Klima-Zeilen sind dynamisch sichtbar. Netto wird grün/rot gefärbt. Lebt mit der gedämpften Display-Animation.

Hat in der ersten Spielanalyse sofort sichtbar gemacht, dass eine Bilanz von −9 Mio €/Jahr auf Dauer nicht überleben kann.

done Steg mit Rampe ans Land

Der Holzsteg am vorderen Strand hat jetzt eine schräge Holz-Rampe, die vom Inland-Niveau (auf der Insel selbst) hochsteigt zur Plankenkante (Y=0.85). Damit bleibt der Steg auch bei steigendem Meeresspiegel über die Rampe erreichbar. Die Rampe sitzt physisch auf dem Inselhang und wird vom Wasser nicht überspült.

idee Mitigation vs. Adaptation — didaktische Diskussion

Aktuell könnte ein Spieler theoretisch nur Deiche/Hochwasserschutz bauen und ignorieren, dass CO₂ die Ursache ist — solange Temperatur knapp unter 17 °C bleibt. Das vermittelt die falsche Lektion „Mauern reichen". Ideen zum Adressieren:

  • Kipppunkt: Ab Sealevel > 80 cm sind Deiche nicht mehr genug — sie reißen bei Sturmflut
  • Wartung steigt mit Sealevel: Erosion macht Deiche teurer im Unterhalt
  • Trace-Test: „Nur-Deich-Strategie" muss langfristig verlieren

Wichtig für die nächste Iteration — adressiert die Kernfrage „Sind Deiche wirklich eine gute Lösung?" (Antwort: nur als Pflaster, nicht als Heilung).

todo Drag-and-Drop Platzierung — Phase B (kurzfristig!)

Option A aus dem ursprünglichen Interaktions-Konzept. Maßnahmen werden aus dem Shop auf die 3D-Insel gezogen, statt automatisch platziert. Standortabhängige Wirkung: Solar im Vulkan-Schatten = −20% Effizienz, Wind am Hang = +20% etc.

Voraussetzung für Phase C (Wohnungsbau): Sobald Schüler Häuser kauft, muss er sie auch SETZEN können — sonst frustrierend.

todo Wohnungsbau + Neuankömmlinge — Phase C

SimCity-artige Bevölkerungsdynamik:

  • Start mit ~10 Häusern statt 18 (heute schon 6.000 Einwohner statt 10.000)
  • Neue Maßnahme 🏘 Wohnhäuser (cost 120, +1.000 Kapazität, +1 MW Bedarf)
  • Neuankömmlinge-Queue: pro Tick wollen X Familien zuziehen — kommen nur, wenn freie Wohnungen UND Strom da sind
  • Visuell: 2-3 wandernde Sprite-Figuren am Strand (Billboards wie das Boot)
  • Tutorial gestaffelt: erst Strom (Phase A), dann Bauen (Phase B), dann Wohnen (Phase C)

todo Krisen-Mini-Spiele

Bei Sturmflut, Hitzewelle, Murenabgang ein kurzes (10 – 20 s) Klick-Mini-Spiel. Erfolg mildert den Schaden.

5. Visualisierung (2D / 3D)

done Insel als Keil (schrägansteigend)

Beide Renderer (2D und 3D) bilden die Insel nicht mehr als Pfannkuchen ab, sondern als geneigtes Plateau. Die vordere (niedrige) Seite taucht absichtlich ins Wasser — so ist schon am Start sichtbar, dass man nicht die ganze Insel retten kann.

  • 3D: Ellipse, per PlaneGeometry aus 80×96 Segmenten, mit Noise-Verformung und Keil-Interpolation von 1.3 (hinten) nach −0.15 (vorne).
  • 2D: horizontaler Side-View, linke Seite hoch (Vulkan), rechts niedrig ins Meer. landSurface(x)-Helper interpoliert Y-Koordinate für Platzierung von Häusern, Bäumen, Solaranlagen.

done Vulkan mit Gletscher-Deckel

Im 3D-Renderer steht ein erloschener Vulkan am hohen Ende der Insel. Sein oberes Drittel ist von einem opaken Gletscher-Deckel bedeckt. Der Deckel schrumpft mit steigender Temperatur:

  • 15.0 °C → 100 % Eis
  • 16.5 °C → 50 % Eis
  • 18.0 °C → 0 % Eis (kahler Fels)

Im 2D-Renderer wird derselbe Gletscher-Deckel als Trapez mit Alpha-loser Farbverschiebung dargestellt.

done Heizwolken über Häusern ohne Solar

Jedes Starthaus im 3D hat eine kleine graue Sphere-Wolke über dem Dach. Sobald der Spieler Solar oder Gründächer baut, verschwindet pro Anlage eine Wolke. Direkte visuelle Verbindung zwischen Maßnahme und Effekt.

done Graphen mit Zonen und Referenzlinien

Die neue GraphConfig unterstützt:

  • Farbbänder (z. B. "Klimaziel", "Kritisch", "Gefahr" bei Temperatur)
  • Horizontale Referenzlinien (z. B. "Klimaziel 17°C", "Strand", "Häuser")
  • Sinnvolle Y-Range pro Graph — ausreizen der Höhe statt Standard 0..1
  • Live-Wert als farbiger Badge rechts oben

Graphen sind jetzt etwa doppelt so groß wie vorher (90 px statt ca. 36 px Höhe).

idee Weitere Visualisierungs-Ideen

  • Strand schrumpft mit steigendem Meer sichtbar
  • Mangroven-Streifen am Rand, die bei Sealevel>20 cm verfärben/sterben
  • Verstreute Tote-Pflanzen-Sprites auf überschwemmtem Gebiet
  • Vulkan kann bei >18°C tatsächlich „Lava" aus dem Krater drücken (Kipppunkt)

6. Erklärungen für Kinder 10 – 14

Das neue info-overlay.ts-Modul bietet eine Bibliothek kindgerechter Erklärtexte. Jeder Graph und jedes wichtige Event hat einen (i)-Button, der ein Overlay öffnet. Zielgruppe: 10 – 14 Jahre, einfache Sätze, max. 3 Absätze plus "Merksatz".

Bisher erklärte Begriffe

Alle Texte sind in src/ui/info-overlay.ts als INFO_TOPICS-Objekt zentralisiert und können leicht ergänzt werden. Aufruf: openInfoOverlay(INFO_TOPICS.co2)

7. Weitere Folgen des Klimawandels

Bisher hat das Spiel folgende Folgen von Temperatur- und Meeresspiegelanstieg modelliert:

FolgeAuslöserWirkung
Häuser werden überflutetSealevel > 35 cm (nach Protection)Bevölkerungsrückgang
Vegetation stirbt (Mangroven, Felder)Sealevel > 20 cmWarn-Event mit Info-Overlay
Trinkwasser versalztSealevel > 35 cmBudget-Abzug pro Jahr + Bevölkerungsrückgang
Gletscher schmilztTemp > 16.8 °CWarn-Event, visueller Schrumpf
Bergdorf gefährdetTemp > 16.5 °C (Tick 50)Citizen-Event (Anna vom Bergdorf)

idee Noch fehlende Folgen

  • Korallenbleiche — Meereswärme > +1.5°C → Fisch-Ertrag sinkt → Budget
  • Tropenstürme häufiger — Kleine Schadensereignisse mit kurzem Mini-Spiel
  • Waldbrände — Wenn zu viele Wälder + zu hohe Temperatur → ein Wald brennt ab
  • Klima-Migration — Bevölkerung wandert zur nächsten Insel ab (negativer Trend)
  • Kipppunkte — Ab bestimmten Schwellwerten unumkehrbare Verschlechterung

8. Offene Punkte & nächste Schritte

Kurzfristig

Mittelfristig

Langfristig