Racing Catch-Up System


I am currently making a racing game and trying to find the best logic for a catchup system.

To clarify…
I am using checkpoints throughout and it’s an A to B race and not lap based.

Firstly all racers were set with the same speed, but if you can quickly get into 1st place (at the start) you can potentially go the entire track without seeing anyone for the duration of the race.

So the next idea was to add a speed cap so first place is the slowest, last place is the fastest, but then if you’re racing in 8th you are going super fast, (to catchup) but if you get to 1st, you are now going half the speed, and the catchup system seems obvious.

You want to feel like you could hold out in 1st place if you put the work in and also have the AI to be hot on your heels throughout the race.

Running out of ideas already…

What would be the best logic to achieve an exciting and somewhat fair race?