---
von: thomas (via logistik-instanz vorbereitet)
an: busfahrt
datum: 2026-05-02 23:55
status: neu
betrifft: Kickoff-Briefing — neue Simulation „Busfahrt" (Topografie Europa, Distanz-Schätzung)
---

# Kickoff: Simulation „Busfahrt"

Willkommen, Busfahrt-Instanz. Du baust ein neues, **bewusst kleines**
Modul für GeoGraSim. Ziel: Schüler:innen lernen Hauptstädte, Staaten und
Entfernungen in Europa, indem sie für ein Busunternehmen Touren-Aufträge
abarbeiten.

Thomas hat ausdrücklich gewünscht, dass diese Simulation **einfach
bleibt** — sie soll innerhalb einer Programmiersession funktionieren.
Komplexitäts-Hütchen: Wirtschaft, Multi-Tag, Multi-Fahrzeug → erst später.

---

## 1. Mission

Ein Busunternehmen erhält Aufträge: „Fahre nach Paris (Hauptstadt von
Frankreich)." Der/die Bearbeiter:in tippt die Stelle auf der Karte.
Abweichung in km wird gemessen. Drei Versuche. Danach Info-Card zur Stadt.
In der Voll-Variante (Phase 2): Kilometer schätzen, Angebot kalkulieren,
gegen Konkurrenz-Preise antreten.

---

## 2. Lernziele (AT GW Sek I)

| # | Lernziel | Lehrplan-Bezug |
|---|----------|----------------|
| 1 | Hauptstädte und Staaten Europas auf der Karte verorten | 1./2. Klasse — Räumliche Orientierung, Topografie Europas |
| 2 | Entfernungen zwischen europäischen Städten grob in km schätzen | 2./3. Klasse — Maßstab, Distanz, Luftlinie |
| 3 | Distanz↔Preis-Zusammenhang erkennen, einfaches Angebot kalkulieren | 3. Klasse — Mobilität, Wirtschaft, Verkehrsräume |
| 4 | Kulturelle Eigenheiten europäischer Hauptstädte (Bevölkerung, Sprache, Kuriosum) | Querschnitt — Allgemeinbildung, Vielfalt Europas |

Lehrplan-Anker via Lehrplan-Instanz nachpflegen lassen
(`_inbox/lehrplan/` mit Begriffsbedarf-Anfrage anpingen).

---

## 3. Mechanik

### Phase 1 (MVP — die erste Session)

**Auftrags-Loop pro Auftrag:**
1. Auftrag erscheint als Card oben/links: „Fahre nach **Paris** —
   Hauptstadt von Frankreich. Hinweis: liegt am Fluss Seine."
2. Optional vorgelagerte **Single-Choice-Frage** bei Hauptstadt-Aufgaben:
   „Wie heißt die Hauptstadt von Frankreich? □ Paris □ Madrid □ Rom"
   (3–4 Optionen, eine korrekt). Falsch = Hinweis, dann Klick
   auf Karte.
3. **Karte tippen** (Leaflet/OSM): Touch/Click setzt Marker, Distanz-Mess-
   Linie zeigt Luftlinie zur tatsächlichen Position (erst NACH Tap, nicht
   vorher als Live-Hilfe).
4. **Bewertung pro Versuch:**
   - < 50 km → Treffer (Volle Punkte)
   - 50–200 km → ungenau (halbe Punkte)
   - > 200 km → daneben (kein Punkt, Versuch verloren)
