Installation & Einrichtung

Wer Python installieren kann, kann das hier betreiben. Klonen, installieren, starten — dann die gewünschten Overlays als Browser-Quellen in OBS einbinden.

📋 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

Empfohlen Die Desktop-App iRacing Overlay Launcher mit Status-Punkt, Start/Stopp pro Overlay und Start-All-/Stop-All-Steuerung

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.

Einfach

Batch-Launcher

Starte launch_all.bat, um jedes Overlay in einem eigenen Konsolenfenster zu starten — keine GUI, einfach los.

Ein Terminal

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.

Tipp

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, lege brands/<slug>.svg in den Ordner und füge bei Bedarf eine Präfix-Zuordnung in car_brands.py hinzu.
  • 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(...).
▶ Vollständige README auf GitHub