f22c5ebbfe
- PHP/MySQL Backend (XAMPP + Produktionsserver) - Front-Controller, API-Endpunkte, Session-Management - Flussmanagement-Simulation (Echtzeit, Punkt-basierter Fluss) - Stadt & Raumplanung (Prototyp, Top-Down Kachelsystem) - Klimawaechter 3D: Deiche kleiner, Baeume kippen, Budget angepasst - persistence.ts: Dualer Speicher (localStorage + Server-API) - 6 Unit-Test-Dateien fuer bestehende Simulationen Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
594 lines
12 KiB
Plaintext
594 lines
12 KiB
Plaintext
Pflichtenheft
|
||
Simulation „Flussmanagement“ für den Geografieunterricht
|
||
1. Ziel des Projekts
|
||
|
||
Ziel ist die Entwicklung einer interaktiven Simulation für den Geografieunterricht (Sekundarstufe I, 10–15 Jahre), in der Schülerinnen und Schüler ein Flusssystem steuern und dabei Zielkonflikte zwischen:
|
||
|
||
Hochwasserschutz
|
||
Landwirtschaft
|
||
Ökologie
|
||
Wirtschaft
|
||
|
||
erkennen und ausbalancieren.
|
||
|
||
Die Simulation soll sich wie ein Spiel anfühlen, aber fachlich korrekt und didaktisch wirksam sein.
|
||
|
||
2. Zielgruppe
|
||
Schülerinnen und Schüler (10–15 Jahre)
|
||
Lehrpersonen (Geografie, ggf. fächerübergreifend)
|
||
Einsatz im Klassenverband (Einzel- oder Gruppenarbeit)
|
||
3. Zentrale didaktische Ziele
|
||
|
||
Die Anwendung muss ermöglichen:
|
||
|
||
Verständnis von Mensch–Umwelt-Systemen
|
||
Erkennen von Zielkonflikten (Trade-offs)
|
||
Einsicht in nichtlineare Zusammenhänge
|
||
Bewertung von Eingriffen in Naturräume
|
||
Reflexion historischer Entwicklungen (optional)
|
||
4. Spielprinzip
|
||
|
||
Der Spieler übernimmt die Rolle eines Entscheidungsträgers (z. B. Region/Behörde) und steuert Maßnahmen an einem Fluss.
|
||
|
||
Grundmechanik
|
||
Spieler wählt Steuermaßnahmen
|
||
Simulation berechnet Auswirkungen
|
||
Spieler sieht visuelle Veränderungen
|
||
Spiel bewertet Ergebnis anhand mehrerer Ziele
|
||
5. Spieldauer
|
||
|
||
Das Spiel muss konfigurierbar sein:
|
||
|
||
Leveltyp Dauer
|
||
Kurzlevel 10–15 Minuten
|
||
Standardlevel 20–30 Minuten
|
||
Langlevel 30–40 Minuten
|
||
Steuerung der Dauer über:
|
||
Anzahl der Runden
|
||
Anzahl aktiver Parameter
|
||
Ereignisdichte
|
||
Komplexität der Entscheidungen
|
||
6. Spielstruktur
|
||
6.1 Rundenbasiertes System
|
||
|
||
Ein Level besteht aus mehreren Runden:
|
||
|
||
Situation anzeigen
|
||
Spieler trifft Entscheidungen
|
||
Simulation wird berechnet
|
||
Ergebnisse werden visualisiert
|
||
ggf. Ereignis tritt ein
|
||
6.2 Levelstruktur
|
||
|
||
Levels unterscheiden sich durch:
|
||
|
||
Rahmenbedingungen
|
||
freigeschaltete Maßnahmen
|
||
Zielgewichtung
|
||
Schwierigkeit
|
||
7. Steuergrößen (Spieleraktionen)
|
||
|
||
Mindestens folgende Maßnahmen müssen implementiert werden:
|
||
|
||
Flussbegradigung
|
||
Dämme bauen
|
||
Ausbaggern
|
||
Auen freigeben
|
||
Renaturierung
|
||
Bewässerung
|
||
|
||
Jede Maßnahme:
|
||
|
||
hat Intensität (0–100)
|
||
hat Kosten
|
||
hat positive und negative Effekte
|
||
8. Zustandsparameter (Simulation)
|
||
|
||
Alle Werte liegen im Bereich 0–100:
|
||
|
||
Risiken
|
||
Lokales Hochwasser
|
||
Hochwasser flussabwärts
|
||
Erosion
|
||
Nutzen
|
||
Bodenfruchtbarkeit
|
||
Biodiversität
|
||
Grundwasser
|
||
Nutzbare Fläche
|
||
Wirtschaft
|
||
9. Rahmenbedingungen
|
||
|
||
Pro Level definierbar:
|
||
|
||
Niederschlag
|
||
Extremwetter
|
||
Gefälle
|
||
Bevölkerungsdruck
|
||
Budget
|
||
|
||
Diese sind nicht direkt steuerbar, beeinflussen aber die Simulation.
|
||
|
||
10. Simulationslogik
|
||
10.1 Grundprinzip
|
||
|
||
Die Simulation basiert auf:
|
||
|
||
direkten Effekten von Maßnahmen
|
||
indirekten Wechselwirkungen zwischen Parametern
|
||
nichtlinearen Funktionen
|
||
10.2 Anforderungen an die Logik
|
||
|
||
Die Simulation muss:
|
||
|
||
nichtlinear sein (keine einfachen +/– Beziehungen)
|
||
abnehmenden Nutzen bei steigender Intensität abbilden
|
||
überproportionale Nebenwirkungen bei starken Eingriffen erzeugen
|
||
Kettenreaktionen ermöglichen
|
||
10.3 Beispielhafte Effekte
|
||
Begradigung → mehr Fläche, aber mehr Hochwasser flussabwärts
|
||
Dämme → lokaler Schutz, aber Nachteile für Landwirtschaft
|
||
Renaturierung → ökologische Vorteile, aber weniger Fläche
|
||
11. Bewertungssystem
|
||
11.1 Zielbereiche
|
||
|
||
Das Spiel bewertet:
|
||
|
||
Sicherheit
|
||
Ökologie
|
||
Landwirtschaft
|
||
Wirtschaft
|
||
11.2 Mehrzielbewertung
|
||
|
||
Es gibt keine perfekte Lösung.
|
||
|
||
Gesamtscore basiert auf gewichteter Kombination:
|
||
|
||
Score = f(Sicherheit, Ökologie, Landwirtschaft, Wirtschaft)
|
||
|
||
Gewichtung ist je Level anpassbar.
|
||
|
||
12. Balancing-Anforderungen
|
||
|
||
Das System muss sicherstellen:
|
||
|
||
12.1 Keine dominante Strategie
|
||
Keine Maßnahme darf immer optimal sein
|
||
12.2 Zielkonflikte
|
||
Jede Maßnahme muss mindestens einen Nachteil haben
|
||
12.3 Kontextabhängigkeit
|
||
Wirkung hängt von Rahmenbedingungen ab
|
||
12.4 Extremwerte vermeiden
|
||
Maximale Eingriffe müssen Risiken erzeugen
|
||
13. Spielmechaniken gegen Fehlverhalten
|
||
Muss implementiert werden:
|
||
Budgetbegrenzung
|
||
Strafsystem für extreme Eingriffe
|
||
Katastrophen bei kritischen Zuständen
|
||
Bonus für ausgewogene Strategien
|
||
14. Visualisierung
|
||
|
||
Die Simulation muss visuell darstellen:
|
||
|
||
Hochwasser (Überflutung)
|
||
Flussverlauf (gerade vs. mäandrierend)
|
||
Vegetation / Biodiversität
|
||
Landwirtschaft (Ertrag sichtbar)
|
||
Bebauung
|
||
Wichtig:
|
||
|
||
Jede Änderung im Modell muss sichtbar sein.
|
||
|
||
15. Benutzeroberfläche
|
||
Anforderungen
|
||
einfache Bedienung (Schüler geeignet)
|
||
klare Rückmeldung
|
||
visuelle Feedbacks statt Zahlenlast
|
||
Parameter optional einblendbar
|
||
16. Admin-/Lehrermodus
|
||
|
||
Muss enthalten:
|
||
|
||
Auswahl von Levels
|
||
Anpassung von:
|
||
Budget
|
||
Klima
|
||
Zielgewichtung
|
||
Aktivieren/Deaktivieren von Maßnahmen
|
||
Festlegen der Spieldauer
|
||
17. Technische Anforderungen
|
||
Frontend
|
||
Web-basiert (HTML, JS, optional TypeScript)
|
||
responsiv
|
||
keine Installation nötig
|
||
Backend (optional)
|
||
für Speicherung von Szenarien
|
||
keine Pflicht für Minimalversion
|
||
18. Erweiterbarkeit
|
||
|
||
Das System muss modular aufgebaut sein, damit später ergänzt werden kann:
|
||
|
||
historische Level
|
||
weitere Naturprozesse
|
||
andere geografische Themen
|
||
19. Test- und Balancing-System
|
||
|
||
Das System muss ein internes oder separates Modul enthalten, das:
|
||
|
||
viele Strategien automatisch testet
|
||
dominante Strategien erkennt
|
||
Extremverhalten identifiziert
|
||
Balanceprobleme meldet
|
||
20. Abnahmekriterien
|
||
|
||
Das System gilt als erfolgreich, wenn:
|
||
|
||
ein Level in 10–40 Minuten spielbar ist
|
||
mehrere unterschiedliche Strategien zum Erfolg führen
|
||
keine einzelne Maßnahme dominiert
|
||
Auswirkungen visuell nachvollziehbar sind
|
||
Schüler Zielkonflikte erkennen können
|
||
21. Anhänge
|
||
Anhang A: Datenmodell (JSON)
|
||
Anhang B: Beispiel-Simulationslogik
|
||
Anhang C: Balancing-Tester
|
||
|
||
(Diese basieren auf den zuvor entwickelten Modellen und werden als Referenz bereitgestellt.)
|
||
|
||
Fazit
|
||
|
||
Dieses Pflichtenheft beschreibt kein einfaches Spiel, sondern ein:
|
||
|
||
dynamisches, nichtlineares, mehrzieliges Simulationssystem für didaktisches Lernen
|
||
|
||
Wenn du willst, gehe ich im nächsten Schritt noch weiter und erstelle dir:
|
||
|
||
konkrete Level (z. B. Nildelta, Industrialisierung, Alpenfluss)
|
||
oder eine fertige Prompt-Version für eine Programmier-KI (z. B. Cursor, GPT, etc.)
|
||
|
||
Das wäre der nächste logische Schritt.
|
||
|
||
Ja mach das mit dem konkreten Level noch als Ergänzung
|
||
|
||
Gut — ich ergänze das Pflichtenheft jetzt um konkrete, sofort implementierbare Level-Spezifikationen.
|
||
Diese sind so formuliert, dass eine KI sie direkt in Datenstrukturen oder Code übersetzen kann.
|
||
|
||
Ergänzung zum Pflichtenheft: Konkrete Leveldefinitionen
|
||
22. Levelsystem – Struktur
|
||
|
||
Jedes Level wird formal definiert durch:
|
||
|
||
type LevelDefinition = {
|
||
id: string;
|
||
title: string;
|
||
description: string;
|
||
|
||
durationTargetMinutes: number;
|
||
|
||
initialState: State;
|
||
conditions: Conditions;
|
||
|
||
allowedControls: (keyof Controls)[];
|
||
controlLimits: Partial<Controls>;
|
||
|
||
scoreWeights: {
|
||
safety: number;
|
||
ecology: number;
|
||
agriculture: number;
|
||
economy: number;
|
||
};
|
||
|
||
rounds: number;
|
||
|
||
events?: LevelEvent[];
|
||
|
||
winConditions: {
|
||
minScore?: number;
|
||
targetScores?: Partial<ScoreBreakdown>;
|
||
};
|
||
|
||
loseConditions?: {
|
||
maxFloodLocal?: number;
|
||
maxFloodDownstream?: number;
|
||
minGroundwater?: number;
|
||
};
|
||
};
|
||
23. Level 1 – Einstieg: „Fluss und Siedlung“
|
||
Ziel
|
||
|
||
Grundverständnis von Hochwasser und einfachen Maßnahmen
|
||
|
||
const level1: LevelDefinition = {
|
||
id: "L1",
|
||
title: "Fluss und Siedlung",
|
||
description: "Eine kleine Siedlung liegt an einem Fluss und ist regelmäßig von Hochwasser betroffen.",
|
||
|
||
durationTargetMinutes: 10,
|
||
|
||
rounds: 5,
|
||
|
||
initialState: {
|
||
floodLocal: 60,
|
||
floodDownstream: 40,
|
||
erosion: 30,
|
||
soilFertility: 60,
|
||
biodiversity: 70,
|
||
groundwater: 55,
|
||
usableLand: 40,
|
||
economy: 40
|
||
},
|
||
|
||
conditions: {
|
||
rainfall: 60,
|
||
extremeWeather: 30,
|
||
slope: 40,
|
||
populationPressure: 30,
|
||
budget: 120
|
||
},
|
||
|
||
allowedControls: ["levees", "floodplainRelease"],
|
||
controlLimits: {
|
||
levees: 60,
|
||
floodplainRelease: 60
|
||
},
|
||
|
||
scoreWeights: {
|
||
safety: 0.5,
|
||
ecology: 0.2,
|
||
agriculture: 0.15,
|
||
economy: 0.15
|
||
},
|
||
|
||
winConditions: {
|
||
minScore: 60
|
||
},
|
||
|
||
loseConditions: {
|
||
maxFloodLocal: 85
|
||
}
|
||
};
|
||
24. Level 2 – Landwirtschaft: „Fruchtbares Tal“
|
||
Fokus
|
||
|
||
Nutzen von Überschwemmungen vs. Risiko
|
||
|
||
const level2: LevelDefinition = {
|
||
id: "L2",
|
||
title: "Fruchtbares Tal",
|
||
description: "Ein Tal lebt von fruchtbaren Böden durch regelmäßige Überschwemmungen.",
|
||
|
||
durationTargetMinutes: 20,
|
||
|
||
rounds: 7,
|
||
|
||
initialState: {
|
||
floodLocal: 55,
|
||
floodDownstream: 35,
|
||
erosion: 35,
|
||
soilFertility: 75,
|
||
biodiversity: 65,
|
||
groundwater: 60,
|
||
usableLand: 45,
|
||
economy: 50
|
||
},
|
||
|
||
conditions: {
|
||
rainfall: 65,
|
||
extremeWeather: 40,
|
||
slope: 35,
|
||
populationPressure: 40,
|
||
budget: 150
|
||
},
|
||
|
||
allowedControls: ["levees", "floodplainRelease", "irrigation"],
|
||
|
||
scoreWeights: {
|
||
safety: 0.25,
|
||
ecology: 0.2,
|
||
agriculture: 0.4,
|
||
economy: 0.15
|
||
},
|
||
|
||
winConditions: {
|
||
targetScores: {
|
||
agriculture: 65,
|
||
safety: 50
|
||
}
|
||
}
|
||
};
|
||
25. Level 3 – Industrialisierung: „Der gezähmte Fluss“
|
||
Fokus
|
||
|
||
Technische Eingriffe und ihre Folgen
|
||
|
||
const level3: LevelDefinition = {
|
||
id: "L3",
|
||
title: "Der gezähmte Fluss",
|
||
description: "Der Fluss soll kontrolliert werden, um Städte und Industrie zu schützen.",
|
||
|
||
durationTargetMinutes: 25,
|
||
|
||
rounds: 8,
|
||
|
||
initialState: {
|
||
floodLocal: 50,
|
||
floodDownstream: 45,
|
||
erosion: 40,
|
||
soilFertility: 55,
|
||
biodiversity: 50,
|
||
groundwater: 50,
|
||
usableLand: 55,
|
||
economy: 60
|
||
},
|
||
|
||
conditions: {
|
||
rainfall: 60,
|
||
extremeWeather: 45,
|
||
slope: 50,
|
||
populationPressure: 70,
|
||
budget: 180
|
||
},
|
||
|
||
allowedControls: [
|
||
"levees",
|
||
"straightening",
|
||
"dredging"
|
||
],
|
||
|
||
scoreWeights: {
|
||
safety: 0.4,
|
||
ecology: 0.1,
|
||
agriculture: 0.2,
|
||
economy: 0.3
|
||
},
|
||
|
||
events: [
|
||
{
|
||
round: 4,
|
||
type: "flood_event",
|
||
intensity: 70
|
||
}
|
||
],
|
||
|
||
winConditions: {
|
||
minScore: 65
|
||
}
|
||
};
|
||
26. Level 4 – Systemdenken: „Fluss im Gleichgewicht“
|
||
Fokus
|
||
|
||
Mehrere Ziele gleichzeitig
|
||
|
||
const level4: LevelDefinition = {
|
||
id: "L4",
|
||
title: "Fluss im Gleichgewicht",
|
||
description: "Finde eine Balance zwischen Sicherheit, Natur und Nutzung.",
|
||
|
||
durationTargetMinutes: 30,
|
||
|
||
rounds: 10,
|
||
|
||
initialState: {
|
||
floodLocal: 55,
|
||
floodDownstream: 50,
|
||
erosion: 45,
|
||
soilFertility: 60,
|
||
biodiversity: 60,
|
||
groundwater: 50,
|
||
usableLand: 50,
|
||
economy: 55
|
||
},
|
||
|
||
conditions: {
|
||
rainfall: 60,
|
||
extremeWeather: 50,
|
||
slope: 45,
|
||
populationPressure: 60,
|
||
budget: 180
|
||
},
|
||
|
||
allowedControls: [
|
||
"levees",
|
||
"straightening",
|
||
"floodplainRelease",
|
||
"renaturation",
|
||
"irrigation"
|
||
],
|
||
|
||
scoreWeights: {
|
||
safety: 0.25,
|
||
ecology: 0.25,
|
||
agriculture: 0.25,
|
||
economy: 0.25
|
||
},
|
||
|
||
winConditions: {
|
||
minScore: 70
|
||
}
|
||
};
|
||
27. Level 5 – Speziallevel: Nildelta
|
||
|
||
Bezug zur realen Welt und deinem Wunsch nach nicht einseitigem Denken
|
||
|
||
Fokus
|
||
|
||
Überschwemmung als Vorteil
|
||
|
||
const level5: LevelDefinition = {
|
||
id: "L5",
|
||
title: "Nildelta",
|
||
description: "Die Überschwemmungen bringen fruchtbare Böden – aber auch Risiken.",
|
||
|
||
durationTargetMinutes: 35,
|
||
|
||
rounds: 10,
|
||
|
||
initialState: {
|
||
floodLocal: 65,
|
||
floodDownstream: 40,
|
||
erosion: 30,
|
||
soilFertility: 85,
|
||
biodiversity: 70,
|
||
groundwater: 65,
|
||
usableLand: 50,
|
||
economy: 60
|
||
},
|
||
|
||
conditions: {
|
||
rainfall: 40,
|
||
extremeWeather: 20,
|
||
slope: 20,
|
||
populationPressure: 70,
|
||
budget: 160
|
||
},
|
||
|
||
allowedControls: [
|
||
"levees",
|
||
"irrigation",
|
||
"floodplainRelease"
|
||
],
|
||
|
||
scoreWeights: {
|
||
safety: 0.2,
|
||
ecology: 0.2,
|
||
agriculture: 0.45,
|
||
economy: 0.15
|
||
},
|
||
|
||
winConditions: {
|
||
targetScores: {
|
||
agriculture: 75
|
||
}
|
||
},
|
||
|
||
loseConditions: {
|
||
minGroundwater: 25
|
||
}
|
||
};
|
||
28. Ereignissystem (für alle Levels)
|
||
type LevelEvent = {
|
||
round: number;
|
||
type: "flood_event" | "drought" | "economic_boost";
|
||
intensity: number;
|
||
};
|
||
|
||
Beispiele:
|
||
|
||
Hochwasser
|
||
Dürre
|
||
wirtschaftlicher Boom
|
||
29. Didaktische Progression
|
||
Level Konzept
|
||
1 Ursache-Wirkung
|
||
2 Nutzen vs Risiko
|
||
3 Technik vs Natur
|
||
4 Systemdenken
|
||
5 Realwelt + Transfer
|
||
30. Abschluss
|
||
|
||
Mit dieser Ergänzung hat deine KI jetzt:
|
||
|
||
ein vollständiges Spielsystem
|
||
ein Simulationsmodell
|
||
ein Balancing-Konzept
|
||
konkrete Leveldaten
|
||
klare didaktische Struktur |