Running a proper league race weekend comes down to four things: a locked entry list so only your registered drivers can join, Balance of Performance to even up a mixed field, the right session structure, and a penalty plugin, since the base server can't enforce serious race rules on its own. This guide walks through each one.
Locking the Grid Without Booking Mode
The old-fashioned way to lock a grid is booking mode, but it's clunky and Kunos's own documentation recommends against using it. The modern approach keeps pickup mode on and locks the entry list instead:
LOCKED_ENTRY_LIST=1 restricts the server to the exact drivers you've listed by Steam64 ID in entry_list.ini. Combined with pickup mode, each registered driver connects and takes their assigned slot, giving you a fixed, known grid without the booking-session workflow.
Building the Entry List with Balance of Performance
Each [CAR_N] block in entry_list.ini pins a car and skin to a driver's Steam64 ID and carries that car's Balance of Performance (BoP):
The two BoP levers behave differently:
BALLAST adds weight in kilograms, which slows a car and changes how it handles.RESTRICTOR (0-100) cuts engine power without touching handling. Use it when you only want to blunt straight-line speed.Set SPECTATOR_MODE=1 on a slot to mark it as a non-racing entry, useful for a broadcast camera or race control.
Structuring the Race Weekend
Sessions run in a fixed order: practice, then qualifying, then race. A typical sprint weekend looks like this:
For a mandatory pit stop, add the window to [SERVER]:
A stop only counts if the driver enters the pits and stops in their box inside that window.
Enforcing Penalties
The stock server only has a cut-penalty toggle, a cut tolerance, jump-start handling, and a contact-based auto-kick. There is no built-in track-limit strike system, automated stop-and-go, or minimum pit time.
Real leagues layer a plugin on top for proper enforcement:
Automated penalties for track limits, collisions, and speeding, plus safety ratings. The pragmatic choice for most sprint leagues.
The endurance standard, with automated stop-and-go, track-limit strikes, and driver-swap and minimum pit-time enforcement. It's a paid plugin that requires a client-side app.
For championship standings across multiple rounds, the community standard is assetto-server-manager (ACSM) by JustaPenguin, which integrates with KissMyRank, Real Penalty, and stracker.
Related Guides
Every session and rule key in server_cfg.ini, beyond the league settings here.
🛠️ Troubleshooting League Server Issues
Random players still joining
Confirm LOCKED_ENTRY_LIST=1 is set and that every registered driver's Steam64 ID is entered correctly in entry_list.ini.
A driver can't join their assigned slot
Double-check their GUID value for typos, and confirm they're connecting on the correct Steam account.
Grid capped lower than expected
Most tracks cap out around 24 drivers by pit box count, regardless of your MAX_CLIENTS setting.
Pit stop not counting
The driver must fully stop in their own pit box within the RACE_PIT_WINDOW_START / RACE_PIT_WINDOW_END range.
With the grid locked, BoP applied, and a penalty plugin in place, you've got a championship-grade server.
Still stuck?
Our team is happy to help. Open a ticket through the live chat button in the bottom-right corner of our website, or join our Discord and open a ticket there.
Join our Discord