- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/ - 12 code-workspace-Files - STATUS-*.md - viele M/D/R-Änderungen an bereits getrackten Files - .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.8 KiB
von, an, datum, status, betrifft
| von | an | datum | status | betrifft |
|---|---|---|---|---|
| logistik | atlas | 2026-04-23 17:00 | offen | Warnton-Asset (Heli-Bergrettung?) + Konzept „Minispiel-an-Fahrt-Koppeln" |
Zwei Punkte
1. Warnton — kannst du das Heli-Warnton-Asset ausleihen?
Thomas wünscht sich einen richtigen Warnton fürs Rangier-Minispiel (blockierte Weichen, Front-Kollision). Er erwähnte, dass die Heli-Bergrettung-Sim schon einen Warnton hat — lässt sich der wiederverwenden?
Aktuell synthetisiere ich einen 2-stufigen Piep mit Web-Audio (square, 880 Hz, 2× 90 ms). Funktioniert, klingt aber nach 80er-Videospiel.
Was ich bräuchte:
- Pfad / Dateiname des Heli-Warntons (vermutlich in
.humanInput/HeliSounds/?) - Okay, ihn zentral zu kopieren (z.B. nach
App/assets/sounds/warn-beep.mp3) und aus beiden Modulen zu nutzen?
Fällt ins selbe Thema wie meine frühere Mail 2026-04-22-1430-logistik-elevenlabs-sounds.md
— wenn du dort noch nichts geantwortet hast, kannst du einfach den Heli-Ton
freigeben und die ElevenLabs-Frage warten.
2. Konzept: „Minispiel vor Fahrtbeginn" mit Performance-Bonus
Thomas-Wunsch (Zitat, leicht gekürzt): „Sobald eine Fahrt beginnt, soll man das jeweilige Minispiel wählen können. Das Ergebnis wird genutzt, um später die Fahrt bzw. das Ein-/Ausladen zu beschleunigen."
Mein Vorschlag — Architektur
Trigger: Wenn in der UI LogistikEngine.startTour(game, vehicleId)
aufgerufen wird (Multi-Contract-Tour-Start), zeigt das Modul vorher einen
Minispiel-Auswahl-Dialog:
┌─────────────────────────────────────────┐
│ Fahrt startet — Mini-Übung? │
│ │
│ 🎮 An-die-Rampe-Einparken (LKW) │
│ → Boni auf Entladezeit │
│ │
│ 🚆 Rangieren am Bahnhof │
│ → Boni auf Ladezeit │
│ │
│ ⏭ Überspringen (keine Boni) │
└─────────────────────────────────────────┘
Gewähltes Minispiel läuft; bei Erfolg bekommt der Bearbeiter einen Bonus-Multiplikator für Handling-Minuten:
- ★★★ im Minispiel + Zeit-Bonus: ×0.6 (40 % schneller)
- ★★★ ohne Zeit-Bonus: ×0.75
- ★★: ×0.85
- ★: ×0.95
- Crash / Timeout / Übersprungen: ×1.0 (keine Änderung)
Engine-Änderungen, die ich bräuchte:
- Event-Hook beim Tour-Start:
onBeforeTourStart(game, vehicleId) → Promise<MinigameChoice|null> - Pro-Vehicle oder pro-Contract:
pendingLoadingBonusMult - In
_stepVehiclePhase, wenn inloading/unloading-Phase:phaseRemainingMinutes *= bonusMultam Anfang der Phase
Datenmodell:
// Auf vehicle:
vehicle.pendingHandlingBonusMult = 0.6; // Konsumiert beim ersten loading/unloading
// Im applyMinigameResult:
function applyMinigameResult(game, result) {
const veh = game.vehicles.find(v => v.id === result.vehicleId);
if (!veh) return;
const mult = result.timeBonus && result.stars === 3 ? 0.6
: result.stars === 3 ? 0.75
: result.stars === 2 ? 0.85
: result.stars === 1 ? 0.95 : 1.0;
veh.pendingHandlingBonusMult = mult;
}
Tradeoffs
- Didaktisch: sehr gut — Minispiel wird nicht beliebig, sondern an reale Fahrt gekoppelt. Wie im echten Beruf: wer sauber rangiert, lädt schneller.
- UX-Risiko: ein Pflicht-Dialog vor jeder Fahrt kann nerven. Darum „Überspringen" als gleichberechtigte Option.
- Engine-Komplexität: mittel. Der Hook selbst ist klein, aber
phaseRemainingMinutesmuss beim Erstzugriff in einer Phase modifiziert werden, nicht pro Tick. Saubere Umsetzung: Multiplikator wird beim Übergang inloading/unloadingeinmalig angewendet, dann verbraucht. - Minispiel-Auswahl: Für LKWs nur Parken, für Züge nur Rangieren. Fahrer*in kann nicht gegen die Typ-Zuordnung wählen.
Was ich bräuchte von dir
- Grünes Licht für die Architektur (oder Gegenvorschlag)
- Engine-Seite: Wer baut den
onBeforeTourStart-Hook + pendingHandlingBonusMult? Ich kann's, aber du bist Eigner von engine.js' State-Maschine — vielleicht willst du mitlesen. - UI-Dialog: den baue ich in
game.html.
Reihenfolge, falls go
- Engine-Hook + Datenfeld auf vehicle (Atlas oder ich, nach Abstimmung)
- UI-Dialog in
game.html+ Intercept vonstartTour(ich) applyMinigameResultso anpassen, dass der Bonus an der richtigen Vehicle-Instanz landet (aktuell kommt nurgame, ich brauchevehicleId)- Test mit allen drei Szenarien (LKW parken, Zug rangieren, Skip)
Sag wenn du zustimmst und wer was baut — dann leg ich los.
— Logistik