Wiki im Aufbau. Viele Konzepte hier stammen aus Alpha 0.2 und können sich noch ändern. Das Wiki wird zur Version 1.0 finalisiert — vorerst hilft es Closed-Testern und später Early-Access-Spielern bei der Orientierung. Für die aktuellsten und verlässlichsten Infos tritt dem Discord bei — dort werden Änderungen zuerst angekündigt und du kannst direkt nachfragen.

Für die neuesten Infos dem Discord beitreten

Einstellungen (in der Karriere)

Die Einstellungen-App in der Karriere — Sprache, Einheiten, UI- und HUD-Skalierung, änderbar ohne den Spielstand zu verlassen.

In Arbeit. Der erste Entwurf steht, aber Inhalte können sich noch ändern und Screenshots kommen nach und nach dazu. Etwas falsch entdeckt? Sag uns im Discord Bescheid.
Auf dieser Seite

Die Einstellungen-App in der Karriere ist bewusst klein gehalten: drei Bereiche — Sprache, Einheiten, UI-Skalierung —, die du erreichst, ohne den Spielstand zu verlassen. Sie existiert, damit du die beiden Dinge korrigieren kannst, die mitten in der Karriere am ehesten stören (zu kleiner Text bei hoher Auflösung, falsche Geschwindigkeitseinheit), ohne den Umweg über das Hauptmenü. Jedes Bedienelement schreibt in dieselben config.db-Schlüssel wie die Einstellungen im Hauptmenü — die beiden Bildschirme sind also immer einer Meinung.

So öffnest du sie

  • Seitenleiste → Einstellungen (Symbol 19, direkt über Abmelden). In jeder Phase und in der Saison verfügbar.
  • Escape, B oder die Zurück-Schaltfläche in der Kopfzeile schließt sie.

Es gibt weder eine Speichern- noch eine Übernehmen-Schaltfläche. Jeder Klick schreibt auf die Festplatte und wirkt sofort.

Sprache

Eine Reihe von Flaggen-Schaltflächen, eine pro verfügbarer Sprache. Die aktive ist anthrazit gefüllt mit bernsteinfarbenem Rand; beim Überfahren erscheint der Name der Sprache in ihrer eigenen Schreibweise als Hilfe-Blase. Eine Sprache ohne Flaggenbild fällt auf ihr Kürzel in Großbuchstaben zurück.

Sechs eingebaute Sprachen werden mit dem Spiel ausgeliefert:

KürzelNameFlagge
enEnglishgb
frFrançaisfr
esEspañoles
itItalianoit
deDeutschde
pt-BRPortuguês (BR)br

