Skip to content

THR Endurance Tower System

Hey THR,

over the past few years, THR has hosted several special endurance races.
We started with 2.4-hour races at Le Mans and Daytona, then moved on to a 4-hour race at the Deutschlandring, followed by a 6-hour race at Le Mans. In 2026, we will take the next big step by hosting a 12-hour race at Le Mans.

Each of these events was something special for everyone who took part on track.

However, they all shared one major limitation: in Assetto Corsa, all existing apps lose race progress whenever a driver swap occurs, which means important information is missing.

A few weeks ago, I (THR Pitman) came up with an idea to solve this problem.
I started building a bridge that collects data directly from our race server and provides it to two in-game Assetto Corsa apps, as well as to a public website.
The system is driver-swap stable and significantly improves the endurance feeling for the drivers, cause it provides information about each cars race progress.

The development took place shortly before the 6th THR Endurance race in 2026 and involved many hours (family was already starting to get angry with me) of testing and fine-tuning (including more than 1.000 laps at La Chatre 😉 )

If the tower does not work 100% correctly in every situation, I kindly ask for your understanding.

However, I am confident that the whole system (the Bridge, the two Towers and the Website) is a strong and reliable tool package that significantly improves race overview and broadcast quality.

If you feel the same way, THR would greatly appreciate a donation.

Thank you very much and enjoy using it.
THR pitman


What can the Towers do?

  • The Tower can provide Swap Stable information for THR Endurance races, giving you a clear overview of your position, your opponents, and their race progress during the race.
  • The THR Bridge collects data from various sources, some of which are unfortunately limited by polling rates. This means that some information in the Tower is transmitted with a slight delay.
    This is especially noticeable when crossing the start/finish line, where—for example—time gaps may briefly be slightly inaccurate.

What can't the Towers do?

  • The Tower currently works only for THR Endurance races, which means the Tower cannot currently be used for regular races (but I will most likely add this in a future update).

Important:
The Relative Tower is optimized and loads and displays significantly less information, making it very performance-friendly.
The Global Tower is also optimized, but due to the large amount of information it requires significantly more computing power. However, this can be reduced by adjusting the number of displayed columns, rows, etc. Everyone needs to find the best settings for themselves.


Downloads

THR Global Tower v1.0.1

THR Relative Tower v1.0.1

Changelog v1.0.1:

  • Performance optimization
  • fixed a few bugs inconsistencies
  • added user-controllable update rate (Hz) sliders to "General" tab
  • added THR icons for Content Manager

How to install

In case of an update (If present, first remove the old tower folders from the folder specified below.)

Unzip the files and copy the "THR_Global_Tower" and the THR_Relative_Tower" folders into this folder:

common\assettocorsa\apps\lua

Activate both Towers (LUA Apps) directly from your Ingame-App Menu on the right side of your screen.

To open the settings hover your mouse over the Tower App and click this little but.


THR Global Tower

What does the columns show?

  • P = Position (Global or Filtered)
  • Δ = number of positions gained or lost over the last 40 seconds
  • Car = Driver- and Teamnames in different variations
  • T = Current Tyres on the car
  • Pit =
    • a yellow P means that the car is currently in the Pits
    • the number in brackets shows the PitCount
    • when a driver stops in the pits and leaves the server the pit column shows "out" to signal that the team very likely performs a driver swap
  • Short = counts the number of pit stops during which the car was refueled
  • Long = the number of taken and mandatory Longstops
  • Pen = the current active Penalty
  • Laps = the total number of Laps for the car
  • Stint = number of laps driven by the current driver
  • Gap = Gap to the cars in front / behind
  • Best = Best Lap of the car
  • Last = Last Lap of the car

Orange = As long as the connection to the THR bridge is activated these Values are Swap Stable.

General Settings

The size of the app window can be adjusted by left-clicking on the left, right, and bottom edges.

Tower Appearance

  • Show only active cars: removes cars thar are offline and cars abandoned in the pits
  • Enable click-to-focus:
  • Keep focused car visible: keeps the focused car in the tower list and shows the other cars around it

