Race Tool – FeaturelisteRace Tool – Feature List
v1.0.0 · Code-verifiziert · Stand März 2026v1.0.0 · Code-verified · As of March 2026
Diese Liste dokumentiert alle implementierten und quellcode-verifizierten Features des DTNR Race Tool in Version 1.0.This list documents all implemented and source-code-verified features of the DTNR Race Tool in version 1.0.
RACE TOOL — FEATURES
DTNR Race Tool
Die Rennverwaltungs-Komponente (PyQt6) für Rennleiter — Organisation, Durchführung, Live-Tracking und Analyse von Rennen auf Daymar.
| Eigenschaft | Details |
|---|---|
| Framework | PyQt6 mit Dark Theme (separates Analysemodus-Theme) |
| Auflösung | Min. 1920×1080, Max. 2560×1440 |
| Divisions-Tabs | Bike · Buggy · Truck (jeweils mit Live-Daten + Statistik) |
| Menüs | Datei · Rennverwaltung · Registrierungen · Karte · Einstellungen |
| Modi | Live-Modus ↔ Analysemodus (Umschalt-Button in der Menüleiste) |
| Splash Screen | Daymar-Landschaft mit Logo und Ladebalken beim Start |
DTNR Race Tool
The race management component (PyQt6) for race directors — organization, execution, live tracking and analysis of races on Daymar.
| Property | Details |
|---|---|
| Framework | PyQt6 with dark theme (separate Analysis Mode theme) |
| Resolution | Min. 1920×1080, Max. 2560×1440 |
| Division Tabs | Bike · Buggy · Truck (each with live data + statistics) |
| Menus | File · Race Management · Registrations · Map · Settings |
| Modes | Live Mode ↔ Analysis Mode (toggle button in the menu bar) |
| Splash Screen | Daymar landscape with logo and loading bar on startup |
UI & Layout
- Hauptlayout: Kartenbereich (links) + Zoom-Steuerung + Seitenpanel (rechts)
- Seitenpanel mit 3 Divisions-Tabs (Bike, Buggy, Truck)
- Jeder Tab: Sub-Tabs Live-Daten + Statistik
- Connection-Panel im Buggy-Tab: Server-Dropdown, Verbinden/Trennen, Status, Team-Feed-Log
- Team-Feed-Log: Scrollbares Log eingehender Nachrichten (max. 300 Zeilen)
- Mausposition als Lat/Lon über der Karte angezeigt
- Zielflaggen-Widget im Analyseleiste-Header
UI & Layout
- Main layout: Map area (left) + Zoom control + Side panel (right)
- Side panel with 3 division tabs (Bike, Buggy, Truck)
- Each tab: Sub-tabs Live Data + Statistics
- Connection panel in the Buggy tab: Server dropdown, Connect/Disconnect, Status, Team Feed Log
- Team Feed Log: Scrollable log of incoming messages (max. 300 lines)
- Mouse position displayed as Lat/Lon above the map
- Checkered flag widget in the Analysis Bar header
Rennverwaltung
- Erstellen eines Rennens: Name, Route, Divisionen, Datum, Uhrzeit
- 5 Phasen: Erstellt → Offen → Startet → Gestartet → Beendet
- Rennparameter zur Laufzeit anpassen: Countdown-Dauer (1–240 min), Update-Intervall (1–120 s)
- Countdown-Dialog mit großem Start-Button und Abbruchoption
- Countdown-Übertragung live an alle verbundenen Nav Tools
- Server-seitige Verteilung: Rennroute und Update-Intervall automatisch an alle Teilnehmer gesendet
- Registrierungen verwalten: Teams genehmigen/ablehnen
- WebSocket-Befehle für den kompletten Renn-Lebenszyklus
Race Management
- Create race: Name, route, divisions, date, time
- 5 phases: Created → Open → Starting → Started → Finished
- Adjust race parameters at runtime: Countdown duration (1–240 min), Update interval (1–120 s)
- Countdown dialog with large start button and cancel option
- Countdown broadcast live to all connected Nav Tools
- Server-side distribution: Race route and update interval automatically sent to all participants
- Manage registrations: Approve/reject teams
- WebSocket commands for complete race lifecycle
Teams & Ranglisten
- Team-Status-Tracking: Pending, Approved, Joined, Ready, Racing, Finished, DNF
- Snapshot-Merge mit Online-/Offline-/Retired-Status
- Automatische Offline-Erkennung bei Timeout (konfigurierbar: race_feed_timeout_s)
- Ranking pro Division basierend auf Restdistanz (Fallback: gefahrene Distanz)
- Ranglisten-Tabelle: Position, Team, Fahrer, RTE/TRK, gefahren, Restdistanz, ETA, Status
- Farbauswahl pro Team für individuelle Track-Farben
- 3 unabhängige Sichtbarkeits-Toggles pro Team: Marker, Track, Route
- Kontextmenü: Karte auf Team zentrieren
Teams & Standings
- Team status tracking: Pending, Approved, Joined, Ready, Racing, Finished, DNF
- Snapshot merge with Online/Offline/Retired status
- Automatic offline detection on timeout (configurable: race_feed_timeout_s)
- Ranking per division based on remaining distance (fallback: driven distance)
- Standings table: Position, Team, Driver, RTE/TRK, driven, remaining distance, ETA, Status
- Color picker per team for individual track colors
- 3 independent visibility toggles per team: Marker, Track, Route
- Context menu: Center map on team
Live-Karte
- Zwei umschaltbare Kartenebenen (Primary / Secondary) mit automatischer 180°-Ausrichtung
- Horizontales Wrap-Around-Rendering für nahtlose Endloskarte
- Team-Marker mit Divisionsfarbe, Label und Richtungsdreieck
- Team-Tracking-Linien (historische Positionen)
- Divisions-Rang-Overlays: P1–P10 pro Division (Bike, Buggy, Truck) auf der Karte
- Offizielle Route: breiter Korridor, dünne Mittellinie, Richtungspfeile, Start-/Zielflaggen, Waypoint-Labels
- Kartengitter (Breiten-/Längengrad) ein-/ausschaltbar
- Tag/Nacht-Overlay mit dynamischem Terminator und Konfigurationsdialog
- Zoom: Mausrad + vertikaler Slider, animiertes Zoom-to-Bounds (650 ms, InOutCubic)
- Rhumb-Line-Interpolation für präzise Routenprojektion
Live Map
- Two switchable map layers (Primary / Secondary) with automatic 180° alignment
- Horizontal wrap-around rendering for seamless infinite map
- Team markers with division color, label and direction triangle
- Team tracking lines (historical positions)
- Division rank overlays: P1–P10 per division (Bike, Buggy, Truck) on the map
- Official route: wide corridor, thin center line, direction arrows, start/finish flags, waypoint labels
- Map grid (latitude/longitude) toggleable
- Day/night overlay with dynamic terminator and configuration dialog
- Zoom: Mouse wheel + vertical slider, animated zoom-to-bounds (650 ms, InOutCubic)
- Rhumb line interpolation for accurate route projection
Statistik & Diagramme
- Top-3-Geschwindigkeitsdiagramme pro Division:
- Geschwindigkeit über Distanz (SpeedDistanceGraphWidget)
- Routen-Geschwindigkeitsprofil (RouteSpeedProfileGraphWidget)
- Einheiten-Umschalter: km/h ↔ m/s
- Statistik-Tab Top-10 mit:
- Restdistanz, ETA, AVG (Durchschnitt), Pace
- T1–T4 (Zwischenzeiten) mit positionsbasierter Maskierung
- Trend (▲/▼/◄) basierend auf gleitendem 3-Punkt-Durchschnitt
- Restdistanz / ETA: Projektion der Team-Position auf offizielle Route
Statistics & Graphs
- Top-3 speed charts per division:
- Speed over Distance (SpeedDistanceGraphWidget)
- Route Speed Profile (RouteSpeedProfileGraphWidget)
- Unit toggle: km/h ↔ m/s
- Statistics Tab Top-10 with:
- Remaining distance, ETA, AVG (average), Pace
- T1–T4 (split times) with position-based masking
- Trend (▲/▼/◄) based on moving 3-point average
- Remaining distance / ETA: Projection of team position onto official route
Analysemodus
- Vollständiger Wiedergabemodus mit eigenem UI-Farbschema
- Umschalten via Modus-Button in der Menüleiste (Live ↔ Analyse)
- Wiedergabesteuerung: Play/Pause, Frame-Stepping (vor/zurück), Geschwindigkeit (0,5×/1×/2×/4×)
- Slider für freie Zeitpositionierung in der Renn-Timeline
- Karte und Ranglisten aktualisieren synchron mit Wiedergabeposition
- Rennarchive laden: Server-Archiv (vom VPS) und lokales Archiv (.race-Dateien)
- Archiv löschen (Server und lokal)
- Renndatei exportieren/speichern
- Verwaltungsdialog mit Datei-Metadaten-Caching für schnellen Mehrfachzugriff
Analysis Mode
- Full replay mode with dedicated UI color scheme
- Switch via Mode button in the menu bar (Live ↔ Analysis)
- Playback controls: Play/Pause, Frame stepping (forward/back), Speed (0.5×/1×/2×/4×)
- Slider for free time positioning in the race timeline
- Map and standings update synchronously with playback position
- Load race archives: Server archive (from VPS) and local archive (.race files)
- Delete archive (server and local)
- Export/save race file
- Management dialog with file metadata caching for fast repeat access
Netzwerk & Daten
- Dual Ingest: UDP-Empfang + WebSocket parallel
- Auto-Reconnect mit konfigurierbarem Intervall und Server-Probe (TCP-Erreichbarkeitsprüfung)
- Always-Live-Modus: automatische Verbindung bei Programmstart
- Server-seitiges Race-Tracking: bis zu 1500 Trackpunkte pro Team, Haversine-Distanz (Daymar-Radius 295 km)
- Crash Recovery: Tracking-State persistiert unter tracking/recovery/
- Server-Tracking-Merge: nahtlose Wiederherstellung bei Verbindungsabbrüchen
- Geöffneter Rennkontext in Config persistiert (sitzungsübergreifend)
Network & Data
- Dual ingest: UDP reception + WebSocket in parallel
- Auto-reconnect with configurable interval and server probe (TCP reachability check)
- Always-live mode: automatic connection on program start
- Server-side race tracking: up to 1500 track points per team, Haversine distance (Daymar radius 295 km)
- Crash recovery: Tracking state persisted under tracking/recovery/
- Server tracking merge: seamless recovery on connection drops
- Opened race context persisted in config (cross-session)
Dateien & Persistenz
- .race-Format: JSON mit Name, Datum, Divisionen, Route, Teams, Phase, Snapshots
- .route-Format: Identisch zum Nav Tool (JSON mit Waypoints)
- Rennlog: Textdatei mit zeitgestempelten Einträgen für alle Rennereignisse
- Konfiguration unter %LOCALAPPDATA%/DTNR-RaceTool/config/
- Standard-Ordner für Renndateien konfigurierbar
- Offizielle Route Auto-Load aus official_route/-Ordner
- Logging unter %LOCALAPPDATA%/DTNR-Tool/logs/
Files & Persistence
- .race format: JSON with name, date, divisions, route, teams, phase, snapshots
- .route format: Identical to Nav Tool (JSON with waypoints)
- Race log: Text file with timestamped entries for all race events
- Configuration under %LOCALAPPDATA%/DTNR-RaceTool/config/
- Default folder for race files configurable
- Official route auto-load from official_route/ folder
- Logging under %LOCALAPPDATA%/DTNR-Tool/logs/