--- 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)