Summer Sale   25% off with code 00d 00h 00m 00s


 
 
 
 
Knowledgebase Assetto Corsa How to Run an Assetto Corsa League Race...

How to Run an Assetto Corsa League Race Weekend

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:

📄 cfg/server_cfg.ini
PICKUP_MODE_ENABLED=1     ; keep pickup mode ON
LOCKED_ENTRY_LIST=1        ; only Steam GUIDs listed in entry_list.ini may join
PASSWORD=league-secret       ; a join password as a second gate

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):

📄 cfg/entry_list.ini
[CAR_0]
MODEL=ks_ferrari_488_gt3
SKIN=racing_team_01
DRIVERNAME=A. Driver
TEAM=Rosso Racing
GUID=76561198000000001    ; the driver's Steam64 ID, only this account can take the slot
SPECTATOR_MODE=0
BALLAST=20                ; +20kg ballast (BoP), changes handling, capped by MAX_BALLAST_KG
RESTRICTOR=0               ; 0-100% air restrictor, cuts power only, no handling change
FIXED_SETUP=                ; blank = free setup, a path locks the car's setup
[CAR_1]
MODEL=ks_mclaren_650_gt3
SKIN=blue_01
DRIVERNAME=B. Racer
TEAM=Papaya Motorsport
GUID=76561198000000002
SPECTATOR_MODE=0
BALLAST=0
RESTRICTOR=8               ; 8% restrictor to peg back a quicker car
FIXED_SETUP=

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.

Start Your Assetto Corsa ServerUnlimited RAM · Unlimited slots · From $9.99/monthStart My Server

Structuring the Race Weekend

Sessions run in a fixed order: practice, then qualifying, then race. A typical sprint weekend looks like this:

📄 cfg/server_cfg.ini
[PRACTICE]
NAME=Practice
TIME=20
IS_OPEN=1
[QUALIFY]
NAME=Qualifying
TIME=15
IS_OPEN=1
 
[RACE]
NAME=Feature Race
LAPS=24                ; lap-counted race, use TIME instead for a timed race
TIME=0
WAIT_TIME=60             ; seconds on the grid before the green light
IS_OPEN=1                ; keeps drivers from parachuting into a formation lap

For a mandatory pit stop, add the window to [SERVER]:

📄 cfg/server_cfg.ini
RACE_PIT_WINDOW_START=8   ; window opens on lap 8 (or minute 8 for a timed race)
RACE_PIT_WINDOW_END=16    ; window closes on lap 16

A stop only counts if the driver enters the pits and stops in their box inside that window. Full detail on every session and rule key is in our server configuration guide.

Enforcing Penalties

💡 The Base Server Can't Do It Alone: 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:

  • KissMyRank — automated penalties for track limits, collisions, and speeding, plus safety ratings. The pragmatic choice for most sprint leagues.
  • Real Penalty — 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.

🛠️ 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. If you run into trouble setting any of this up, no worries! Just open a support ticket and our team will gladly help.

Was this article helpful?

Assetto Corsa Server Hosting

Start Your Own Assetto Corsa Server

Next generation racing simulator 24/7 Expert Support Swap between 34 games at any time
Start My Server From $9.99/month  ·  24-hour money-back guarantee
Assetto Corsa server hosting