📋 Voraussetzungen
- WindowsiRacing läuft nur unter Windows, also leben die Overlays auch dort. (Simulator- und Replay-Modus von iCASControl laufen auch auf macOS und Linux.)
- Python 3.10+Von python.org — bei der Installation „Add Python to PATH“ ankreuzen.
- iRacingAuf demselben Rechner laufend, mit geladener Session.
- OBS StudioOder ein anderes Tool, das Browser-Quellen unterstützt, für den Stream.
📥 Installation
git clone https://github.com/halvar20000/iracing-overlays.git
cd iracing-overlays
pip install -r requirements.txt
Das war's. Die Abhängigkeiten sind Flask, pyirsdk, Pillow, requests und (nur Windows) pywin32.
▶ Overlays starten
GUI-Launcher
Doppelklick auf launch_gui.bat. Eine kleine Desktop-App öffnet sich mit Start-/Stopp-Button und Status-Punkt pro Overlay, dazu Start All / Stop All und ein Log-Fenster.
Batch-Launcher
Starte launch_all.bat, um jedes Overlay in einem eigenen Konsolenfenster zu starten — keine GUI, einfach los.
Ein Befehl
Starte python launch_all.py, um alle Overlays in einem Terminal mit farbcodierten Log-Präfixen zu starten. Du kannst auch jedes Overlay einzeln starten, z. B. python iracing_standings.py.
🎬 Overlays in OBS einbinden
- 1. Gewünschte Overlays startenJedes läuft auf einem eigenen Port — z. B. 5005 für Wertung, 5007 für die Streckenkarte.
- 2. Browser-Quelle hinzufügenIn OBS: Quellen → + → Browser, URL
http://localhost:<port>. - 3. Transparenten Stream-Modus umschaltenDie meisten Overlays starten mit dunklem Debug-Hintergrund. Klicke in die Browser-Quelle (Interagieren) und drücke H, um in den transparenten Stream-Modus zu wechseln. Der Live-Indikator und das Flaggen-Overlay sind immer transparent.
Die Overlays binden an 0.0.0.0, sodass ein zweiter PC im LAN sie unter http://<deine-ip>:<port> erreichen kann — praktisch für einen dedizierten Streaming-PC.
Selbstheilende Browser-Quellen — kein manuelles Refresh
OBS lädt jede Browser-Quelle einmal beim Start; läuft der Overlay-Server noch nicht, bleibt die Quelle leer, bis du Refresh drückst. Um das zu vermeiden, nutze die Loader-Seiten in obs_loaders/: In den Eigenschaften der Browser-Quelle Lokale Datei ankreuzen und z. B. obs_loaders/standings.html wählen statt eine URL einzutragen. Der Loader versucht es automatisch erneut, bis der Server antwortet — die Startreihenfolge ist egal, und Overlays kommen nach einem Neustart von selbst zurück. Mit python make_obs_loaders.py die Loader nach dem Hinzufügen eines neuen Overlays neu erzeugen.
🗺 Offline-Streckenkarte & optionale Freigabe
- Offline-StreckenbibliothekDie Streckenkarte braucht kein iRacing-Login und kein Internet — Geometrie für ~300 Konfigurationen ist in
tracks/als JSON gebundelt. Ist eine Strecke nicht dabei, zeigt sie eine freundliche „TRACK MAP NOT BUNDLED“-Meldung. Die Geometrie stammt aus der SIMRacingApps-Bibliothek (Apache 2.0) und OpenStreetMap (ODbL). - Auto-MarkenlogosDas Wertungs-Overlay zeigt Herstellerlogos aus
brands/*.svg. Um eine Marke hinzuzufügen, legebrands/<slug>.svgin den Ordner und füge bei Bedarf eine Präfix-Zuordnung incar_brands.pyhinzu. - Optionale öffentliche FreigabeDer Race Logger hat schreibgeschützte öffentliche Endpunkte (
/share/chart,/share/standings), sodass Twitch-/Discord-Zuschauer ein Self-Service-Chart öffnen können. Mache sie mit einem kostenlosen Cloudflare-Tunnel zugänglich — nur/share/*-Pfade werden remote ausgeliefert; alle Admin-Endpunkte bleiben lokal.
🔧 Fehlerbehebung
- „Waiting for iRacing“iRacing muss mit geladener Session laufen, nicht nur die UI.
- Skript geändert, aber altes VerhaltenOverlays behalten den alten Code im Speicher — Overlay neu starten.
- Schwarzer Kasten statt Transparenz in OBSIn der Browser-Quelle (Interagieren) H drücken, um den Stream-Modus umzuschalten.
- Port bereits belegtEin anderes Overlay oder eine App belegt den Port; der Port jedes Skripts steht unten in
app.run(...).