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.
Update:
- Additional drift-specific channels here by @AdmPatate: Data Out - Additional UDP Channels - #11 by AdmPatate
Thank you for taking the time to look through this and I look forward to seeing what you can do.