Zusätzlich wird beim Öffnen des Bildschirms mods/lang/*.txt eingelesen: jedes dort gefundene Community-Sprachpaket wird ebenfalls angeboten und nutzt die Kopfzeilen #name: und #flag: aus der Datei für Beschriftung und Flagge. Ein Paket kann keine eingebaute Sprache überschreiben — eine mods/lang/fr.txt wird zugunsten des mitgelieferten Französisch ignoriert. Im Steam-Next-Fest-Demo-Build ist die Mod-Unterstützung zur Kompilierzeit deaktiviert, es werden nur die sechs eingebauten Sprachen gelistet.

Der Wechsel erfolgt im laufenden Betrieb — kein Neustart, kein Neuladen des Spielstands:

  1. Das Wörterbuch für das neue Kürzel wird geladen.
  2. Ein globaler Übersetzungs-Epochenzähler wird erhöht, was jede zwischengespeicherte geparste Vorlage im Spiel ungültig macht (die Vorlagen-Caches mischen die Epoche in ihren Variablen-Hash).
  3. ui/language wird in config.db geschrieben.
  4. Dieser Bildschirm verwirft seine eigene zwischengespeicherte Vorlage und zeichnet sich im selben Frame in der neuen Sprache neu.

Die Auswahl eines unbekannten Kürzels fällt stillschweigend auf en zurück.

Eine bewusste Ausnahme: die Tutorial-Sprachausgabe ist über die Schritt-ID adressiert, die gesprochenen Hinweise bleiben also in jeder Sprache englisch, auch wenn der Bildschirmtext übersetzt ist.

Einheiten

Zwei Umschalt-Schaltflächen.

SchaltflächeWerteGilt für
Geschwindigkeitkm/hmph„Geschwindigkeitseinheit im gesamten Spiel (HUD, Fahrzeugdaten, Profile).”
Temperatur°C°F„Temperatureinheit für Reifen, Motor und Wetteranzeigen.”

Jeder Klick kippt den Wert, schiebt ihn in die gemeinsamen Win95-Formatierungshelfer (set_speed_unit_kmh / set_temp_unit_c), damit sich jeder Bildschirm in der neuen Einheit neu zeichnet, und schreibt den Schlüssel sofort. Das sind reine Anzeigeumrechnungen — an der Simulation ändert sich nichts.

UI-Skalierung

Drei Voreinstellungen für den Zoom der Win95-Karriereoberfläche: 100 %, 125 %, 150 %. Die aktive steht in eckigen Klammern ([125%]). Hilfetext: „Zoom der gesamten Karriereoberfläche. Wirkt sofort.”

Ein Klick auf eine Voreinstellung ruft markup::set_ui_scale auf, schreibt den Schlüssel und verwirft die zwischengespeicherte Vorlage — weil sich die Größe des Layouts ändert, muss die geparste Vorlage neu aufgebaut werden.

Das ist die Lösung für zu kleinen Text auf einem hochauflösenden Bildschirm und zugleich die Einstellung, die am ehesten eine Liste über ihr Fenster hinauslaufen lässt. Dafür ist gesorgt: jeder Seitenleisten-Bildschirm außer dem Desktop nutzt den generischen Seiten-Scroll, dessen Bereich aus der tatsächlich gelayouteten Inhaltshöhe gemessen wird. Wirkt bei 150 % trotzdem etwas abgeschnitten, enthält die Zeile [app-scroll], die bei jedem App-Start in debug.log geschrieben wird, ui_scale, viewport_h, content_h, overflow und max_scroll — genau diese Zeile braucht ein Fehlerbericht. Siehe Karriere-Desktop & Seitenleiste.

Was diese App nicht abdeckt

Die Karriere-Einstellungen sind eine Teilmenge. Insbesondere ist die Renn-HUD-Skalierung nicht hier — sie liegt im Hauptmenü unter Einstellungen → Anzeige, beschriftet als „Renn-HUD-Skalierung” mit denselben Voreinstellungen 100 / 125 / 150, und schreibt hud.race_hud_scale. Da das Renn-HUD nur während einer laufenden Session existiert, ist der praktische Weg das Pausenmenü im Rennen: Escape → Einstellungen während einer Session öffnet den vollständigen Einstellungen-Bildschirm als Overlay, und das Rennen liest die HUD-Skalierung beim Schließen neu ein.

Alles Weitere bleibt ebenfalls im vollständigen Einstellungen-Bildschirm: Anzeige (VSync, FPS-Limit, Vollbild, Auflösung, Replay-Aufzeichnung), Ton (Motor- / Funk- / Fahrer- / Musiklautstärke), Simulations-Regler, Karriere-Regler (Preisgelder, finanzielle Intelligenz der KI, Balancing-Multiplikatoren), Tastenbelegung, Ereignisse (Auto-Aktionen pro Ereignis in laufenden Sessions) und der nur mit --dev verfügbare Dev-Reiter.

Die Schlüssel, die sie schreibt

BedienelementBereichSchlüsselGeschriebener Wert
Spracheuilanguagedas Sprachkürzel, z. B. fr, pt-BR
Geschwindigkeitseinheithudspeed_unit_kmh1 = km/h, 0 = mph
Temperatureinheithudtemp_unit_c1 = °C, 0 = °F
UI-Skalierunghudui_scale1.00 / 1.25 / 1.50
(nur Hauptmenü-Einstellungen)hudrace_hud_scale1.00 / 1.25 / 1.50

config.db ist eine SQLite-Datei mit einer einzigen Tabelle config(scope, key, value), primärschlüsselnd auf (scope, key). Lesevorgänge, die nichts finden, fallen auf einen Standardwert zurück: ui_scale → 1.0, beide Einheiten-Flags → wahr (km/h und °C).

Für Fortgeschrittene

  • Seit 0.5.1 liegt die zur Laufzeit genutzte config.db in deinem Benutzerdatenverzeichnis, nicht mehr im Spielordner. Einstellungen sind Spielerdaten, und ein Steam-Depot-Update hat deine angepassten Werte früher bei jedem Patch überschrieben.

    PlattformOrt
    Linux$XDG_DATA_HOME/TheUndercut/ sonst ~/.local/share/TheUndercut/
    Windows%APPDATA%\TheUndercut\
    macOS~/Library/Application Support/TheUndercut/

    Eine Umgebungsvariable UNDERCUT_DATA_DIR hat Vorrang, und eine Portable-Marker-Datei neben der ausführbaren Datei erzwingt den Spielordner. Die im Installationsverzeichnis mitgelieferte config.db ist nur die Saat: sie mit sqlite3 zu bearbeiten ändert nichts an dem, was ein laufendes Spiel liest.

  • Die Karriere-App schreibt beim Klick, die Hauptmenü-Einstellungen beim Speichern. Beide wenden ihre Änderungen live an, aber der vollständige Einstellungen-Bildschirm speichert nur, wenn du bestätigst. Stellst du die Einheiten im Hauptmenü ein und beendest ohne zu speichern, sind sie wieder weg. Die Karriere-App hat diese Falle nicht.

  • Gespeicherte Einstellungen werden zusammengeführt, nicht überschrieben. Schlüssel, die du (oder ein Mod) von Hand ergänzt hast, bleiben erhalten.

  • Schreibvorgänge in config.db laufen mit synchronous=NORMAL unter WAL. Das ist sicher gegen Datenverlust und bedeutet, dass eine Einstellungsänderung nicht pro Schlüssel ein fsync auslöst. Der Karriere-Speicher-Pfad behält bewusst synchronous=FULL — hier geht es nur um Voreinstellungen.

  • Erzwungene Migrationen können einen von dir angepassten Schlüssel überschreiben. CONFIG_MIGRATIONS-Zeilen laufen genau einmal pro config.db, adressiert über eine Migrations-ID, und existieren, damit ein Balancing-Fix jeden bestehenden Spieler erreicht. Springt ein von dir gesetzter Wert nach einem Update zurück, ist das der Grund; eine Zeile [config_db] migration <id> applied: … in debug.log benennt sie.

  • Auf Steam überschreibt ein Depot-Update die mitgelieferte config.db-Saat, nicht deine Benutzerkopie. display_config.txt ist aus demselben Grund bewusst vom Packen ausgenommen — die VSync-/FPS-Limit-Einstellung eines Spielers bei jedem Update zu überschreiben, wäre unhöflich.

  • Sprachpakete sind Inhalte, keine Spielstanddaten. Sie bleiben im mods/lang/ des Spielordners, werden also nicht cloud-synchronisiert und geraten nicht mit dem Workshop in Konflikt.

  • Die gesamte Oberfläche ist auf Englisch als Übersetzungsschlüssel geschrieben. Jede dem Spiel hinzugefügte Zeichenkette wird mit ihrem lang/fr.txt-Gegenstück ausgeliefert, und fr.txt ist die Referenzdatei, aus der die anderen fünf fortgeschrieben werden. Ein Auslieferungs-Build muss in jeder eingebauten Sprache 0 MISSING melden.

Häufige Fehler

  • Die config.db im Installationsordner bearbeiten. Seit 0.5.1 ist das nur noch die Saat. Ändere die Einstellungen im Spiel oder bearbeite die Kopie in deinem Benutzerdatenverzeichnis.
  • Hier nach der Renn-HUD-Skalierung suchen. Sie liegt im Hauptmenü unter Einstellungen → Anzeige oder im Escape → Einstellungen-Overlay im Rennen.
  • Hier nach Lautstärken, Preisgeldern oder KI-Reglern suchen. Die stehen in den Reitern Ton / Karriere des vollständigen Einstellungen-Bildschirms.
  • Einheiten im Hauptmenü setzen und ohne Speichern beenden. Der Hauptmenü-Bildschirm speichert beim Speichern, die Karriere-App beim Klick.
  • Erwarten, dass 150 % UI-Skalierung Listen zerlegt. Tut sie nicht — der Seiten-Scroll misst den tatsächlichen Inhalt. Ist doch etwas abgeschnitten, hol die [app-scroll]-Zeile aus debug.log für den Bericht.
  • Ein Sprachpaket nach einer eingebauten Sprache benennen. mods/lang/de.txt wird schlicht ignoriert; nimm ein unbenutztes Kürzel.
  • Erwarten, dass die Tutorial-Sprachausgabe übersetzt wird. Sie ist über die Schritt-ID adressiert und bleibt bewusst englisch.

Siehe auch