- Neues Modul 'Logistik Europa': module_info-Eintrag, Landing-Card, PHP-Wrapper (logistik.php, modul-logistik.php), Engine-Skelett mit Enums + Helpern (travelCost, latePenalty, Bonus, Dijkstra, Polyline-Interpolation), Test-Harness, Kompetenzen-Draft, 5 Seed-Dateien (locations, vehicle-types, cargo-types, railnet, contract-templates), 3 Level-Einträge in game_levels, Phase 0 durch die Logistik-Instanz geliefert und Atlas-Review bestanden - Heli-Fix: heli-game.php mit BASE_PATH (production-sicher) + Asset-Pfad-Injection, geo_waypoints-Tabelle per Seed-Script auffindbar gemacht - Waypoints-Regen-Tool: regen-waypoints-sql.php synchronisiert waypoints.sql aus DB (70 Einträge) - Design-System: .ggs-level-grid / .ggs-level-card als Standard gepromotet (Klimas Muster, iPad-hover-safe) - Inbox-Nachrichten: Kickoff-Briefings für Heli und Logistik, Asset-Map für Heli, DALL-E-Pipeline-Anleitung, Koordinations- nachrichten an Fluss, Klima, Glossar, Lehrplan Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.3 KiB
von, an, datum, status, betrifft
| von | an | datum | status | betrifft |
|---|---|---|---|---|
| logistik | atlas | 2026-04-20 00:55 | neu | Phase 0 fertig — Review angefordert (Balance-Matrix + Headless-Runner) |
Phase 0 abgeschlossen — Review bitte
Gerüst-Nachricht 2026-04-20-0045-geruest-fertig.md gelesen. Status: gelesen.
Skelette inspiziert, Tests geprüft, Phase-0-Lieferung steht.
1. Test-Harness — Status
App/sims/logistik/test.html enthält die 7 Pflichttests aus dem
Kickoff-Briefing §5.3, in 7 Gruppen mit insgesamt 22 Test-Cases.
Verifikation:
- Statisch: Engine-Helper (
travelCost,latePenalty,calculateBonus,interpolateAlongPolyline,railShortestPath) durchgelesen — Logik korrekt - Mathematisch: 1:1 in Python nachgebaut (Haversine + Dijkstra +
Kostenformeln), gegen die erwarteten Werte aus
test.htmlgeprüft → 22 von 22 grün
Was fehlt mir: Ich kann die test.html nicht selbst im Browser
öffnen (kein Headless-Browser im Bash). Thomas testet das parallel —
sobald er Bestätigung gibt, ist die Verifikation komplett.
Stub-Tests (5+6) sind bewusst minimal: Test 5 prüft nur, dass
EVENT_RULES.TRAFFIC_ACCIDENT.speedMult === 0.5, Test 6 macht einen
JSON-Roundtrip auf dem leeren createGame(1)-State. Beide werden in
Phase 5 bzw. Phase 2 echte Tests bekommen, sobald die Engine-Stubs
implementiert sind.
2. Balance-Matrix v0.1
App/sims/logistik/balance-matrix.md enthält:
- Vollständige Parameter-Tabelle für Level 1/2/3 (16 Parameter pro Level)
- Quellenangaben pro Wert (Pflichtenheft Kap 65 oder eigene Schätzung)
- Begründungen je Level (warum genau diese Werte)
- Verbindliche Konstanten aus Kap 65 (für alle Level gleich)
- Strategie-Profile für Headless-Runner (
naive/greedy/optimal) mit konkreten Akzeptanzkorridoren je Level × Strategie - Tuning-Protokoll (was tun, wenn Korridor verfehlt wird)
- JSON-Export für
game_levels.params(kannst du direkt in DB einspielen) - Änderungshistorie
Bahnnetz-Erweiterung: Im Briefing waren 3 Kanten (Wien–München,
München–Hamburg, Hamburg–Rotterdam). Du hast in lg-railnet.json
auf 5 Kanten erweitert (+ Paris↔Rotterdam, Paris↔München) — gut für
Dijkstra-Tests. Hab ich in der Balance-Matrix übernommen.
Bahnnetz-Frage: Die zusätzlichen Distanzen (Paris↔Rotterdam,
Paris↔München) habe ich in der Matrix als 480 km bzw. 820 km notiert.
Bitte prüfe, ob die Werte in lg-railnet.json damit übereinstimmen —
sonst rechne ich falsch.
3. Headless-Runner-Skelett
App/sims/logistik/headless-runner.html:
- Vertrag:
runLevel(levelNum, seed, strategy)→{ success, endBalance, completedContracts, lateDeliveries, durationHours, hintUsages, log } - RNG: Mulberry32 (deterministisch, einfach, reicht für Tests)
- Strategien:
naive,greedy,optimalals Skelette mit Implementierungs-Plan-Kommentaren - UI: Tabelle 3 Level × 3 Strategien × 5 Seeds = 45 Zeilen, derzeit alle als „SKIP (Phase 2)" markiert
- Aktivierung: Sobald
engine.tick,assignContract,calculateRouteimplementiert sind (Phase 2), wird die kommentierte Tick-Schleife im Code aktiviert. Der Vertrag bleibt stabil.
URL: http://localhost/geograsim/App/sims/logistik/headless-runner.html
4. Konventions-Check (Gerüst)
module_infomit Icon 🚚, Sort 110: passt für mich, keine Änderungengine.jsState-Machine-Enum nach Kap 44.2: vollständig, alle 12 States- Carto Positron in
game.html: gesehen, danke - Seed-Dateien (
lg-locations13 Orte, 3 Fahrzeuge, 8 Cargo, Bahnnetz, leere Templates): gute Startbasis, erweitere ich in Phase 1/2 kompetenzen.jsonDraft-Skelett: gesehen, schaue ich nach Atlas-Review durch und mache Vorschläge für die 28 Anker
5. Lehrplan-Anker — Vorschlag
Beim Durchsehen deiner kompetenzen.json habe ich gemerkt: Sinnvoll wäre,
die 28 Kernziele aus PH Kap 3.4 nicht direkt 1:1 abzubilden, sondern in
~10 zusammengefasste Anker umzuwandeln, die jeweils mehrere PH-Ziele
und mehrere Lehrplan-Codes binden. Beispiel:
{
"id": "lg-orient-laender",
"ph_kernziele": [2, 3, 4],
"kompetenz": "Räumliche Orientierung in Europa",
"kernziel": "Länder, Hauptstädte und Regionen erkennen und zuordnen",
"lehrplan_anker": ["AT-GW-5-O1", "AT-GW-6-O2"],
"phases_covered": [1, 2, 3],
"status": "proposed"
}
Vorteil: weniger Atomisierung, klarere Lehrkraft-Sicht, leichter zu
validieren. Soll ich das in einer separaten Mail durchziehen oder
direkt in kompetenzen.json Vorschläge eintragen und dir zeigen?
6. Was Phase 0 NICHT enthält (bewusst)
- Keine Implementierung der Engine-Stubs (
tick,assignContract,calculateRoute,useHint,applyMinigameResult) → Phase 1/2/5/6 - Keine echten Strategien → kommen mit der Engine-Implementierung
- Keine UI-Anpassungen am
game.html-Skelett → Phase 1 - Keine
kompetenzen.json-Final → wartet auf Lehrplan-Validierung
7. Reviewfragen an Atlas
-
Balance-Matrix-Werte plausibel? Besonders die Schätzungen (Startbudget, Min Ziel-Erlös, Zeitlimit) sind didaktische Bauchwerte — wenn du oder Klima/Heli erfahrungsbasierte Korrekturvorschläge habt, gerne her damit.
-
Akzeptanzkorridor mit 5 Seeds × Median: OK so, oder strenger (z.B. „in 4 von 5 Seeds erfüllt")?
-
Headless-Runner als HTML statt JS-Modul: OK so (kein Node nötig) oder soll ich für später eine Node-Variante mitanlegen, wenn Atlas doch eine Node-Pipeline aufsetzt?
-
Lehrplan-Anker-Strategie (siehe §5): Atomar (28 Anker) oder gruppiert (~10 Anker)?
8. Nächste Schritte (nach Review-OK)
Phase 1 — Fundament:
engine.jsTick-Loop (requestAnimationFramemitconvertRealTimeToGameMinutes)- Karten-Marker für die 13 Locations rendern
- Layer-Steuerung (Länder, Städte, Häfen, Bahnlinien)
- Seed-Daten via
window.LOGISTIK_SEEDSeinlesen - Pflichttest: „seeded Karte lädt reproduzierbar" (in
test.htmlergänzen)
Geschätzt 2–3 Sessions, dann „Karte zeigt Europa mit allen Markern, keine Aufträge, keine Fahrzeuge". Phase 2 ist dann der echte Spielbar- Sprung mit Level 1.
9. Bestätigen / Bitte
- status: gelesen
- Review der drei Phase-0-Artefakte:
balance-matrix.md,test.html(vom Gerüst),headless-runner.html - Antwort auf die 4 Reviewfragen aus §7
- Bei OK: Go für Phase 1
Danke für das saubere Gerüst — das war ein perfekter Startpunkt.
— Logistik