More Telemetry data in UDP

Popping this in this thread too.

Hi there, as requested by @T10ManteoMax here is a new thread requesting additional UDP Data Out channels for Forza Motorsport. I was intending to post this a few updates ago, but wanted to wait a bit to see what came in various updates.

As it stands:

  • The current Data Out package and set of channels are reasonably good.

  • They currently cover a lot of information about your car in particular

  • The weakness compared to other titles, and opportunity for improvement is primarily around session and opponent data

  • With a number of additional channels, players (and league/esports broadcasters, when spectating is added to the game) will be able to produce high quality dashboards and stream overlays to better showcase the game’s racing action.

Below are a list of channels I feel are worth adding, along with a one-line description where appropriate.

At minimum, everything that is in the game HUD and telemetry must be replicable via UDP, so that players can disable the in-game HUD entirely.

Session Data

  • session_type - Practice, Qualifying, Race, Rivals etc., useful for building dashboards with contextual data

  • session_total_laps_race - How many laps are in the Race. This race total must also be accessible in Practice/Qualifying so players can build better race strategies.

  • session_total_laps_qualifying - As above, but showing how many laps are in Qualifying

  • session_practice_time_remaining - Countdown timer, showing how long is left in Practice/Qualifying

  • session_race_time_remaining - As above but for timed races

  • session_race_finish_time_remaining - As above but for when the leader has finished and the race is about to end

Track Data

  • track_wetness - How wet the road surface under the car currently is (0-100%)

  • track_rubber - How rubbered in the road surface under the car currently is (0-100%)

  • track_config - What circuit (and layout) the player is currently driving on

  • track_length - Total length of a lap in metres

  • track_position_percent - Percentage of current lap completed

  • track_weather - Current weather condition (Clear, Light Cloud, Overcast, Heavy Rain etc.)

  • track_air_temperature

  • track_road_temperature

Player & Player Car Data

  • player_gamertag - Player’s gamertag

  • player_start_position - Player’s starting grid position

  • abs_active - On/Off value to show when ABS is currently active on the car

  • tc_active - On/Off value to show when Traction Control is currently active on the car

  • stm_active - On/Off value to show when Traction Control is currently active on the car

  • valid_lap_current - On/Off value to show if the current lap is “clean” or “dirty”

  • valid_lap_next - On/Off value to show if the next lap is “clean” or “dirty” (ie, player goes off-track on final turn)

  • frr_track_limit - Value to show if the player is (1) within track limits, (2) has part of the car outside of track limits or (3) has their entire car beyond track limits

  • frr_penalties_amount - Value to show how many penalties the player has received in the session

  • frr_penalties_time - Value to show total time penalty received so far in the session

  • frr_penalties_waiting - Value to indicate a player is under investigation by FRR

  • frr_penalties_waiting_result - Value to show the result of the most recent FRR investigation (in seconds)

  • gap_car_ahead_distance - The gap to the car directly ahead, in metres

  • gap_car_ahead_time - The time gap to the car directly ahead, in seconds

  • gap_car_behind_distance - The gap to the car directly ahead, in metres

  • gap_car_behind_time - The time gap to the car directly ahead, in seconds

  • gap_leader_distance - The gap to the race leader, in metres

  • gap_leader_time - The time gap to the race leader, in seconds

  • laptime_best - Personal best lap time in the session, irrespective of penalties

  • laptime_best_clean - Personal best clean lap in the session

  • laptime_previous - Previous lap time in the session

  • laptime_predicted - Predicted current lap time, calculated by taking best lap and adding/subtracting latest split difference

  • laptime_predicted_clean - As above, but comparing to best clean lap

  • sector_current - What sector the player is currently in

  • sector_1_time - Time recorded in sector 1, current lap

  • sector_1_time_pb - Personal best time recorded in sector 1 across all laps

  • sector_2_time - Time recorded in sector 2, current lap

  • sector_2_time_pb - Personal best time recorded in sector 2 across all laps

  • sector_3_time - Time recorded in sector 3, current lap

  • sector_3_time_pb - Personal best time recorded in sector 3 across all laps

  • tyre_compound - Current tyre compound fitted (Soft, Medium, Hard, Wet, Sport, Street, Stock)

  • tyre_pressure_front_left

  • tyre_pressure_front_right

  • tyre_pressure_rear_left

  • tyre_pressure_rear_right

  • tyre_temperature_front_left_inner

  • tyre_temperature_front_left_middle

  • tyre_temperature_front_left_outer

  • tyre_temperature_front_right_inner

  • tyre_temperature_front_right_middle

  • tyre_temperature_front_right_outer

  • tyre_temperature_rear_left_inner

  • tyre_temperature_rear_left_middle

  • tyre_temperature_rear_left_outer

  • tyre_temperature_rear_right_inner

  • tyre_temperature_rear_right_middle

  • tyre_temperature_rear_right_outer

  • brake_temperature_front_left

  • brake_temperature_front_right

  • brake_temperature_rear_left

  • brake_temperature_rear_right

  • brake_lock_front_left - Yes/No on if the brake for this wheel has locked or not

  • brake_lock_front_right - Yes/No on if the brake for this wheel has locked or not

  • brake_lock_rear_left - Yes/No on if the brake for this wheel has locked or not

  • brake_lock_rear_right - Yes/No on if the brake for this wheel has locked or not

  • pitstops_completed - Number of pitstops completed in the current race

  • pitstops_required - Number of mandatory pitstops in the race

  • force_feedback_spring - Spring value from force-feedback telemetry menu

  • force_feedback_force - Force value from force-feedback telemetry menu

  • force_feedback_damper - Damper value from force-feedback telemetry menu

Opponent Player Data

  • sector_1_time_overallbest - Overall best (ie: “purple”) time recorded in sector 1, by any player

  • sector_2_time_overallbest - Overall best (ie: “purple”) time recorded in sector 2, by any player

  • sector_3_time_overallbest - Overall best (ie: “purple”) time recorded in sector 3, by any player

  • laptime_best_overall - Overall best lap of the entire session, regardless of player

  • laptime_best_overall_clean - Overall best “clean” lap of the entire race, regardless of player

  • player_1_gamertag

  • player_1_car - Car name or ID, preferably name

  • player_1_car_class

  • player_1_car_pi

  • player_1_position

  • player_1_pitting - Yes/No

  • player_1_dnf - Yes/No

  • player_1_dsq - Yes/No

  • player_1_start_position

  • player_1_tyre_compound

  • player_1_car_coordinates_01 - X coordinate, important for building track maps and radars

  • player_1_car_coordinates_02 - Y coordinate, important for building track maps and radars

  • player_1_car_coordinates_03 - Z coordinate, important for building track maps and radars

  • player_1_penalties_amount

  • player_1_penalties_time

  • player_1_last_lap

  • player_1_best_lap

  • player_1_best_lap_clean

  • player_1_gap_leader_time

  • player_1_gap_leader_distance

  • player_1_gap_ahead_time - Gap to car ahead of this player

  • player_1_gap_ahead_distance - Gap to car ahead of this player

  • player_1_gap_behind_time - Gap to car behind this player

  • player_1_gap_behind_distance - Gap to car behind this player

  • player_1_gap_player_time - Gap from this player to “you”. If “you” are this player, return zero.

  • player_1_gap_player_distance - Gap from this player to “you”. If “you” are this player, return zero.

For brevity, I will not copy the player channels 24 times. Everything marked as player_1 should also be available for player_2, player_3 etc. all the way to player_24

I will likely add to this document over time.

Thank you for taking the time to look through this and I look forward to seeing what you can do.