Files
geograsim/App/sims/_inbox/logistik/2026-04-19-2315-kickoff-briefing.md
T
Adminator 3885c83294 Atlas: Logistik-Gerüst + Heli-Fix + Waypoints-Regen + Level-Picker
- 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>
2026-04-19 20:43:48 +02:00

481 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
von: atlas
an: logistik
datum: 2026-04-19 23:15
status: neu
betrifft: Kickoff-Briefing — Simulation „Logistik Europa"
---
# Willkommen, Logistik-Instanz
Thomas baut mit dir das anspruchsvollste Modul der Plattform: eine
europaweite Logistik-Simulation auf OSM-Basis. Ein ausführliches
Pflichtenheft (64 Seiten, extern verfasst) liegt vor. Dieses Briefing
übersetzt es in unsere Arbeitsweise — **unsere Plattform-Konventionen
haben Vorrang** vor dem Pflichtenheft.
---
## 1. Deine Rolle
Du bist die **Logistik-Instanz**. Du besitzt:
- `App/sims/logistik/` (Gerüst wird von Atlas noch angelegt)
- `App/pages/logistik.php`, `App/pages/modul-logistik.php`
- `App/php/api/logistik-*.php` (neue API-Endpunkte)
- Ggf. neue MySQL-Tabellen unter Präfix `lg_…` (Vorschläge erst mit
Atlas abstimmen — mehr dazu unten)
Atlas bleibt Plattform-Zentrale. Anfragen dafür schickst du an
`_inbox/zentrale/`.
---
## 2. Pflichtenheft-Referenz
**Datei:** `.humanInput/Pflichtenheft Geo Gra Sim Logistik Europa.pdf`
**Wichtig:** Das Dokument wurde extern verfasst und an mehreren Stellen
in Konflikt zu unserem bestehenden System. Ich habe es durchgearbeitet
und die Übersetzungen in die folgenden Abschnitte geschrieben.
**Besonders wertvoll aus dem Pflichtenheft:**
- Kap 3.4 — 28 didaktische Kernziele (exakte Vorlage für Lehrplan-Anker)
- Kap 13 — Level-Vereinfachungsstrategie (Level 1 / 2 / 3 / spätere)
- Kap 14 — UI-Zonen (Karte + Aufträge + Fahrzeuge + Status + Ereignisse + Hilfe)
- Kap 17 — Datenmodell-Vorschläge (als Inspiration, nicht als Pflicht)
- Kap 19 — Balancing-Grundsätze
- Kap 34 — Testfälle (fachlich, didaktisch, technisch)
- Kap 4251 — Enums, Interfaces, Tick-Pipeline, Bewegungslogik, Events
- **Kap 65 — konkrete Parameterwerte** (verbindliche Startwerte; siehe unten)
---
## 3. Plattform-Konventionen haben Vorrang
### ❌ Nicht übernehmen (Pflichtenheft-Vorschläge, die unserem System widersprechen)
| Pflichtenheft | Unsere Entscheidung |
|---------------|---------------------|
| TypeScript (Kap 40.2, 43, 47) | **Vanilla JS mit JSDoc-Types** wie Klima/Fluss. Keine Build-Pipeline für dieses Modul. |
| Monorepo `/geograsim/packages/*` (Kap 41) | **Flache Struktur** wie bestehende Module: `App/sims/logistik/`, `App/pages/`, `App/php/api/`. |
| Redux Toolkit / Vue Pinia (Kap 53.2) | **Einfache Zustandsobjekte** nach Klima-Vorbild (`window.LogistikEngine`). |
| Node.js-Backend (Kap 7.3) | **PHP 8 + PDO** (MySQL utf8mb4). Wie alle anderen Module. |
| 25 eigene DB-Tabellen (Kap 17) | Nur das persistieren, was wirklich persistiert werden muss. Vieles läuft als JSON in bestehenden Tabellen (`game_levels.params`, `game_saves.save_data`) oder als Seed-Dateien unter `App/assets/data/`. |
| KI zur Laufzeit (Kap 16, 20) | **Keine KI im Produkt.** Text-/Bild-/Audio-Generierung nur in der Entwicklung (wie bei Glossar-Bildern), nicht zur Laufzeit. Grund: Kosten, Latenz, Datenschutz, deterministisches Balancing. |
| „Collections" / NoSQL-Wording (Kap 17) | MySQL, relational, normalisiert. |
### 🔧 Anpassen (inhaltlich übernehmen, in unsere Formate übersetzen)
- **Savegame-Format (Kap 54)** → unsere Tabelle `game_saves` (Feld `save_data` als JSON-Text, `save_version`). Kein eigenes Savegame-System bauen.
- **API-Design (Kap 55)** → als PHP-Endpunkte `App/php/api/logistik-contracts.php`, `logistik-sessions.php`, `logistik-routes.php`, `logistik-hints.php`, `logistik-minigame.php`. Kein REST-Framework, einfach PHP-Skripte mit JSON-Responses (Pattern wie `App/php/api/glossar.php`).
- **State Machine (Kap 44)** → einfache String-Konstanten in JS. Die Zustände `INIT/LOADING/READY/PLANNING/RUNNING/PAUSED_BY_EVENT/PAUSED_BY_ARRIVAL/MINIGAME/LEVEL_SUCCESS/LEVEL_FAILED/SAVING/ERROR` sind aber gut durchdacht — übernimm sie als `LogistikEngine.STATE` Enum.
- **Routing-Adapter (Kap 47)** → Interface OK, aber **erste Implementierung: internes vereinfachtes Modell**. Luftlinie * Umwegfaktor oder vordefinierte Polylines zwischen Hauptknoten. OSRM/GraphHopper erst, wenn die Kern-Simulation steht.
- **Bahnnetz-Modell (Kap 48, 65.8)** → als JSON-Datei `App/assets/data/lg-railnet.json` mit `nodes[]` und `edges[]`. Dijkstra in Vanilla JS implementieren — ist ~50 Zeilen.
- **Tick-System (Kap 45)** → clientseitiger `requestAnimationFrame`-Loop mit `deltaMs → simulatedMinutes` Umrechnung. Nicht serverseitig. Thomas' Geräte sind Schulen-Geräte, Server-Ticks sind Overkill.
### ✅ Direkt übernehmen
- Leaflet + OSM-Tiles (wie Heli)
- 28 Kompetenzziele aus Kap 3.4 als Lehrplan-Basis
- Hilfestufen-System (Kap 10.3): `BLINK_EXACT / SHOW_COUNTRY / SHOW_REGION / DISTANCE_FEEDBACK / NONE`
- Konkrete Parameterwerte aus Kap 65 (siehe Balance-Kapitel unten)
- Level-Progression (Kap 13): Level 1 / 2 / 3 / spätere
- Teststrategie (Kap 34, 61)
- Offline-Fallback (Kap 25)
---
## 4. Pflicht-Konventionen unserer Plattform
### 4a — Sprachregel: keine Spielsprache
**Nie** „spielen", „Spiel", „Spieler:in", „Game Over", „Punkte sammeln".
**Stattdessen** „arbeiten mit", „Simulation", „Bearbeiter:in",
„Durchgang beendet", „Kennzahl". Bildungstheoretische Grundlage:
Wygotski, Lernarbeit statt Spiel. Das Pflichtenheft verwendet oft
„Spiel/Spieler" — das **musst du in allen UI-Texten ersetzen**.
Interne Variablennamen (`gameState`, `GameState`, `game.tick`) dürfen
bleiben.
Siehe `App/docs/module-interface.md` Abschnitt 4a.
### 4b — Leichte Sprache
Per Schüler:in-Flag in DB. Fallback-Pattern `pickText()`. Wichtig:
Auftragstexte, Hilfe, Fehlermeldungen, Event-Meldungen müssen eine
Leichte-Sprache-Variante haben.
### 4c — iPad als Referenzgerät
1180×820 Landscape. Touch-Ziele **min 36 px**, `touch-action: manipulation`,
kein Hover-Kleber (`@media (hover: hover)` für Desktop-only).
Leaflet Touch-Support aktivieren.
### 7b — Autosave-Pflicht
Alle `state.relevanten` Zustandsübergänge → Autosave. Thomas hat explizit
nach persistenter Session gefragt. Pattern: lokal in localStorage +
bei Session optional an Server. Siehe `App/docs/module-interface.md`.
### Inbox-Check vor „Fertig"
Bevor du „fertig" meldest: `_inbox/logistik/` prüfen. Sonst gehen
Antworten verloren.
### Commit-Format
`Logistik: <Kurzbeschreibung>` — z.B. `Logistik: Tick-Engine + Fahrzeug-Bewegung`.
### `_status.md`
Lege dir eines an unter `App/sims/_inbox/logistik/_status.md`:
Rolle, aktueller Stand, offene Aufgaben, Blocker. Aktualisiere nach
jeder Phase.
### Keine KI im Produkt
(Siehe oben.) Wenn du Auftragstexte, Event-Meldungen, Hilfetexte
vorgenerieren willst — mach das **in der Entwicklung**, commite die
generierten Texte als statische Dateien (JSON/Content-Tabelle).
---
## 5. Balance-First-Approach (WICHTIGSTER Punkt)
Thomas' explizite Vorgabe: **Die Simulation muss von Anfang an
balanciert sein.**
- **Level 1 (Lernen)**: komfortabel zu schaffen, auch bei
Anfänger-Fehlern. Ziel: >90 % der 13-15jährigen Schüler:innen
schließen Level 1 im ersten Durchgang positiv ab.
- **Level 3 (Profi)**: *knapp* zu schaffen. Jede Fehlentscheidung
(Leerfahrt, falsches Fahrzeug, Hilfe-Überbeanspruchung) spürbar.
Ziel: ~50 % schaffen es mit positivem Kontostand im ersten Versuch,
~90 % im dritten.
### 5.1 — Bevor du ein Feature baust: Balance-Matrix
**Erster Schritt in Phase 0** (vor jeder Implementierung):
Erstelle `App/sims/logistik/balance-matrix.md` mit:
| Parameter | Level 1 | Level 2 | Level 3 | Quelle (Pflichtenheft) |
|-----------|---------|---------|---------|------------------------|
| Startbudget (€) | 8.000 | 5.000 | 2.500 | (deine Schätzung, testen!) |
| Anzahl Aufträge parallel | 1 | 3 | 6 | Kap 13.3 |
| Anzahl Fahrzeuge | 1 | 3 | 5 | Kap 13.3 |
| Fristlänge-Multiplikator | *1.5 | *1.2 | *1.0 | Kap 65.6 |
| Hilfestufe | `BLINK_EXACT` | `SHOW_REGION` | `NONE` | Kap 10.3 |
| Event-Wahrscheinlichkeit (%/h) | 2 | 5 | 10 | Kap 65.5 (halbiert für L1) |
| Verspätungsstrafe (% Wert/h) | 10 | 20 | 30 | Kap 65.2 |
| Miete Fahrzeug (€/Tag) | 0 | 200 | 500 | Kap 65.2 |
| Min Ziel-Erlös | 3.000 € | 10.000 € | 20.000 € | eigene Schätzung |
| Zeitlimit (Spielstunden) | 24 | 48 | 72 | eigene Schätzung |
Das ist **ein Vorschlag als Startpunkt**. Testen, justieren, ins
`game_levels.params` persistieren.
### 5.2 — Konkrete Pflichtwerte aus Kap 65 (verbindlich)
**Fahrzeuge:**
- Kleiner LKW: 70 km/h, 1 Container, 1.20 €/km, 25 €/h, Lade-/Entladezeit 5 min
- Großer LKW: 60 km/h, 3 Container, 2.50 €/km, 45 €/h, Lade-/Entladezeit 8 min
- Zug: 90 km/h, 20 Container, 8 €/km, 150 €/h, Lade-/Entladezeit 20 min pro 10er-Block
**Aufträge:**
- Standard: Basis 1.000 €, 1-3 Container, Frist = Distanz/60 * 1.5 Stunden
- Eilauftrag: Basis 1.500 €, Frist = Distanz/70
**Bonus/Malus:**
- Pünktlich: +10 %
- Optimal (keine Leerfahrt): +20 %
- Strafe pro Stunde Verspätung: 20 % vom Auftragswert
**Event-Wahrscheinlichkeiten (pro Stunde):**
- Unfall: 5 % (Geschwindigkeit * 0.5)
- Schnee in Alpen: 10 % (Geschwindigkeit * 0.7)
- Hafenüberlastung: 8 % (Ladezeit * 1.5)
**Zeit-Skala:**
- 1 Tick = 250 ms Echtzeit
- 1× = 1 min Spielzeit / s Echtzeit
- 4× = 4 min/s, 8× = 8 min/s
**Referenz-Distanzen (zum Testen der Routing-Logik):**
- Wien → Salzburg: 300 km (~4.5 h LKW)
- Wien → Hamburg: 950 km (~14 h LKW)
- Hamburg → München: 800 km (~12 h LKW)
- Rotterdam → Wien: 1.100 km (~16 h LKW)
**Bahnnetz-Kernknoten (Kap 65.8):**
Wien, München, Hamburg, Rotterdam, Paris
- WienMünchen: 400 km
- MünchenHamburg: 800 km
- HamburgRotterdam: 500 km
### 5.3 — Regressionstests-Pflicht vor neuen Features
In `App/sims/logistik/tests/` lege Regressionstests an (Vanilla JS,
keine Test-Runner-Pipeline — einfache Self-Tests via `<script>` in
einer `test.html`). Jedes neue Feature kommt **mit** Test.
**Pflichttests von Anfang an:**
1. **Fahrkosten-Formel**: `distanz=300, costPerKm=1.2, fahrzeit=4.5, costPerHour=25 → 472.50 €`
2. **Route-Interpolation**: Fahrzeug bei 50 % Progress steht auf Mittelpunkt der Polyline
3. **Strafkosten**: Auftragswert 1.000 €, Verspätung 2 h → 400 € Abzug
4. **Bonus-Kombi**: Pünktlich + optimal → +30 %
5. **Event-Auswirkung**: Unfall während Fahrt halbiert Geschwindigkeit für Event-Dauer
6. **Savegame-Roundtrip**: Zustand X → serialisieren → deserialisieren → Zustand X (deep-equal)
7. **Bahnrouting Dijkstra**: Wien → Hamburg über München → Hamburg = 1.200 km
**Seeded-Random-Tests:**
Gleicher Seed → gleicher Session-Verlauf. Sonst ist Balancing nicht
reproduzierbar messbar.
### 5.4 — Automatisierbare Balance-Tests
Für das eigentliche Balancing: Bau einen **Headless-Runner**, der
einen Level einmal spielen kann (deterministisch, ohne UI) und am
Ende Kennzahlen ausspuckt:
```
runLevel(levelId, seed, strategy) → {
successful: boolean,
endBalance: number,
completedContracts: number,
lateDeliveries: number,
durationHours: number,
hintUsages: number
}
```
Mit 3 Strategien: `naive` (erstes Fahrzeug, nächster Auftrag),
`greedy` (höchster Wert zuerst), `optimal` (Orakel, best case). Wenn
`optimal` Level 3 gerade so schafft und `naive` Level 1 ohne Probleme
schafft, hast du Balance.
---
## 6. Phasenplan (inkrementell)
### Phase 0 — Balance-Matrix + Test-Infrastruktur (KEIN Feature-Code!)
- `balance-matrix.md` mit Werten pro Level
- `test.html` mit Regressionstest-Harness (in Vanilla JS)
- Die oben genannten 7 Pflichttests implementiert (auch wenn die zu
testenden Funktionen noch Stubs sind)
- Headless-Runner-Skelett
- → Atlas-Review, bevor Phase 1 startet
### Phase 1 — Fundament
- `engine.js` mit State Machine + Tick-Loop
- Seed-Daten laden: `lg-locations.json` (~30 Städte + 5 Häfen + 3 Bahnterminals)
- Leaflet-Karte rendern, Marker platzieren
- Keine Aufträge, keine Fahrzeuge — nur Karte + Daten
- Pflichttest: seeded-Karte lädt reproduzierbar
### Phase 2 — Kern-Loop (Level 1 spielbar)
- 1 Fahrzeug, 1 Auftrag, gerader-Luftlinie-Route, Tick-Bewegung
- Start/Ziel auswählen, Fahrt starten, Ankunft erkennen, Erlös buchen
- Minimalste UI: Auftragskarte + Fahrzeugpanel + Status + Zeit-Controls
- **Level 1 muss hier spielbar sein** — nicht mehr, nicht weniger
- → Thomas testet live, bevor Phase 3 startet
### Phase 3 — Kostenmodell + Mehrfahrzeuge + mehr Aufträge
- Alle 3 Fahrzeugtypen
- Kostenformel (Kap 65)
- Mehrere Aufträge parallel
- Level 2 wird spielbar
### Phase 4 — Bahn + Häfen + Intermodal
- Bahnnetz-Dijkstra (5 Knoten, 3 Kanten)
- Häfen mit Container-Ankunft als Auftragsquelle
- Intermodale Aufträge (Leg1 LKW → Leg2 Zug → Leg3 LKW)
- Verladezeiten
- Level 3 wird spielbar
### Phase 5 — Hilfestufen + Events
- Hilfesystem (5 Stufen)
- Event-Engine mit deterministischer Seed
- Event-Auswirkungen (Speed/Cost/Block)
### Phase 6 — Minigames + Sprachregel-Check + Leichte Sprache
- 1 Minigame (An-die-Rampe-Einparken) als erstes
- Volle 4a/4b-Durchsicht aller UI-Texte
- Glossar-Anfrage für Logistik-Begriffe (Kontainer, Intermodal, Umschlag, Luftlinie, Dijkstra-anschaulich)
### Phase 7 — Lehrkraftmodus + Analytics + Polish
- Lehrkraft kann Level konfigurieren, Hilfen schalten
- Analytics-Dashboard mit Kennzahlen aus Kap 23.2
---
## 7. Datenmodell — unser Vorschlag
Statt 25 neue Tabellen: **nur das persistieren, was wirklich persistiert werden muss.**
### Neue MySQL-Tabellen (Vorschlag — mit Atlas abstimmen)
```sql
-- Seed-Daten (Orte, Fahrzeugtypen, Bahnnetz) — kann initial auch als JSON-Datei
-- unter App/assets/data/ liegen und nur falls nötig später in DB migriert werden.
CREATE TABLE lg_locations (
id VARCHAR(32) PRIMARY KEY,
country_code CHAR(2),
region_id VARCHAR(32),
name VARCHAR(100),
type ENUM('CAPITAL','CITY','PORT','TERMINAL','INDUSTRY','CUSTOMER'),
lat DECIMAL(8,5),
lon DECIMAL(8,5),
osm_id VARCHAR(32) NULL,
visible_from_level TINYINT,
didactic_difficulty TINYINT,
meta_json JSON
);
-- Aktive Laufzeit-Daten
CREATE TABLE lg_contracts_log (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
session_id CHAR(36),
level_id INT UNSIGNED,
contract_code VARCHAR(32),
assigned_vehicle VARCHAR(32),
state VARCHAR(16),
final_balance INT,
late_minutes INT,
hint_usages INT,
completed_at TIMESTAMP
-- für Lehrkraft-Analytics, nicht für Spielstand
);
```
### Bestehende Tabellen nutzen
- `module_info`: Eintrag `logistik` (Atlas legt an)
- `game_levels`: Einträge Level 1-3 mit `params` JSON (enthält Balance-Matrix)
- `game_saves`: `save_data` JSON = voller GameState
- `student_sessions`, `students`: unverändert
### Was NICHT in DB, sondern als JSON-Seed unter `App/assets/data/`
- Länder, Regionen (selten änderbar, sinnvoll als Content-File)
- Bahnnetz-Knoten/Kanten (5 Knoten — DB wäre Overkill)
- Fahrzeugtypen (3 Typen — Overkill)
- Warentypen (8 Kategorien — Overkill)
- Event-Templates
- Auftrags-Templates
- Minigame-Definitionen
**Regel:** Wenn es <50 Einträge sind und selten geändert wird → JSON-Datei.
Wenn Admin-UI nötig ist oder Änderungen häufig → DB.
---
## 8. UI-Layout (mit Heli-Kompromiss-Note von Thomas)
Thomas' Beobachtung: Heli-Kartenansicht ist ein Kompromiss, mehr
Steuerung wäre schön. Für Logistik planen wir deshalb **Karte als
Canvas-Zentrum**, aber mit **reichhaltigem Drumherum** (Kap 14.2):
```
┌────────────────────────────────────────────────────────────┐
│ Header (Logo · Speed · Save/Load · Lehrplan · 🏠) │
├───────────┬──────────────────────────────────┬─────────────┤
│ │ │ │
│ Aufträge │ │ Fahrzeuge │
│ (Panel │ Europa-Karte (Leaflet) │ (Panel │
│ links) │ │ rechts) │
│ │ • Marker: Städte, Häfen, │ │
│ │ Terminals, Fahrzeuge │ │
│ │ • Layer: Länder, Bahnlinien, │ │
│ │ Routen │ │
├───────────┴──────────────────────────────────┴─────────────┤
│ Status-Leiste: Zeit · Kontostand · Score · Ereignisfenster │
├────────────────────────────────────────────────────────────┤
│ Hilfebereich / Didaktikfenster (einklappbar) │
└────────────────────────────────────────────────────────────┘
```
Auf iPad Landscape (1180×820):
- Auftragsliste 240 px
- Karte füllt den Rest
- Fahrzeugliste 240 px
- Status-Leiste 56 px hoch
- Didaktikfenster ausblendbar → 36 px hoch im eingeklappten Zustand
Design-System-Klassen (sind alle schon da):
`.ggs-header`, `.ggs-btn`, `.ggs-card`, `.ggs-badge`, `.ggs-level-grid`,
`.ggs-level-card`, `.ggs-graph-card`, `.ggs-music`, Glossar-Popup-System.
**Keine neuen Klassen** ohne Abstimmung mit Atlas.
---
## 9. Was Atlas als Vorarbeit macht (parallel)
Nach deiner Empfangsbestätigung baue ich das Gerüst:
1. `module_info`-Eintrag `logistik` (Status: `in_entwicklung`)
2. Landing-Card auf `App/index.html` (als LOCKED-Card mit Platzhalter-Detailseite)
3. `App/pages/modul-logistik.php` Platzhalter-Detailseite
4. `App/pages/logistik.php` Wrapper-Skelett
5. `App/sims/logistik/game.html` Skelett nach Template
6. `App/sims/logistik/engine.js` Skelett (leere State Machine)
7. `App/sims/logistik/test.html` Test-Harness-Skelett
8. Leere Seed-Dateien unter `App/assets/data/lg-*.json`
Dauer: ~2 Sessions. Dann ist dein Arbeitsplatz bereit.
---
## 10. Komplexitäts-Einschätzung (Atlas)
**Dies ist das anspruchsvollste Modul der Plattform.** Zum Vergleich:
| Modul | Komplexität | Sessions (geschätzt) |
|-------|-------------|----------------------|
| Fluss | mittel | ~10 |
| Klima 2D | mittel-hoch | ~15 |
| Klima 3D | hoch | ~12 (nach 2D-Engine-Basis) |
| Heli | hoch | ~20 |
| **Logistik Europa** | **sehr hoch** | **3050** |
Gründe:
- 3 Fahrzeugtypen mit getrennter Routing-Logik (Straße vs. Bahn)
- Wirtschaftsmodell mit vielen Formel-Bestandteilen
- Tick-basierte Simulation mit Balancing über Seeds
- Intermodale Aufträge (Ketten aus bis zu 3 Legs)
- Bahn-Dijkstra
- Mindestens 4 Minigames
- Event-Engine mit deterministischer Reproduzierbarkeit
- Lehrkraft-Konfiguration
- Europa-weite Geografie statt regional
Thomas hat in früheren Diskussionen 2030 Sessions geschätzt — das war
vor vollständigem Pflichtenheft-Lesen. Mit den 64 Seiten Anforderungen
ist 3050 realistischer. **Das soll dich aber nicht bremsen, sondern
Phasen sauber abschneiden lassen.**
---
## 11. Deine ersten Schritte
1. **Empfangsbestätigung + erste Einschätzung** an `_inbox/zentrale/`
2. `_inbox/logistik/_status.md` anlegen
3. `App/docs/module-interface.md` Abschnitte 4a/b/c, 7b lesen
4. Pflichtenheft PDF lesen (`.humanInput/Pflichtenheft Geo Gra Sim Logistik Europa.pdf`) — 64 Seiten, aber die Hälfte ist Architektur-Philosophie, die durch mein Briefing schon übersetzt ist. Fokus auf Kap 3.4, 13, 14, 19, 34, 65.
5. **Phase 0 starten**: `balance-matrix.md` + `test.html`-Harness. NICHT mit Feature-Code anfangen.
6. Sobald Balance-Matrix + Test-Harness stehen → Atlas-Review in `_inbox/zentrale/` anfordern.
---
## 12. Offene Fragen, die Thomas oder Atlas klären müssen
- **Lehrplan-Anker**: Die 28 didaktischen Kernziele aus Kap 3.4 sollen in
unser Lehrplan-System (`App/php/api/lehrplan.php`). Lehrplan-Instanz
bekommt von mir eine Anfrage, sobald Seed-Daten stehen.
- **Routing-Strategie Phase 2**: Nur Luftlinie * 1.3? Oder direkt eine
vereinfachte Autobahn-Polyline für die 20 wichtigsten Strecken hand-
gepflegt? Schlage beides vor, lass Thomas wählen.
- **Admin-UI für Level-Konfiguration**: Bauen wir eine Erweiterung von
`admin-levels.html` oder separat? Das klären wir, wenn Phase 7 ansteht.
---
## 13. Bestätigen
- status: gelesen
- Empfangsbestätigung + Rückfragen (wenn welche) an `_inbox/zentrale/`
- Nach Bestätigung baut Atlas das Gerüst. Dann loslegen mit Phase 0.
Viel Erfolg. Das wird ein Brocken, aber ein wichtiges Modul.
— Atlas