{ "moduleId": "logistik", "version": "1.0", "description": "Feldbeschreibungen fuer game_levels.params des Logistik-Moduls. Quelle: App/sims/logistik/balance-matrix.md v0.3.", "groups": [ { "title": "Wirtschaft", "fields": [ { "key": "startBudget", "label": "Startbudget", "labelEasy": "Geld am Anfang", "type": "number", "unit": "€", "min": 0, "max": 100000, "step": 100, "default": 5000, "help": "Kontostand, mit dem der Durchgang beginnt. L1: 8000, L2: 5000, L3: 2500." }, { "key": "minTargetEarnings", "label": "Ziel-Erloes (Erfolgsschwelle)", "labelEasy": "Geld zum Gewinnen", "type": "number", "unit": "€", "min": 0, "max": 100000, "step": 500, "default": 10000, "help": "Mindest-Kontostand am Ende, damit das Level als geschafft gilt. L1: 3000, L2: 10000, L3: 20000." }, { "key": "rentalCostPerDay", "label": "Fahrzeugmiete pro Tag", "labelEasy": "Miete fuer Autos/Zuege pro Tag", "type": "number", "unit": "€/Tag", "min": 0, "max": 5000, "step": 50, "default": 0, "help": "Tagesmiete pro Fahrzeug. 0 auf L1, 200 auf L2, 500 auf L3." }, { "key": "idleCostPerHour", "label": "Standkosten Fahrzeug", "labelEasy": "Kosten wenn Auto steht", "type": "number", "unit": "€/h", "min": 0, "max": 100, "step": 1, "default": 5, "help": "Kosten pro Stunde, in der ein Fahrzeug ungenutzt steht. 0 auf L1, ab L2: 5." }, { "key": "containerStandCostPerHour", "label": "Standkosten Container im Hafen", "labelEasy": "Kosten fuer Container im Hafen pro Stunde", "type": "number", "unit": "€/h", "min": 0, "max": 100, "step": 1, "default": 0, "help": "Demurrage: Gebuehr pro Stunde, die ein Container nach Ankunft noch im Hafen liegt. Erst ab L3 relevant." }, { "key": "latePenaltyOverride", "label": "Verspaetungsstrafe (Anteil pro Stunde)", "labelEasy": "Strafe pro Stunde Verspaetung", "type": "number", "min": 0, "max": 1, "step": 0.05, "default": 0.20, "help": "Anteil des Auftragswertes, der pro Stunde Verspaetung abgezogen wird. 0.10 = 10%. L1: 0.10, L2: 0.20, L3: 0.30." } ] }, { "title": "Auftragslage", "fields": [ { "key": "maxActiveContracts", "label": "Auftraege parallel (max)", "labelEasy": "Auftraege gleichzeitig", "type": "number", "min": 1, "max": 12, "step": 1, "default": 3, "help": "Wie viele Auftraege maximal gleichzeitig offen sein duerfen. L1: 1, L2: 3, L3: 6." }, { "key": "deadlineMultiplier", "label": "Fristlaengen-Multiplikator", "labelEasy": "Zeit-Verlaengerung fuer Abgabe", "type": "number", "unit": "×", "min": 0.5, "max": 3.0, "step": 0.1, "default": 1.2, "help": "Multipliziert die berechnete Standardfrist (distanceKm/60 Std). Werte > 1 sind grosszuegiger. L1: 1.5, L2: 1.2, L3: 1.0." }, { "key": "timeLimitHours", "label": "Zeitlimit Durchgang", "labelEasy": "Zeit bis Durchgang-Ende (Stunden)", "type": "number", "unit": "Sim-h", "min": 1, "max": 240, "step": 1, "default": 48, "help": "Maximale Simulations-Stunden pro Durchgang. L1: 24, L2: 48, L3: 72." }, { "key": "initialTimeScale", "label": "Zeit-Geschwindigkeit Start", "labelEasy": "Tempo am Anfang", "type": "enum", "options": [1, 4, 8], "default": 1, "help": "Wie schnell die Simulationszeit relativ zur Echtzeit laeuft. 1 = realistisch langsam. Bearbeiter:innen koennen live waehrend des Durchgangs wechseln." } ] }, { "title": "Fahrzeugpool", "fields": [ { "key": "vehicleCount", "label": "Fahrzeuge gesamt", "labelEasy": "Anzahl Fahrzeuge", "type": "number", "min": 1, "max": 10, "step": 1, "default": 3, "help": "Anzahl Fahrzeuge im Pool. L1: 1, L2: 3, L3: 5. Typen werden ueber availableVehicleTypes gesteuert." }, { "key": "availableVehicleTypes", "label": "Fahrzeugtypen", "labelEasy": "Welche Fahrzeuge verfuegbar", "type": "multienum", "options": ["TRUCK_SMALL", "TRUCK_LARGE", "TRAIN"], "default": ["TRUCK_SMALL", "TRUCK_LARGE", "TRAIN"], "help": "Welche Fahrzeugtypen im Pool auftauchen. L1: nur TRUCK_SMALL. Ab L2: alle drei. TRAIN nur sinnvoll wenn railEnabled=true." } ] }, { "title": "Didaktik & Hilfen", "fields": [ { "key": "defaultHintMode", "label": "Hilfestufe (Standard)", "labelEasy": "Wie viel Hilfe beim Suchen", "type": "enum", "options": ["BLINK_EXACT", "SHOW_COUNTRY", "SHOW_REGION", "DISTANCE_FEEDBACK", "NONE"], "default": "SHOW_REGION", "help": "Wie viel Hilfe Bearbeiter:innen beim Ortssuchen auf der Karte bekommen. BLINK_EXACT = volle Markierung, NONE = ohne Hinweis. L1: BLINK_EXACT, L2: SHOW_REGION, L3: NONE." }, { "key": "visibleLocationLevel", "label": "Sichtbare Orte (Level)", "labelEasy": "Wie viele Orte auf der Karte", "type": "enum", "options": [1, 2, 3], "default": 2, "help": "Filter fuer die Kartenanzeige: 1 = nur Hauptstaedte, 2 = + Grossstaedte, 3 = alle Orte. Reduziert kognitive Last auf niedrigen Leveln." }, { "key": "minigamesEnabled", "label": "Mini-Aufgaben aktivieren", "labelEasy": "Kleine Spiele an/aus", "type": "boolean", "default": false, "help": "Schaltet die Rampen-Einpark-Aufgabe beim Entladen frei. L1: aus, ab L2: optional." } ] }, { "title": "Ereignisse", "fields": [ { "key": "eventProbabilityMultiplier", "label": "Ereignis-Staerke", "labelEasy": "Wie oft Zwischenfaelle", "type": "number", "min": 0, "max": 2, "step": 0.1, "default": 0.5, "help": "0 = keine Ereignisse (Unfall, Schnee, Hafenstau), 1 = Standard-Haeufigkeit, 2 = doppelt. L1: 0 (Tutorial ohne Pech), L2: 0.5, L3: 1.0." } ] }, { "title": "Verkehrstraeger", "fields": [ { "key": "railEnabled", "label": "Bahnnetz aktiv", "labelEasy": "Zuege erlaubt", "type": "boolean", "default": false, "help": "Wenn aktiv, koennen Aufträge ueber das Bahnnetz (5 Knoten: Wien, Muenchen, Hamburg, Rotterdam, Paris) gefahren werden. Erst ab L3." }, { "key": "portsEnabled", "label": "Haefen aktiv", "labelEasy": "Schiffe erlaubt", "type": "boolean", "default": false, "help": "Wenn aktiv, erscheinen Seehafen-Auftraege (ankommende Schiffe als neue Containerquelle). Erst ab L3." }, { "key": "intermodalEnabled", "label": "Intermodale Ketten", "labelEasy": "Auftraege mit mehreren Fahrzeugen", "type": "boolean", "default": false, "help": "Wenn aktiv, entstehen Auftraege mit erzwungenem Verkehrstraeger-Wechsel (z.B. LKW -> Zug -> LKW). Setzt railEnabled + portsEnabled voraus. Erst ab L3." } ] }, { "title": "Sonstiges (Leichte Sprache)", "fields": [ { "key": "levelNameEasy", "label": "Level-Name (Leichte Sprache)", "labelEasy": "Einfacher Name fuers Level", "type": "text", "maxLength": 64, "default": "", "help": "Kurzer, einfacher Titel als Alternative zum Haupt-Level-Namen. Wird angezeigt, wenn Bearbeiter:in Leichte Sprache aktiviert hat." } ] } ] }