How to setup your dedicated server

How to create and start an online session

!!! ALERT !!!
Please be aware that, in order to have a good online experience, AC requires that you have a good quality connection (both ping and stability). So, please, do not play online while your connection is under stress (torrent, Windows updates, shared connections) and,

The server will read the following two configuration files:

Add the blacklist file which stores the client's Steam GUID who will not be allowed on the server:

These files can be edited in your control panel.

NAME=AC #001 Abarth Festival  ;name of the server
CARS=abarth500_s1;ferrari_458  ; models of the cars allowed in the server - that's exactly the car folder's name (into the "content/cars" folder)
TRACK=vallelunga       ; track on the server - that's exactly the track folder's name (into the "content/tracks" folder)
CONFIG_TRACK=extended_circuit;  subversion of the track, this parameter must contains the name of the track's subversion folder that you find in "content\tracks\TRACK\ui"
SUN_ANGLE=-8               ; angle of the position of the sun
MAX_CLIENTS=15             ; max number of clients (must be <= track's number of pits)
RACE_OVER_TIME=20          ; time remaining in seconds to finish the race from the moment the first one passes on the finish line
ALLOWED_TYRES_OUT=-1       ; penalty (-1 disabled)
UDP_PORT=9600              ; UDP port number -> open this port on your server's firewall
TCP_PORT=9600              ; TCP port number -> open this port on your server's firewall
HTTP_PORT=8081             ; Lobby port number -> open this ports (both UDP and TCP) on your server's firewall
PASSWORD=something         ; server password
LOOP_MODE=1                ; the server restarts from the first track, to disable this set it to 0
REGISTER_TO_LOBBY=1        ; this must not be touched
PICKUP_MODE_ENABLED=1      ; if 0 the server start in booking mode (do not use it). Warning: in pickup mode you have to list only a circuit under TRACK and you need to list a least one car in the entry_list
SLEEP_TIME=1               ; this must not be touched
VOTING_QUORUM=75           ; percentage of vote that is required for the SESSION vote to pass
VOTE_DURATION=20           ; time in seconds
BLACKLIST_MODE=0           ; ban player -> 0 = normal kick, rejoin possible, 1 = until server restart, 2 kick  player and add him to blacklist
TC_ALLOWED=1               ; 0 -> no car can use TC, 1 -> only car provided with TC can use it; 2-> any car can use TC
ABS_ALLOWED=1              ; 0 -> no car can use ABS, 1 -> only car provided with ABS can use it; 2-> any car can use ABS
STABILITY_ALLOWED=0        ; Stability assist 0 -> OFF; 1 -> ON
AUTOCLUTCH_ALLOWED=1       ; Autoclutch assist 0 -> OFF; 1 -> ON
DAMAGE_MULTIPLIER=0        ; Damage from 0 (no damage) to 100 (full damage)
FUEL_RATE=100              ; Fuel usage from 0 (no fuel usage) to XXX (100 is the realistic one)
TYRE_WEAR_RATE=100         ; Tyre wear from 0 (no tyre wear) to XXX (100 is the realistic one)
CLIENT_SEND_INTERVAL_HZ=15 ; refresh rate of packet sending by the server. 10Hz = ~100ms. Higher number = higher MP quality = higher bandwidth resources needed. Really high values can create connection issues
TYRE_BLANKETS_ALLOWED=1    ; at the start of the session or after the pitstop the tyre will have the the optimal temperature

ADMIN_PASSWORD=kunos       ; it's the password needed to be recognized as server administrator: you can join the server using it to be recognized automatically. Write on the game's chat /help to see the command list
QUALIFY_MAX_WAIT_PERC=120  ; this is the factor to calculate the remaining time in a qualify session after the session is ended: 120 means that 120% of the session fastest lap remains to end the current lap.
WELCOME_MESSAGE=           ; path of a file who contains the server welome message

START_RULE=0         ; 0 is car locked until start;   1 is teleport   ; 2 is drivethru (if race has 3 or less laps then the Teleport penalty is enabled)
NUM_THREADS=4          ; default is 2

FORCE_VIRTUAL_MIRROR=1     ; 1 virtual mirror will be enabled for every client, 0 for mirror as optional
LEGAL_TYRES=V;E;HR;ST      ; list of the tyre's shortnames that will be allowed in the server.
MAX_BALLAST_KG=50          ; the max total of ballast that can be added through the admin command
UDP_PLUGIN_LOCAL_PORT=0    ; see plugin example
UDP_PLUGIN_ADDRESS=        ; see plugin example
AUTH_PLUGIN_ADDRESS=       ; see plugin example
RACE_GAS_PENALTY_DISABLED=0    ; 0  any cut will be penalized with the gas cut message; 1 no penalization will be forced, but cuts will be saved in the race result json.
RESULT_SCREEN_TIME=10 ; seconds of result screen between racing sessions.
RACE_EXTRA_LAP=0 ; if it's a timed race, with 1 the race will not end when the time is over and the leader crosses the line, but the latter will be forced to drive another extra lap.

LOCKED_ENTRY_LIST=0 ; same as in booking mode, only players already included in the entry list can join the server (password not needed).
RACE_PIT_WINDOW_START=25 ; Pit window open at lap/minute (depends on the race mode)
RACE_PIT_WINDOW_END=35 ; Pit window closes at lap/minute (depends on the race mode)
REVERSED_GRID_RACE_POSITIONS=8 ; 0 = no additional race, 1toX = only those position will be reversed for the next race, -1 = all the position will be reversed (Retired players will be on the last positions)

------ UPDATE ------
TIME_OF_DAY_MULT=1  ; multiplier for the time of day

SESSION_START=90           ; % level of grip at session start
RANDOMNESS=1               ; level of randomness added to the start grip
LAP_GAIN=1                 ; how many laps are needed to add 1% grip
SESSION_TRANSFER=90        ; how much of the gained grip is to be added to the next session 100 -> all the gained grip. Example: difference between starting (90) and ending (96) grip in the session = 6%, with session_transfer = 50 then the next session is going to start with 93.

[BOOK]                     ; booking session - add this section only if your server is in booking mode
TIME=5                     ; session length in minutes

NAME=Free Practice
TIME=0                     ; session length in minutes
IS_OPEN=1                  ; 0 = no join, 1 = free join,

TIME=15                    ; session length in minutes
IS_OPEN=1                  ; 0 = no join, 1 = free join,

LAPS=5                    ; length of the lap races
TIME=0                    ; length of the timed races, only if laps = 0
WAIT_TIME=60               ; seconds before the start of the session
IS_OPEN=2                  ; 0 = no join, 1 = free join, 2 = free join until 20 seconds to the green light

[WEATHER_0]                ; mandatory section for weather.
GRAPHICS=3_clear           ; it's exactly one of the folder name that you find into "content\weather" directory
BASE_TEMPERATURE_AMBIENT=18 ; temperature of the Ambient
VARIATION_AMBIENT=2        ; variation of the ambient's temperature. In this example final ambient's temperature can be 16 or 20
BASE_TEMPERATURE_ROAD=6    ; Relative road temperature: this value will be added to the final ambient temp. In this example the road temperature will be between 22 (16 + 6) and 26 (20 + 6). It can be negative.
VARIATION_ROAD=1           ; variation of the road's temperature. Like the ambient one.

------ UPDATE ------
; Be aware the session wind is static for all its duration; speed and direction is random related to the values below

WIND_BASE_SPEED_MIN=3     ; Min speed of the session possible
WIND_BASE_SPEED_MAX=15     ; Max speed of session possible (max 40)
WIND_BASE_DIRECTION=30      ; base direction of the wind (wind is pointing at); 0 = North, 90 = East etc
WIND_VARIATION_DIRECTION=15   ; variation (+ or -) of the base direction

; so in this example the then wind speed can be between 3 and 15 and direction between 15 and 45

An entire section ([BOOK],[PRACTICE], etc ) can be removed: for example, if you want a race without a practice session.

You can add other WEATHER sections (WEATHER_1, WEATHER_2 etc), and each new session will be randomly selected from these.
For road temperatures relative to ambient temperature, weather and time of the day, please check the acServerManager tool.

Mandatory Pit : a pit window can be added to the race session. As a design choice, players need to cross the pitentry line and stop at their pit box within the pit window to have a valid pit stop. Players may make additional pit stops before and after the pit window, but only making a mandatory stop in the indicated pit window will validate their race. Server admins must decide on a pit window that allows all players to comfortably make a pit stop under normal racing conditions.

Reversed grid races: the race session will be restarted in reversed grid order based on the standings of the previous race. Players disqualified in the first race will start from the back of the grid in the second race, regardless of their position being within the reversed grid range.

This will be improved in the next update.

[CAR_0]                    ; car index -> from 0 to XXX
DRIVERNAME=                ; Driver name that will appear on the lobby
TEAM=                      ; Team of driver
MODEL=                     ; car model - that's exactly the car folder's name (into the "content/cars" folder)
SKIN=                      ; car skin -  that's exactly the skin folder's name (into the "content/cars/MODEL/skins" folder)
GUID=                      ; STEAM64 GUID
SPECTATOR_MODE=            ; leave it to 0
BALLAST=0                  ; how many kg of ballast to be added to this car. Excessive ballast can severely affect handling and car behaviour!

------ UPDATE ------
RESTRICTOR=0      ; from 0 to 100, cuts the car's engine power. 100=100% restrictor plate. It limits power in the top range of the power band, will not kill total power. Effective handicap depends on car and track, experimentation needed. Advantage over BALLAST is that it does not affect handling. 0=no restrictor plate, maintains original power.

FIXED_SETUP=               ; if the line is there but empty, the server will search a defined "MODELNAME.ini" (for example "bmw_m3_e30.ini") into the "setups" folder. Otherwise you can insert a setup name in as value ("setupname.ini")
Your STEAM64 GUID can be found in your "documents/assetto corsa/logs/log.txt" just after you have run a driving session in AC.
Steam Community ID:76561197983XXXXXX
The setups can be only partially fixed: the user can remove sections or keys from the ini file to make those part "customizable". Everything that is part of the file will be locked in the clients.
So if you want a fixed setup with free fuel quantity then the "[FUEL]VALUE=XXX " must be removed.

Example for a server in pickup mode
You need to insert at least a number of cars sections equal to the MAX_CLIENTS value or higher than that. So if the server is allowing 10, cars then the entry list must have cars from [CAR_0] to [CAR_9] at least.
MODEL=ferrari_458_gt2       ; this MUST BE one of the car allowed in the "server_cfg.ini"
SKIN=black_matte            ; car skin -  that's exactly the skin folder's name (into the "content/cars/ferrari_458_gt2/skins" folder)
Server administration mainly works through the server chat. It is MANDATORY to set the "ADMIN_PASSWORD" in the server_cfg.ini file.
/help: prints the list of the available commands
/admin: become administrator for the server. ex, if the password is "kunos" the command is "/admin kunos"
/next_session: moves to next session
/ksns: moves to next session
/restart_session: restart the session
/ksrs: restart the session
/kick: kick a user using the rules (blacklist etc) of the server. To kick a player named "The Player": /kick The Player
/client_list: shows the full car list by CAR_ID : "PlayerName"
/kick_id: kick the user who occuping CAR_ID. To kick a player named "The Player" who's occuping CAR_15: /kick_id 15
/ballast: add weight to the CAR_ID. To add 200 kg to the CAR_15: /ballast 15 200
/restrictor: cut engine power to the CAR_ID. To add 50% restrictor to the CAR_15:  /restrictor 15 50
/ban_id: ban the user who occuping CAR_ID. To ban a player named "The Player" who's occuping CAR_15: /ban_id 15

Shared GUID: each car in the entry list can feature multiple GUIDs, sperated by a ';' . Players can share that car (one at once). The name inserted in the entry list is used as driver name.


This can also be used as partial driver swap and it's the 1st step to a more complete functionality: in fact setup will not be shared (can be solved using server fixed setup system), the new player will have a brand new car and mandatory pit will not work (yet).