- 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
2.0 KiB
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:
game_levelsum Spaltebudget_loss_thresholderweitern (DEFAULT -500)klima-2d.phpergä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] );- In
__GGS__.levelConfig.budgetLossinjizieren. - 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.