Live Capture¶
ApexLab supports 8 simulators for live telemetry capture. The capture pipeline runs in the background while you drive.
Supported Simulators¶
| Simulator | Status | Protocol |
|---|---|---|
| Le Mans Ultimate / rF2 | Stable | Shared Memory (SMMP plugin) |
| Assetto Corsa Classic | Beta | UDP |
| Assetto Corsa Competizione | Beta | Shared Memory |
| iRacing | Beta | — |
| F1 (Codemasters/EA) | Beta | UDP |
| Automobilista 2 | Beta | Shared Memory |
| Forza | Beta | UDP |
| File Import | Internal | — |
LMU / rF2 Setup¶
- In LMU: Settings → Plugins → enable rFactor2 Shared Memory Map Plugin
- Restart LMU
- In ApexLab: the live capture starts automatically when a session is active
Plugin location
Steam\steamapps\common\Le Mans Ultimate\Installed\rFactor2\Bin64\Plugins\
The file rFactor2SharedMemoryMapPlugin64.dll must be present.
Recording Flow¶
rF2 shared memory
→ LmuSharedMemorySampler.TrySample() at 40 Hz
→ LmuLiveRecorder: accumulate TelemetryPoint[], detect lap change
→ LapCompleted event → LiveCaptureService accumulates Laps
→ Auto-save (5 laps or 10s idle)
→ CsvTelemetryWriter → Sessions/sess_{guid}.csv
→ SessionCatalogStore.RegisterFile() → sessions.db
→ SyncService → POST /v1/sessions → Neon Postgres
Auto-Save¶
Recording auto-saves to disk when: - 5 laps have been completed, or - 10 seconds have passed since the last lap (idle timeout)
After saving, SyncService uploads the session summary to the API in the background.
Live HUD¶
The HudWindow overlay shows real-time delta (Δ) vs. the reference lap during recording. It can be positioned anywhere on screen and hidden via:
- Settings → Masquer l'encart Δ sur la carte
- Settings → Masquer le Δ dans la barre de statut
Connector Architecture¶
Each simulator is represented by an IGameLiveSampler implementation. ConnectorCatalog registers all available samplers. LiveCaptureService uses GameSamplerFactory to create the right sampler for the selected game.
To add a new simulator, see Adding a Simulator.