Skip to content

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

  1. In LMU: Settings → Plugins → enable rFactor2 Shared Memory Map Plugin
  2. Restart LMU
  3. 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.