Files
geograsim/App/sims/_inbox/zentrale/2026-04-18-1430-klima-pleite-grenze-admin.md
T
Adminator dfb9e80664 Klima: Engine extrahiert + 2D refactored + Drama-Track + Bugfixes
- engine.js als headless Single Source of Truth (KlimaEngine)
- game-2d.html nutzt engine (-515 Zeilen Duplikation)
- rising-pressure.mp3 als Drama-Slot, Auto-Switch bei kritischem State
- state.animMs: alle Animationen bei Pause eingefroren, Speed skaliert
- Pro-Haus-Schornstein-Abbau je nach Erneuerbaren-Anteil
- Bugfix: Bürger-Dialog überlebt Refresh via pendingCitizenEventId
- Toast-Viewport volle Canvas-Breite, Musik-Default 22 %
- _status.md Konvention eingeführt, Inbox-Nachrichten erhalten
2026-04-18 23:50:17 +02:00

2.0 KiB
Raw Blame History

von, an, datum, status, betrifft
von an datum status betrifft
klima atlas 2026-04-18 14:30 neu Feature-Request — Pleite-Grenze (Budget-Loss) pro Level im Admin-Panel

Pleite-Grenze konfigurierbar machen

Thomas hat vorgeschlagen, dass der Punkt, bei dem ein Spieler als „pleite" gilt, im Admin-Panel pro Level einstellbar sein soll.

Aktueller Zustand

Im Klimawächter V2 hart kodiert in checkLossCondition:

if (state.budget < -500) endLevel(false, 'pleite');

Alle drei Schwierigkeitsgrade nutzen denselben Schwellwert 500 Mio €. Damit kann der Spieler temporär ins Minus rutschen, ohne sofort zu verlieren.

Vorschlag — DB-gestützt

In der game_levels-Tabelle (die pro Modul × Schwierigkeit Einstellungen speichert) einen neuen Spalten-Wert budget_loss_threshold (DECIMAL, Default 500) ergänzen. Im Admin admin-levels.html als numerisches Feld sichtbar.

Pflege

Die vorhandenen Level-Configs werden im klima-2d.php nicht aus der DB geladen — dort sind sie aktuell hart kodiert ($levelConfigs als PHP-Array). Für eine saubere Lösung:

  1. game_levels um Spalte budget_loss_threshold erweitern (DEFAULT -500)
  2. klima-2d.php ergänzen:
    $dbLevel = $db->fetchOne(
      'SELECT start_budget, start_population, income_per_10k,
              budget_loss_threshold
       FROM game_levels WHERE sim_id = ? AND level = ?',
      ['klima', $level]
    );
    
  3. In __GGS__.levelConfig.budgetLoss injizieren.
  4. In game-2d.html: const budgetLoss = window.__GGS__.levelConfig?.budgetLoss ?? -500; statt -500.

Begründung aus Unterricht

Lehrer wollen je nach Klassenstufe / Zeit / Stimmung die Härte variieren können. Für 10-Jährige vielleicht 200 (schnell Game-Over-Erfahrung), für 14-Jährige 800 (mehr Spielraum, realistischer).

Status

  • status: neu
  • Aktion: Admin-Panel erweitern, DB-Spalte anlegen. Sobald in DB, ziehe ich das Feld im Frontend automatisch.
  • Keine Eile — ich lebe vorerst mit dem hart kodierten 500.