Files
geograsim/App/sims/logistik/admin-fields.json
T
Adminator fc8996f064 Atlas: DSGVO-Tile-Proxy + Logistik-Phase-bis-8 + Sounds-Anleitung
Platform:
- OSM-DE als dritter Tile-Proxy-Provider (deutsche Beschriftungen)
- logistik.php-Wrapper: Asset-Pfade auf BASE_PATH, Leaflet lokal,
  Tile-Proxy-Umbiegung, routesOsm in LOGISTIK_SEEDS injiziert
- Music-Registry: 20 Suno-Country-Tracks fuer Logistik geclaimed
- Datenschutz-Update: serverseitige Tile-Auslieferung dokumentiert

Logistik (Instanz-Lieferungen, parallel):
- Phase 0 bis 8 inkl. Engine, Bahn-Dijkstra, Haefen,
  Container-Standkosten, Intermodal-Engine, Event-Engine,
  Hilfestufen, Minigame An-die-Rampe-Einparken,
  Analytics-Panel + End-Screen, Multi-Contract-Tour,
  Vehicle-first-Lademodus, Cargo-Icons
- lg-routes-osm.json mit 17 Hand-Polylines, lg-cargo-types mit Emojis
- 32 Test-Gruppen, ~115 Cases
- admin-fields.json fuer Admin-UI-Integration

Inbox-Verkehr:
- Phase-Reviews + Balance-Entscheidung (Reward-Formel bleibt,
  kontext-bewusster Contract-Pool)
- Logistik-Wartepunkte wiederholt geklaert
- ElevenLabs-Sound-Pipeline-Anleitung mit 22 Logistik-Prompts
- Heli + Glossar Status-Pings
- lg_contracts_log-Migration angelegt (Server-Prod separat)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 08:15:00 +02:00

227 lines
8.1 KiB
JSON
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.
{
"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." }
]
}
]
}