Sim Commander Software Documentation
Completed
What Does Cloud Tuning Do?
4157 Views •SimXperience Driver Installation
4378 Views •Expert Update Troubleshooting & Testing
3375 Views •Compatibility With Other Hardware & Software
4357 Views •Launching Games in VR
4993 Views •Conditional Effect Group Intro
3782 Views •Sim Commander API / SDK - Open Game Telemetry
10360 Views •Manually Restore Sim Commander Settings From Backup
3851 Views •Sim Commander UDP Output
71 Views •Sim Commander 4.5 Quick Start Guide
33126 Views •Sim Commander API / SDK - Open Game Telemetry
10360 Views •Managing Games In Sim Commander
7380 Views •Game Specific Configuration
6155 Views •Sim Commander Tuning Quick Start Guide
5207 Views •How To Add Games That Weren't Detected
5076 Views •Launching Games in VR
4993 Views •Sim Commander Heads Up Display (HUD) Gauge Tutorial
4880 Views •How To Reset a Profile To Default Settings
4682 Views •How Do I Use Cloud Tuning?
4451 Views •SimXperience Driver Installation
4378 Views •Compatibility With Other Hardware & Software
4357 Views •What Does Cloud Tuning Do?
4157 Views •How To Auto Discover Games/Profiles
4082 Views •How To Stay Connected To iRacing
3981 Views •Understanding Configuration Warnings
3922 Views •Manually Restore Sim Commander Settings From Backup
3851 Views •Conditional Effect Group Intro
3782 Views •How To Reset Profile To Defaults
3765 Views •How To Auto Tune From Lap
3684 Views •Sim Commander UDP Output
SimXperience Motion Data UDP Export Documentation
Overview
This document describes the UDP export feature for motion data and telemetry data in SimXperience Sim Commander software. The system emits real-time motion data from the Sim Commander as JSON over UDP, enabling third-party applications to consume and process the data.
Note: Not all data is available from all games.
Note: Motion data, which is processed at a higher rate and standard telemetry data, are output on separate UDP ports. The feature can be enabled/disabled and the ports defined in the SimXperience Control Center UI:
• Protocol Name: SimXperience.MotionData
• Version: 1
• Transport: UDP, UTF-8 JSON payload
• Default Destination: 127.0.0.1:{MotionDataExportUDPPort} (configurable via settings)
• Enable Flag: CommanderSettings.EnableSimXperienceGameDataUDPExport (configurable via settings)
• JSON Naming: camelCase (via System.Text.Json with JsonNamingPolicy.CamelCase)
Payload Envelope
The top-level JSON structure includes metadata for protocol identification and timing.
• protocol (string): Constant value "SimXperience.MotionData" – verify this to ensure correct packet.
• version (int): Schema version (currently 1).
• timestampUtc (string): ISO 8601 UTC timestamp when the packet was emitted (authoritative for cross-system correlation).
• motionData (object): The ConditionedMotionData payload.
Example JSON Payload
{
"protocol": "SimXperience.MotionData",
"version": 1,
"timestampUtc": "2025-11-06T12:34:56.789Z",
"motionData": {
"matchKey": 0.123,
"currentLapNumber": 3,
"currentLapTime": 82.456,
"timeDelta": 2.0,
"isDriverInVehicle": true,
"yaw": -12.34,
"pitch": 1.5,
"roll": 0.25,
"lateralGForce": 0.85,
"longitudinalGForce": -0.12,
"engineRPM": 7400.0,
"currentGear": 4,
"steeringAngleDegrees": -15.0,
"steeringTorqueNm": 1.25
}
}
Field Schema
Units are based on explicit suffixes in the code (e.g., Degrees, RPM) or standard automotive conventions. Some fields may be empty or XmlIgnore/NonSerialized depending on the plugin.
Meta
• matchKey (Double, dimensionless): Session match/progress key.
• currentLapNumber (Integer, laps): Current lap index.
• currentLapTime (Double, seconds): Elapsed lap time.
• lastLapTime (Double, seconds): Last lap time.
• timeDelta (Double, milliseconds): Sample delta/time-interval used by conditioning (default 10000 on start; typical values in ms).
• isDriverInVehicle (Boolean, N/A): Whether driver is in vehicle.
• isReplayPlaying (Boolean, N/A): Whether a replay is playing.
Debug
• debug1 to debug8 (Double, implementation-defined): Debug values provided by conversions or plugin.
Orientation (degrees)
• yaw (Double, degrees): Vehicle yaw (heading).
• pitch (Double, degrees): Vehicle pitch.
• roll (Double, degrees): Vehicle roll.
Lat/Long Speed / Heading
• latLongSpeedAngle (Double, degrees): Angle of resultant lateral/longitudinal speed (plugin-specific).
• latLongSpeedAngleSpeed (Double, degrees/sec): Angular speed of lat/long speed angle.
Angular Velocities (degrees/sec)
• pitchVelocity (Double, deg/s): Pitch velocity.
• rollVelocity (Double, deg/s): Roll velocity.
• yawVelocity (Double, deg/s): Yaw velocity.
Angular Accelerations (degrees/sec²)
• yawAcceleration (Double, deg/s²): Yaw acceleration.
• pitchAcceleration (Double, deg/s²): Pitch acceleration.
• rollAcceleration (Double, deg/s²): Roll acceleration.
World Coordinates (position)
• positionX (Double, meters (assumed)): World X position.
• positionY (Double, meters): World Y position.
• positionZ (Double, meters): World Z position.
World Velocity/Acceleration
• speedX (Double, m/s): X velocity.
• speedY (Double, m/s): Y velocity.
• speedZ (Double, m/s): Z velocity.
• accelerationX (Double, m/s²): X acceleration.
• accelerationY (Double, m/s²): Y acceleration.
• accelerationZ (Double, m/s²): Z acceleration.
Car-Local Speeds
• lateralSpeed (Double, m/s): Lateral speed in car coordinates.
• longitudinalSpeed (Double, m/s): Longitudinal speed in car coordinates.
• verticalSpeed (Double, m/s): Vertical speed in car coordinates.
G-Forces
• lateralGForce (Double, g): Lateral acceleration in g (1g ≈ 9.81 m/s²).
• longitudinalGForce (Double, g): Longitudinal acceleration in g.
• verticalGForce (Double, g): Vertical acceleration in g.
Body Orientation Relative to Chassis
• bodyRoll (Double, degrees): Relative to chassis.
• bodyPitch (Double, degrees): Relative to chassis.
Wheel / Suspension / Grip
• frontLeftGripFraction (Double, fraction (0..1)): Grip fraction.
• frontLeftWheelSpeed (Double, typically RPM): Wheel speed (check plugin).
• frontLeftSuspensionPosition (Double, meters): Suspension travel/position.
• frontLeftSuspensionSpeed (Double, m/s or m/s-derived): Suspension speed.
• frontLeftSuspensionAccel (Double, m/s² (XmlIgnore)): Suspension acceleration.
• frontLeftSuspensionSurge (Double, plugin-specific): Surge value.
• rearLeftGripFraction (Double, fraction (0..1)): Grip fraction.
• rearLeftWheelSpeed (Double, typically RPM): Wheel speed.
• rearLeftSuspensionPosition (Double, meters): Suspension travel/position.
• rearLeftSuspensionSpeed (Double, m/s or m/s-derived): Suspension speed.
• rearLeftSuspensionAccel (Double, m/s² (XmlIgnore)): Suspension acceleration.
• rearLeftSuspensionSurge (Double, plugin-specific): Surge value.
• frontRightGripFraction (Double, fraction (0..1)): Grip fraction.
• frontRightWheelSpeed (Double, typically RPM): Wheel speed.
• frontRightSuspensionPosition (Double, meters): Suspension travel/position.
• frontRightSuspensionSpeed (Double, m/s or m/s-derived): Suspension speed.
• frontRightSuspensionAccel (Double, m/s² (XmlIgnore)): Suspension acceleration.
• frontRightSuspensionSurge (Double, plugin-specific): Surge value.
• rearRightGripFraction (Double, fraction (0..1)): Grip fraction.
• rearRightWheelSpeed (Double, typically RPM): Wheel speed.
• rearRightSuspensionPosition (Double, meters): Suspension travel/position.
• rearRightSuspensionSpeed (Double, m/s or m/s-derived): Suspension speed.
• rearRightSuspensionAccel (Double, m/s² (XmlIgnore)): Suspension acceleration.
• rearRightSuspensionSurge (Double, plugin-specific): Surge value.
Drivetrain / Engine
• currentGear (Integer, gear index (1..N; plugin-dependent; some compatibility keys alter index)): Current gear.
• engineRPM (Double, RPM): Engine revolutions per minute.
• engineRPMMax (Double, RPM (XmlIgnore)): Maximum engine RPM.
• clutchRPS (Double, revolutions per second): Clutch speed.
Surge / High-Frequency Derivatives
• lateralSurge (Double, plugin-specific): Surge value.
• longitudinalSurge (Double, plugin-specific): Surge value.
• verticalSurge (Double, plugin-specific): Surge value.
• rollSurge (Double, plugin-specific): Surge value.
• pitchSurge (Double, plugin-specific): Surge value.
• yawSurge (Double, plugin-specific): Surge value.
Suspension Angles
• suspensionRollAngle (Double, degrees): Suspension roll angle.
• suspensionPitchAngle (Double, degrees): Suspension pitch angle.
• suspensionRollAngleSpeed (Double, deg/s): Suspension roll angular speed.
• suspensionPitchAngleSpeed (Double, deg/s): Suspension pitch angular speed.
• suspensionRollAngleAccel (Double, deg/s²): Suspension roll angular acceleration.
• suspensionPitchAngleAccel (Double, deg/s²): Suspension pitch angular acceleration.
• frontSuspensionAngle (Double, degrees): Front suspension angle.
• frontSuspensionPosition (Double, meters): Front suspension position.
• rearSuspensionAngle (Double, degrees): Rear suspension angle.
• rearSuspensionPosition (Double, meters): Rear suspension position.
Shifter / Gearbox
• shifterGrindRPM (Double, RPM): Shifter grind RPM.
• shifterFrictionalTorque (Double, N·m (plugin-specific)): Shifter frictional torque.
Stability / Handling
• idealYawVelocity (Double, deg/s (XmlIgnore)): Ideal yaw velocity.
• overSteer (Double, implementation-defined): Oversteer value.
Steering / Wheel Interface
• steeringTorquePercent (Double, percent or percent-of-max (plugin-specific scale, often -100..100)): Steering torque percentage.
• steeringTorqueNm (Double, N·m): Steering torque in Newton-meters.
• interpolatedSteeringTorque (SteeringTorqueData, object containing interpolation samples (see type definition)): Interpolated steering torque.
• steeringAngleDegrees (Double, degrees): Wheel/steering angle.
• maxSteeringAngleDegrees (Double, degrees): Maximum wheel angle (0 if unknown).
• upShiftLockoutForce (Double, N? (plugin-specific)): Up shift lockout force.
• downShiftLockoutForce (Double, N? (plugin-specific)): Down shift lockout force.
Other
• otherInputData (OtherInputs, ignored in JSON by default in current implementation )
Best Practices for Data Consumers
• Verify protocol and version fields before consuming.
• Use timestampUtc for sequence/gap detection; UDP is lossy and out-of-order.
• Expect optional/missing fields. Use robust JSON parsing with defaults.
Minimal UDP Receiver Example
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Text.Json;
class MotionReceiver {
static void Main() {
int port = 10002; // match MotionDataExportUDPPort
using var client = new UdpClient(port);
Console.WriteLine($"Listening on UDP port {port}");
var endpoint = new IPEndPoint(IPAddress.Any, 0);
while (true) {
var bytes = client.Receive(ref endpoint);
string json = Encoding.UTF8.GetString(bytes);
try {
using var doc = JsonDocument.Parse(json);
var root = doc.RootElement;
if (root.TryGetProperty("protocol", out var p) && p.GetString() == "SimXperience.MotionData") {
var motion = root.GetProperty("motionData");
double engineRpm = motion.GetProperty("engineRPM").GetDouble();
double steerDeg = motion.GetProperty("steeringAngleDegrees").GetDouble();
Console.WriteLine($"RPM={engineRpm:N0}, Steering={steerDeg:N2}°");
}
} catch (Exception ex) {
Console.WriteLine("Packet parse error: " + ex.Message);
}
}
}
}
Telemetry Data Field Schema (SimXperience.TelemetryData)
Some fields may be empty or NonSerialized depending on the plugin.
Note: as mentioned above, the telemetry data is output on a different UDP port from the higher speed motion data fields.
Meta / Race
• currentLapNumber (Integer, laps): Current lap index.
• currentLapTime (Double, seconds): Elapsed lap time.
• lastLapTime (Single, seconds): Last lap time (may be XmlIgnored).
• lapDistPercent (Double, 0..1 or percent depending on plugin): Progress around track.
• laps (Integer, total laps): Total laps in session where applicable.
• positionInRace (Integer, finishing position): Position in race.
Vehicle State
• speedKPH (Single, km/h): Vehicle speed in kilometers per hour.
• speedMPH (Single, mph): Vehicle speed in miles per hour.
• rpm (Single, RPM): Engine revolutions per minute.
• maxRPM (Single, RPM): Maximum engine RPM (may be XmlIgnored).
• gear (Integer, gear index): Current gear.
• clutch (Single, percent/ratio): Clutch position (plugin-dependent).
• throttle (Single, 0..1 or 0..100): Throttle position (plugin-dependent).
• brake (Single, 0..1 or 0..100): Brake position (plugin-dependent).
• steering (Single, degrees or normalized (-1..1)): Steering angle (plugin-dependent).
• speedLimiter (Boolean, N/A): Whether speed limiter is active.
• shiftLight (Boolean, N/A): Shift light indicator.
Engine / Fluids
• fuelL (Single, liters): Fuel level in liters.
• fuelG (Single, gallons): Fuel level in gallons.
• fuelTempC (Single, Celsius): Fuel temperature in Celsius (may be XmlIgnored).
• fuelTempF (Single, Fahrenheit): Fuel temperature in Fahrenheit (may be XmlIgnored).
• oilTempC (Single, Celsius): Oil temperature in Celsius.
• oilTempF (Single, Fahrenheit): Oil temperature in Fahrenheit.
• oilPressure (Single, typical pressure units): Oil pressure (check plugin).
Temperatures & Brakes
• Per-wheel temps: frontLeftCenterTempF, frontLeftInnerTempC, frontRightCenterTempF, etc. (Single, Celsius / Fahrenheit): Tire temperatures.
• Brake temps: frontLeftBrakeTempC, frontLeftBrakeTempF, rearRightBrakeTempC, etc. (Single, Celsius / Fahrenheit): Brake temperatures.
Wheel Speeds / Pressures / Wear
• frontLeftSpeedKPH, frontLeftSpeedMPH, frontLeftSpeedRPM (Single, speeds): Wheel speeds.
• frontLeftPressure, rearLeftPressure, frontRightPressure (Single, tire pressure units): Tire pressures (plugin-dependent).
• frontLeftWear, rearRightWear (Single, wear ratio 0..1 or percent): Tire wear.
Lap, Timing Values
• splitTime, splitTimeTS (Single / timespan, seconds): Split time; many timing fields have both raw and TS helpers.
• bestLapTime / bestLapTimeTS (Single / timespan, seconds): Best lap time.
Derived / Misc
• rpmDiv1000 (Single, RPM / 1000): Engine RPM divided by 1000 (read-only).
• gameTime (Single, seconds): Session or replay time (plugin-specific).
• tc (Boolean, N/A): Traction control flag.
• engineFailure (Boolean, N/A): Engine failure indicator.
• hasIncidents (Boolean, N/A): Whether any incident recorded.
• pit (Boolean, N/A): Is in pit.
• yellowFlag, redFlag (Boolean, N/A): Session flags.
• abs (Boolean, N/A): Anti-lock braking system flag.
• headlights (Boolean, N/A): Headlights on/off.
Commenting is not enabled on this course.