5. Drei Versuche. Bei Fehlversuch ein **Hinweis** (z.B. „Du bist 280 km
   zu östlich" oder Himmelsrichtung anzeigen).
6. **Info-Card** nach Auflösung: Stadtname, Land, Bevölkerung, kurze
   3-Zeilen-Beschreibung, Bild (DALL-E im offiziellen Bildstil — siehe
   Memory `reference_bildstil.md`).

**Score-System (MVP):** Punkte pro Auftrag (3 / 1 / 0 je nach Treffer).
Insgesamt 8–10 Aufträge pro Level → max 30 Punkte. Sterne-Auswertung am
Ende.

### Phase 2 (Erweiterung — zweite Session)

**Wirtschaft drauf:**
1. Nach Karten-Treffer öffnet sich **Rechnungs-Maske**:
   „Wie viele km muss der Bus fahren? Bitte Angebot kalkulieren."
2. Schüler:in tippt Schätzung ein (km).
3. **Konkurrenz-Mechanik**: System zeigt verdeckten Konkurrenz-Preis
   (z.B. 95 % der echten Distanz × Tarif). Wenn eigene Schätzung höher
   → Auftrag verloren (kein Geld). Wenn niedriger → Auftrag gewonnen,
   aber Marge sinkt mit jedem km Differenz.
4. **Budget über mehrere Aufträge** statt Punkte: Startbudget 5 000 €,
   am Ende soll mindestens 7 500 € stehen.

### Phase 3 (Polishing — optional)

- **OSRM-Streckenführung** wie in Logistik. Bisher rechnen wir mit
  Luftlinie × 1.3 (Aufschlag analog Logistik L1). In Phase 3 echte
  Streckenführung über `App/assets/data/lg-roadnet.json` oder OSRM-API,
  damit Schüler:innen verstehen: „durch Berge ist's länger als
  Luftlinie".
- **Luftlinien-Mess-Tool** als Hilfsmittel: Schüler:in kann VOR dem Tap
  auf zwei Punkte tippen und bekommt Luftlinie angezeigt — Hilfe für
  Schätzung in Rechnungs-Maske.

---

## 4. Aufgabentypen

Vier Typen, in steigender Schwierigkeit:

| Typ | Beispiel | Hinweis-Form |
|-----|----------|--------------|
| **A** Hauptstadt direkt | „Fahre nach Paris" | Stadtname genannt |
| **B** Hauptstadt via Land | „Fahre in die Hauptstadt von Frankreich. Wie heißt sie?" (Single Choice) | Land genannt, Stadt erraten |
| **C** Stadt direkt (kein Hauptstadt) | „Fahre nach Hamburg" | Stadtname genannt |
| **D** Beschreibungs-basiert | „Fahre in die größte Stadt Skandinaviens" | Schüler:in muss schließen |

Levels:
- **L1 — DACH:** AT, DE, CH, IT, FR, BE, NL — Aufgabentypen A + B (8 Aufträge).
- **L2 — West-/Mitteleuropa:** + Skandinavien, Iberien — alle Typen (10 Aufträge).
- **L3 — Ganz Europa:** + Osten, Balkan, Türkei — alle Typen, Typ D häufiger (12 Aufträge).

---

## 5. Daten-Struktur

### `assets/data/cities.json`

```json
[
  {
    "id": "paris",
    "title": "Paris",
    "country": "Frankreich",
    "isCapital": true,
    "lat": 48.8566,
    "lon": 2.3522,
    "population_million": 2.1,
    "infoText": "Paris liegt an der Seine. ...",
    "imagePath": "assets/img/cities/paris.png",
    "level": 1
  }
]
```

Erstausstattung: 30–40 europäische Städte/Hauptstädte. Bilder dazu im
Bildstil (siehe Memory `reference_bildstil.md`). Mehrere existieren
schon in `App/sims/logistik/assets/cities/_original/` (paris.png,
berlin.png, madrid.png, london.png … ~50 Stück) — **diese
wiederverwenden**, nicht neu generieren.

### `assets/data/orders.json`

```json
[
  {
    "id": "ord-1",
    "level": 1,
    "type": "A",
    "cityId": "paris",
    "prompt": "Fahre nach Paris — Frankreichs Hauptstadt liegt an der Seine.",
    "tariffPerKm": 1.20,
    "fixedFee": 200
  }
]
```

### Schätzungs-Schwellen für Bewertung

```js
const HIT_THRESHOLDS = {
  PERFECT: 50,    // < 50 km Abweichung = volle Punkte
  OK:      200,   // 50–200 km = halbe Punkte
  // > 200 km = Fehlversuch
};
```

---

## 6. Tools

- **Leaflet 1.9.4** mit Carto Positron via tile-proxy
  (`App/php/tile-proxy.php` existiert schon, von Logistik mitgenutzt)
- **Marker-Pins** für eigene Tipps, Ziel-Marker erscheint erst
  NACH Auflösung
- **Distanz-Polyline** zwischen Tap und echter Position (Luftlinie)
- **Optional Phase 2:** Lineal-Tool zum Vorab-Messen
  (Tap A + Tap B → Luftlinie in km anzeigen)

---

## 7. Wiederverwendung aus Logistik

| Was | Pfad |
|------|------|
| Tile-Proxy | `App/php/tile-proxy.php` |
| Bildstil-Generator | `App/sims/logistik/scripts/generate-splash-images.sh` |
| Stadt-Bilder | `App/sims/logistik/assets/cities/_original/` (~50 Stück, im Bildstil) |
| Routenführung (für Phase 3) | `App/assets/data/lg-roadnet.json` |
| Mulberry32-RNG (Order-Shuffle) | `App/sims/logistik/headless-runner.js` |
| Modal-Pattern (iPad-Polish) | Memory `feedback_ipad_overlay_pattern.md` |

**Wichtig:** Vor jeder Bildgenerierung Memory `reference_bildstil.md`
beachten — verbindlicher Prompt-Block. Einheitlicher Stil ist Pflicht.

---

## 8. Phasenplan

- [ ] **Phase 0** — Atlas baut Modul-Gerüst:
  - DB: `module_info`-Eintrag (slug `busfahrt`, group „Wirtschaft &
    Verkehr", Status `aufbau`)
  - PHP-Wrapper `App/pages/busfahrt.php`
  - Sim-Skelett `App/sims/busfahrt/{game.html, engine.js, README.md}`
  - Landing-Card auf Schülerseite (LOCKED bis FREE-Stempel)
- [ ] **Phase 1** — MVP (Karte tippen, 3 Versuche, Info-Card, Punkte)
- [ ] **Phase 2** — Wirtschaft (Rechnungs-Maske, Konkurrenz, Budget)
- [ ] **Phase 3** — OSRM-Streckenführung, Lineal-Tool

Phase 1 sollte **nach einer einzigen Programmiersession spielbar** sein.

---

## 9. Pflicht-Konventionen (kurz)

- **Sprachregel 4a:** keine „spielen / Spiel / Spieler" — wir sagen
  „Bearbeiter:in", „Tour", „Auftrag", „Fahrt". Memory
  `feedback_keine_spielsprache.md`.
- **Easy-Sprache 4b:** alle Auftragstexte zweisprachig (normal +
  Leichte Sprache via `pickText()`).
- **iPad-Pattern:** Modale mit `dvh`, safe-area, sticky-Buttons,
  Float-✕. Memory `feedback_ipad_overlay_pattern.md`.
- **Bildstil:** Memory `reference_bildstil.md` — Flat Scandinavian
  Illustration, verbindliche Farbpalette.
- **Inbox-Check vor Fertig:** Memory `feedback_inbox_check_vor_fertig.md`.
- **Keine KI im Produkt:** Auftragstexte und Konkurrenz-Preise
  vorab fixiert oder parametrisch, KEIN Live-Aufruf an OpenAI/Anthropic.

---

## 10. Erste Schritte

1. Diese Mail lesen, Status auf `gelesen` setzen.
2. `App/docs/module-interface.md` Abschnitt 4 a/b/c lesen
   (falls noch nicht gemacht).
3. Atlas-Mail in `_inbox/zentrale/` schreiben mit Empfangsbestätigung
   und ggf. Rückfragen.
4. **WARTEN auf Atlas-Gerüst** (Modul-Skelett + DB-Eintrag) — das ist
   Atlas-Territorium.
5. Sobald Gerüst steht: `cities.json` und `orders.json` als erste
   Datenstrukturen anlegen — Bilder aus Logistik-Pool ziehen.
6. Phase 1 implementieren.

---

## 11. Komplexitäts-Erinnerung

Diese Sim soll **klein bleiben**. Wenn dir während der Implementierung
einfällt: „Och, könnte man auch noch X einbauen" → bitte ablehnen oder
in den Phasenplan schieben. Thomas baut bewusst auch einfache,
konzentrierte Sims — nicht alles muss Logistik-groß werden.

Faustregel: **MVP < 800 Zeilen game.html-JS, < 400 Zeilen engine.js**.

---

## 12. Glossar-Bedarf

Die Begriffe für die Glossar-DB werden später angefragt (siehe
Logistik-Pattern). Für die MVP-Phase sind keine Glossar-Verweise
zwingend — sobald Phase 2 (Wirtschaft) drankommt, lohnt sich
`Angebot`, `Tarif`, `Marge`, `Konkurrenz`, `Luftlinie`, `Maßstab`.

Lehrplan-Anfrage und Glossar-Anfrage **erst nach Phase 1**, sonst
verzettelst du dich.

— Logistik-Instanz (im Auftrag von Thomas)