Tower filter (text match)

You either show the whole grid (leave the filter empty), or just your own class (use P2.0 for example).
I personally would recommend using the class filter for Endurance Racing.

  • Filtered (1..x) or (Global Position): you can decide if you want to see your global position or your position within the filtered group (class)
  • Max shown cars: choose how many cars get shown in the Global Tower (0 = auto)
  • Car column width: size the Car column (Drivername/Teamname) to your needs (0 = auto)
  • Name shown in tower: decide if you want to see Drivername, Teamname, Teamname (Drivername), or both alternating at the number of seconds you choose
  • Show car number prefix (for example #28): if the number is specified in ui.skin, it can be displayed as a prefix in the tower
  • Row / Header heigt: set the height to suit your preferences
  • Row font / Header font size: set the sizes to suit your preferences

Server Connection

  • Use THR bridge: if activated the tower connects to the THR bridge and collects the swap stable Endurance Data from our THR server

Background

  • set the background of the THR Global Tower to suit your preferences

Columns

  • Column Visibility: choose the columns you want to see in the THR Global Tower
  • Column Order: arrange the columns to suit your preferences

Car Colors

Enables name coloring based on text matches. Each match can be assigned a custom text color. Useful for class racing, teams or broadcast highlighting.
I would recommend to use it like this:

  • as a first match enter your teamname and assing a color. this helps to spot your car within the Global Tower
  • add additional matches for the classes on track (P7.0, P2.0, GT-P) and assign colors.
  • You can copy your preferred colors from the global tower to the relative tower and vice versa by using the “Copy” and “Paste” functions at the bottom of the towers.
    You can also click “Copy” and share your settings (e.g., via Discord chat) with your teammates.

I would recommend to define the "Car Colors" like this: (just copy this block and use "paste" on the "Car Colors" Tab.

{
{
textColor = { r = 0.9941520690918, a = 1, b = 0.372080296278, g = 0.372080296278 },
cars = "",
rowColor = { r = 1, a = 0, b = 1, g = 1 },
tag = "Change this text to your CarNumber (e.g. 28)"
},
{
textColor = { r = 0.47953218221664, a = 1, b = 1, g = 0.75172328948975 },
cars = "",
rowColor = { r = 1, a = 0, b = 1, g = 1 },
tag = "P7"
},
{
textColor = { r = 0.90588241815567, a = 1, b = 0.35686275362968, g = 0.72549021244049 },
cars = "",
rowColor = { r = 1, a = 0, b = 1, g = 1 },
tag = "P2"
},
{
textColor = { r = 0.67364066839218, a = 1, b = 0.48763719201088, g = 0.85964912176132 },
cars = "",
rowColor = { r = 1, a = 0, b = 1, g = 1 },
tag = "GT"
}
}

Spectator / Commentator Mode

When you activate "Enable click-to-focus" and have classes (Matches) defined in the "Car Colors" tab you activate the Spectator / Commentator Mode.

This mode adds a new filter bar above the column headers of the Global Tower.

The filter bar contains the matches defined in the ‘Car Colours’ tab and allows you to filter the Global Tower with simple clicks on the respective class.

‘All’ then shows the overall view of all cars again.


THR Relative Tower

The Relative Tower shows the cars closest to you on track, not the full race order.
Cars are sorted by track position (spline), and the track is treated as a continuous loop.
This works across different laps and during pit stops, and gaps do not grow each lap.

The size of the app window can be adjusted by left-clicking on the left, right, and bottom edges.

What does the columns show?

  • P = Position (Global or Filtered)
  • Car = Driver- and Teamnames in different variations
  • Pit =
    • a yellow P means that the car is currently in the Pits
    • when a driver stops in the pits and leaves the server the pit column shows "out" to signal that the team very likely performs a driver swap
  • Pen = the current active Penalty
  • Last = Last Lap of the car. Colored based on your relative Situation to that car
    • white = the car is in the same lap as you. If it is in your class you have to fight against it.
    • green = the car has more TotalLaps than you. It is a blue flag situation. Let it pass.
    • blue = this car has less TotalLaps (blue flag situation) and it should not defend against you
  • Laps = the total number of Laps for the car
  • Gap = Gap to the cars in front / behind

Orange = As long as the connection to the THR bridge is activated these Values are Swap Stable.

The other columns are also available, but the ones mentioned above are the recommended ones for the Relative Tower.

General Settings

The size of the app window can be adjusted by left-clicking on the left, right, and bottom edges.

Tower Appearance

  • Show only active cars: removes cars thar are offline and cars abandoned in the pits
  • Enable click-to-focus:
    • if activated you can click on a Name within the car column to focus on that car
  • Keep focused car visible: keeps the focused car in the tower list and shows the other cars around it
  • Car column width: size the Car column (Drivername/Teamname) to your needs (0 = auto)
  • Name shown in tower: decide if you want to see Drivername, Teamname, Teamname (Drivername), or both alternating at the number of seconds you choose
  • Show car number prefix (for example #28): if the number is specified in ui.skin, it can be displayed as a prefix in the tower
  • Row / Header heigt: set the height to suit your preferences
  • Row font / Header font size: set the sizes to suit your preferences

Relative Tower Settings

  • Anchor: defines the car on which the relative tower is focused > your own car or the car in focus
  • Relative range: determines how many cars are displayed in front of and behind you
  • Gap display: Here you can select the unit: meters or seconds. (Meters are strongly recommended, as they are more accurate.)

Server Connection

  • Use THR bridge: if activated the tower connects to the THR bridge and collects the swap stable Endurance Data from our THR server

Background

  • set the background of the THR Global Tower to suit your preferences

Columns

  • Column Visibility: choose the columns you want to see in the THR RelativeTower
    • The left column are the recommended ones for using the Relative Tower
  • Column Order: arrange the columns to suit your preferences

Car Colors

Enables name coloring based on text matches. Each match can be assigned a custom text color. Useful for class racing, teams or broadcast highlighting.
I would recommend to use it like this:

  • as a first match enter your teamname and assing a color. this helps to spot your car within the Global Tower
  • add additional matches for the classes on track (P7.0, P2.0, GT-P) and assign colors.
  • You can copy your preferred colors from the global tower to the relative tower and vice versa by using the “Copy” and “Paste” functions at the bottom of the towers.
    You can also click “Copy” and share your settings (e.g., via Discord chat) with your teammates.

The Endurance Standings Website

These Standings are intended for public use and poll data only every 10 seconds to avoid putting strain on our RaceServer.
The Standings are swap stable and show Endurance relevant data for all teams.
It also offers filter options via the Class Buttons directly above the data table.

We publish the link to these Standings in the announcements on Discord and on our THR Endurance Infoboard:
https://tinyurl.com/Infoboard-6th-THR-Endurance

What does the columns show?

  • P = Position (Global or Filtered)
  • Team = shows Class (P7, P2, GT), the Community Abbreviation and the Teamname
  • No = displays the Cars Number
  • Driver = names the current Driver in Car
  • Car = shows the car driven by the team
  • T = Current Tyres on the car
  • TotalLaps = the total number of Laps for the car
  • StintLaps = number of laps driven by the current driver
  • in Pit =
    • display "YES" or "no" to tell the cars Pit status
    • when a driver stops in the pits and leaves the server the pit column shows "out" to signal that the team very likely performs a driver swap
  • PitStops = the number shows the PitCount
  • ShortStops = counts the number of pit stops during which the car was refueled
  • LongStops = the number of taken and mandatory Longstops
  • PEN Open = displays the current open Penalties of that team ( DT = Drive Through, SG = Stop & Go, DSQ = Disqualified)
  • PEN Served = shows the total number of penalties served by a team (e.g. SG (30) [3x] which means 3 Stop & Go Penalties for a total of 30 Seconds.)
  • Best = Best Lap of the car
  • Last = Last Lap of the car
  • Gap = Gap to the cars in front / behind

Orange = As long as the connection to the THR bridge is activated these Values are Swap Stab