The Beginner's Guide
Introduction
This page will guide you through the initial setup process of setting up your own free-roam AssettoServer on a Windows machine.
We will be setting up our server in a dedicated folder outside of Content Manager, going over how to configure AI traffic, how to use a few settings to customize the server and learning how to troubleshoot some of the more common causes of server crashes.
Prerequisites
To follow along you will need the following things:
- The latest version of AssettoServer.
- The full version of Content Manager.
- The Shutoko Revival Project track.
- A
fast_lane.ai(p)
made for Shutoko Revival Project. - Basic understanding of how text editors work.
Downloading the latest version of AssettoServer
-
Click on the
assetto-server-win-x64.zip
in the Assets section of the release to download the file.
Purchasing the Full Version of Content Manager
You can host, configure, and play on the server without the full version of Content Manager. However, for the sake of simplicity, we will be using features of the full version.
-
Purchase the full version of Content Manager via the official website or by being a patron of x4fabs Patreon.
-
Enter the key you received via email into Content Manager.
Downloading the Shutoko Revival Project track and AI spline
You can use any track that you have a fast_lane.ai(p)
for.
In this guide, we will use the SRP track as it is one of the most popular tracks.
-
Go to the Shutoko Revival Project Website
-
Download and install the latest stable release.
If you need help with installing the track, please use the #help channel on the Shutoko Revival Project Discord
-
Join the AssettoServer Discord by clicking on the link in this sentence or the Discord logo in the navbar of this page.
-
Go into the #ai-spline-releases channel, open the
Pinned Messages
and download the spline made for Shutoko Revival Project.
Initial Setup
Preconfiguration
For now, we will be using the minimum amount of cars needed for the default traffic settings of AssettoServer.
-
Start by navigating to the
Server
tab of Content Manager
If you do not have this Menu enable it in the Content Manager settings like so: -
Click on
SERVER_00
in the list on the left and then on theSERVER_00
text field to change the name of the server. -
Click on the track preview image of Imola and change the track to Shutoko Revival Project - Main Layout.
-
Click on the
Admin password
field and enter a password that is at least 8 characters long. -
Enable the
Make server public (show on lobby)
checkbox. -
Move the
Capacity
slider to 11. -
Click on the
ENTRY LIST
tab and click on the (+) to add cars to the list.
Add the following cars in this order:- 1 RUF CTR Yellowbird
- 5 Audi S1
- 5 Toyota GT-86
cautionWhen adding more cars, remember to also increase the
Capacity
slider, otherwise only the first 11 cars will get loaded.Only add as many cars as there are pits available for the layout of the track you've chosen.
The limit is displayed below theCapacity
slider and for Shutoko Revival Project - Main Layout looks like this:Ignoring this limit will result in the game crashing when joining the server.
-
Click on the
RULES
tab and configure the page how you see fit.Some recommendations:
- Uncheck
Virtual Mirror
as this forces the Virtual Mirror to be on at all times, which can be undesired. - Move the
Allowed tyres out
slider to the left into theAny
position.
We will be using the following settings:
- Uncheck
-
Click on the
CONDITIONS
tab and configure the page how you see fit.
Leave the bigTime
andTime Multiplier
sliders as they are.- In the
Weather
section, flip the switch toWeatherFX
and select the weather you want.
If the weather you want is not in the list, read how to change the weather after the extracting step. - Click on the 3 little dots next to the weather drop down.
- Enable and set the Time/Date/Time multiplier that you want.
We will be using the following settings:
- In the
-
Click on the
SESSIONS
tab and configure it as follows:
- Check
Pickup mode
andLoop mode
while leavingLocked entry list in pickup mode
unchecked. - Uncheck
Booking
,Qualifying
andRace
. - Set
Practice
to something reasonable like 2 hours. You can make sessions longer than that but a length of 999999999 will likely cause problems and is not necessary.
We will be using the following settings:
-
At the bottom of the preset, click on
Save
.
Packing the server preset
Now that we're done configuring the server, we can use the packing feature to export all files we need into a .zip file for us.
-
In the same bar that we just saved the server preset, click on
Pack
. -
Select
Windows
as the target and uncheckInclude executable
andPack into single exe-file
. -
Click on
Pack
and save it.
Extracting AssettoServer and the packed preset
You should now have the following .zip files somewhere:
assetto-server-win-x64.zip
- The server preset we just packed, called something like
Tutorial Server!-X-XXXXXXXX-XXXXXX.zip
Create a new folder and extract both of these two .zip files into it.
First launch and basic AssettoServer traffic configuration
Start the server by double-clicking AssettoServer.exe
.
You might get the following pop up messages from Windows Firewall or Windows Defender:
- Windows Firewall
- Windows Defender
After allowing the AssettoServer.exe
to launch, you should see something along the lines of this:
You might also have the following error message inside of your log:
Your ports are not forwarded correctly. The server will continue to run, but players outside of your network won't be able to join.
To fix this, you'll need to go into your router settings and create Port Forwards for these ports:
Port 9600 UDP
Port 9600 TCP
Port 8081 TCP
Local IP: XXX.XXX.XXX.XXX
Router Page: http://XXX.XXX.XXX.X/
Since Instructions are different for each router, search in Google for "how to port forward" with the name of your router and/or ISP.
This means that you need to forward the ports that AssettoServer uses inside your router and possibly make a exception for the AssettoServer.exe
inside your firewall.
Because Instructions are different for each router / ISP, we will not explain how to do this here.
Refer to the user manual of your router or search in Google for "how to port forward" with the name of your router and/or ISP.
-
Close the console and navigate to the
cfg
folder inside the server's main folder. -
Open the
extra_cfg.yml
using a text editor of your choice and setEnableAi: true
.extra_cfg.yml# Enable AI traffic
EnableAi: true -
Save and close the file, then open the
entry_list.ini
.
For the first car, which will be the RUF that we want to drive, we will add a line belowRESTRICTOR=0
.entry_list.ini[CAR_0]
MODEL=ruf_yellowbird
SKIN=00_yellowbird_black
SPECTATOR_MODE=0
DRIVERNAME=
TEAM=
GUID=
BALLAST=0
RESTRICTOR=0
AI=noneFor the remaining cars we will add the line
AI=fixed
instead since we want to use them as AI traffic.entry_list.ini[CAR_1]
MODEL=ks_audi_a1s1
SKIN=00_sepang_blue_pearl_effect_br
SPECTATOR_MODE=0
DRIVERNAME=
TEAM=
GUID=
BALLAST=0
RESTRICTOR=0
AI=fixed -
Save and close the file and then open the
server_cfg.ini
.
Find the[PRACTICE]
session and add a line withINFINITE=1
to it.server_cfg.ini[PRACTICE]
NAME=Practice
TIME=120
IS_OPEN=1
INFINITE=1This will make the session infinitely long without resetting the session and sending everyone to pits when the 2 hours are up.
Keep in mind that Content Manager and apps will show atime left
, which is normal and doesn't mean that it's not working. -
After saving and closing the file, navigate to the content folder of the track, which is
\content\tracks\shuto_revival_project_beta
. Create a new folder calledai
and place thefast_lane.aip
we downloaded earlier inside of it. -
Now go back into the main folder of the server and launch
AssettoServer.exe
again.
Then open Content Manager and go to theDrive
tab, select theOnline
tab and then theLAN
tab.
The server will now appear in the server list. It may take a few moments, so you might need to refresh the list a few times. -
Select the RUF, click
Join
and drive out of the pits to start spawning AI traffic. -
Other people will also be able to join the server by searching for it or via the invite link that you can copy from the console.
cautionDo not click the Invite button to copy the invite link, it will copy your local IP which is useless to people outside of your local network. Use the link that is generated in the console instead.
Advanced Server Configuration
Time and Date
We selected time and date settings during the preconfiguration, but what if we wanted to change the time/time multiplier/date without having to pack and extract again?
-
Navigate to the
cfg
folder of the server and open theserver_cfg.ini
with a text editor of your choice. -
Find the
GRAPHICS=
parameter in the[WEATHER_0]
section, it should look something like this:server_cfg.ini[WEATHER_0]
GRAPHICS=sol_03_scattered_clouds_type=17_time=0_mult=0
BASE_TEMPERATURE_AMBIENT=18
BASE_TEMPERATURE_ROAD=6
VARIATION_AMBIENT=0
VARIATION_ROAD=0
WIND_BASE_SPEED_MIN=0
WIND_BASE_SPEED_MAX=0
WIND_BASE_DIRECTION=0
WIND_VARIATION_DIRECTION=0-
To change the Time, change the number after
_time=
to the time you want in seconds from 00:00.
For example to set the time to18:00
you would do_time=64800
. -
To change the Time Multiplier, change the number after
_mult=
.
_mult=1
would result in time progressing as fast as in real life,_mult=2
would be twice as fast etc. -
To change the Date you'll need to do two things:
-
Change the number after
_start=
to the date you want in Epoch time.
Use a site like epochconverter to get the Epoch time that you want.
For example:_start=1719700000
would result in the date being June 30th, 2024. -
Open
extra_cfg.yml
and setLockServerDate
tofalse
extra_cfg.yml# Lock server date to real date. This stops server time "running away" when using a high time multiplier, so that in-game sunrise/sunset times are based on the current date
LockServerDate: false
-
-
-
After making these adjustments it should look something like this:
server_cfg.ini[WEATHER_0]
GRAPHICS=sol_03_scattered_clouds_type=17_time=64800_mult=0_start=1719700000
BASE_TEMPERATURE_AMBIENT=18
BASE_TEMPERATURE_ROAD=6
VARIATION_AMBIENT=0
VARIATION_ROAD=0
WIND_BASE_SPEED_MIN=0
WIND_BASE_SPEED_MAX=0
WIND_BASE_DIRECTION=0
WIND_VARIATION_DIRECTION=0With these settings the server will start at 18:00 on the 30 June 2024 and the time will not progress.
Weather
All players will need to have a Custom Shaders Patch preview version installed to see rain.
Rain does not come with Sol or Pure. Rain is part of the paid preview versions of Custom Shaders Patch.
Purchase Custom Shaders Patch previews on x4fabs Patreon.
-
Navigate to the
cfg
folder of the server and open theserver_cfg.ini
with a text editor of your choice. -
Find the
[WEATHER_0]
section, it should look something like this:server_cfg.ini[WEATHER_0]
GRAPHICS=sol_03_scattered_clouds_type=17_time=0_mult=0
BASE_TEMPERATURE_AMBIENT=18
BASE_TEMPERATURE_ROAD=6
VARIATION_AMBIENT=0
VARIATION_ROAD=0
WIND_BASE_SPEED_MIN=0
WIND_BASE_SPEED_MAX=0
WIND_BASE_DIRECTION=0
WIND_VARIATION_DIRECTION=0 -
Under
[WEATHER_0]
find the parameterGRAPHICS=
and change the WeatherFX ID after_type=
to the ID of the weather you want.
If you're unsure which ID to use, please check the list of available WeatherFX type IDs.
For example, to change the starting weather to beHeavy Rain
instead ofScattered Clouds
, it would look like this:server_cfg.ini[WEATHER_0]
GRAPHICS=sol_03_scattered_clouds_type=8_time=0_mult=0If you just want Rain graphics without the physics you can add the following to your
csp_extra_options.ini
csp_extra_options.ini[EXTRA_RULES]
DISABLE_RAIN_PHYSICS=1 -
Save and restart the server to apply the changes.
CSP Extra Server Options
Requiring a minimum CSP Version
AssettoServer requires CSP version 0.1.77 (1937) by default.
To change this edit MinimumCSPVersion: 1937
in the extra_cfg.yml
.
If you want to require a different CSP version and don't know how where to get the ID from, read this FAQ section.
Navigate to the cfg
folder of the server and create a file called csp_extra_options.ini
.
The CSP Wiki has a long list of options and settings you can play around with.
Two of the more useful options for Freeroam servers are listed below.
[EXTRA_RULES]
ALLOW_WRONG_WAY = 1 ; Allow cars to drive either way, gets rid of the wrong way sign on some tracks
[PITS_SPEED_LIMITER]
DISABLE_FORCED = 0 ; Disable forced pits speed limiter
KEEP_COLLISIONS = 0 ; Activate collisions between cars in pits
SPEED_KMH = 120 ; Alter pits speed limiter value; default is 80
Extra steps for teleportation and color changing
For teleportation and color changing there are additional steps:
-
Navigate to the
cfg
folder and open theentry_list.ini
. -
Each car has a
SKIN=
line that needs to be edited to allow that car to use these features.
The following codes need to be added to the skin line:Code Usage /ACA3
Allow Teleporting /ABAH
Allow Color Changing /ADAn
Allow both Color Changing & Teleporting This is NOT a full list of all codes and options available, just some of the most frequently used ones.
Meaning, if we wanted to use teleportation and color changing it would look like this:
entry_list.ini[CAR_0]
MODEL=ruf_yellowbird
SKIN=00_yellowbird_black/ADAnIf we wanted to also allow our AI cars to spawn in different colors, we would have to at least add
/ABAH
to each of the car's skin lines since we don't care about teleportation for them. -
Now we are ready to add options to our
csp_extra_options.ini
file.So, with color changing and teleportation the file looks like this:
csp_extra_options.ini[EXTRA_RULES]
ALLOW_WRONG_WAY = 1 ; Allow cars to drive either way, gets rid of the wrong way sign on some tracks
[PITS_SPEED_LIMITER]
DISABLE_FORCED = 0 ; Disable forced pits speed limiter
KEEP_COLLISIONS = 0 ; Activate collisions between cars in pits
SPEED_KMH = 120 ; Alter pits speed limiter value; default is 80
[CUSTOM_COLOR]
ALLOW_EVERYWHERE = 1 ; change car colors anywhere as long as the car is stopped.
[TELEPORT_DESTINATIONS]
POINT_1 = Position 1
POINT_1_GROUP = Shibaura PA
...You can find the teleports used on the Official Shutoko Revival Projects servers in this FAQ Section
-
Save and close the file and restart the server, you're able to teleport / change your car color via the lightbulb in the chat app and will have traffic that is randomly colored.
AssettoServer Plugins
AssettoServer comes with a few free to use plugins, we'll look at how to enable and configure two:
The AutoModerationPlugin and the RandomWeatherPlugin.
You can add as many or as few as you want, just make sure to carefully read the documentation pages as some plugins might require certain things or won't work together.
You can enabled and configured several plugins at once to cut down on the number of times you need to restart the server.
However setting them up one by one like we will, makes it easier to find issues if something goes wrong.
When editing plugin configurations, be careful to keep the format from the documentation. The indentation of each line matters, and the server will crash if it is wrong.
AutoModerationPlugin
-
Navigate to the
cfg
folder of the server and open theextra_cfg.yml
. -
Find
EnablePlugins:
and enable the plugin like so:extra_cfg.yml# List of plugins to enable
EnablePlugins:
- AutoModerationPlugin -
Save the file, double-click
AssettoServer.exe
to launch the server and generate the plugin config, then close the console and return to thecfg
folder. -
Open the
plugin_auto_moderation_cfg.yml
andEnabled: true
the featues you want and save the file. It should look something like this:plugin_auto_moderation_cfg.yml# yaml-language-server: $schema=schemas\plugin_auto_moderation_cfg.schema.json
# Kick players that are AFK
AfkPenalty:
# Set to true to enable
Enabled: true
# Don't kick if at least one open slot of the same car model is available
IgnoreWithOpenSlots: true
# Time after the player gets kicked. A warning will be sent in chat one minute before this time
DurationMinutes: 10
# Set this to MinimumSpeed to not reset the AFK timer on chat messages / controller inputs and require players to actually drive
Behavior: PlayerInput
# Kick players with a high ping
HighPingPenalty:
# Set to true to enable
Enabled: true
# Time after the player gets kicked. A warning will be sent in chat after half this time
DurationSeconds: 20
# Players having a lower ping will not be kicked
MaximumPingMilliseconds: 500
# Penalise players driving the wrong way. AI has to enabled for this to work
WrongWayPenalty:
# Set to true to enable
Enabled: true
# Time after the player gets kicked. A warning will be sent in chat after half this time
DurationSeconds: 20
# Players driving slower than this speed will not be kicked
MinimumSpeedKph: 20
# The amount of times a player will be send to pits before being kicked
PitsBeforeKick: 2
# Penalise players driving without lights during the night
NoLightsPenalty:
# Set to true to enable
Enabled: true
# Time in which no warning or signs will be sent
IgnoreSeconds: 2
# Time after the player gets kicked. A warning will be sent in chat after half this time
DurationSeconds: 60
# Players driving slower than this speed will not be kicked
MinimumSpeedKph: 20
# The amount of times a player will be send to pits before being kicked
PitsBeforeKick: 2
# Penalise players blocking the road. AI has to be enabled for this to work
BlockingRoadPenalty:
# Set to true to enable
Enabled: true
# Time after the player gets kicked. A warning will be sent in chat after half this time
DurationSeconds: 30
# Players driving faster than this speed will not be kicked
MaximumSpeedKph: 5
# The amount of times a player will be send to pits before being kicked
PitsBeforeKick: 2If we wanted to, we could now further adjust the plugin config, we will be leaving it as is for now.
RandomWeatherPlugin
-
Navigate to the
cfg
folder of the server and open theextra_cfg.yml
. -
Find
EnablePlugins:
and enable the plugin like so:extra_cfg.yml# List of plugins to enable
EnablePlugins:
- AutoModerationPlugin
- RandomWeatherPlugin -
Save the file, double-click
AssettoServer.exe
to launch the server and generate the plugin config, then close the console and return to thecfg
folder. -
Open the
plugin_random_weather_cfg.yml
. We will edit theWeatherWeights
to only allow forClear
,FewClouds
,ScatteredClouds
,BrokenClouds
andOvercastClouds
like so:plugin_random_weather_cfg.yml# yaml-language-server: $schema=schemas\plugin_random_weather_cfg.schema.json
# Weights for random weather selection, setting a weight to 0 blacklists a weather, default weight is 1
WeatherWeights:
LightThunderstorm: 0
Thunderstorm: 0
HeavyThunderstorm: 0
LightDrizzle: 0
Drizzle: 0
HeavyDrizzle: 0
LightRain: 0
Rain: 0
HeavyRain: 0
LightSnow: 0
Snow: 0
HeavySnow: 0
LightSleet: 0
Sleet: 0
HeavySleet: 0
Clear: 1
FewClouds: 1
ScatteredClouds: 1
BrokenClouds: 1
OvercastClouds: 1
Fog: 0
Mist: 0
Smoke: 0
Haze: 0
Sand: 0
Dust: 0
Squalls: 0
Tornado: 0
Hurricane: 0
Cold: 0
Hot: 0
Windy: 0
Hail: 0
# Minimum duration until next weather change
MinWeatherDurationMinutes: 5
# Maximum duration until next weather change
MaxWeatherDurationMinutes: 30
# Minimum weather transition duration
MinTransitionDurationSeconds: 120
# Maximum weather transition duration
MaxTransitionDurationSeconds: 600 -
Save and close the file and restart the server.
If you did everything correctly you will see two new lines at the beginning of the server log:
This covers how to enable and configure plugins.
Troubleshooting Basics
If at some point something goes wrong and the server no longer starts properly, there a few way to figure out what went wrong and how to fix it. We will be looking at one of the more common reasons for a server crash in this example but learning what to look for can help you figure out how to fix any problem.
If the console window just closes when you try to start the server there will always be a server logfile in the logs
folder and a crash logfile in the crash
folder that you can read!
Server logs will be generated in the logs
folder of the server.
They will be generated as log-20230706.txt
with the part after log-
being the date the log was written.
Before I continue I want to explain a few thing that can be useful to cut down on how much you have to read in order to understand.
Each line in the log will have some information in the beginning: YEAR-MONTH-DAY HR:MIN:SEC.MILS TIMEZONE(+/- UTC) [TYPE]
We only really care about the type and actual message, so here is a little cheatsheet:
Message Type | Meaning |
---|---|
[DBG] | Debug, can be ignored |
[INF] | Information, can also be ignored |
[WRN] | Warning, might be important but can usually be ignored as well |
[ERR] | Error, an error the server can recover from and keep running. |
[FTL] | Fatal, an error causing the server to terminate. |
While [INF]
, [DBG]
and [WRN]
might have hints for other problems, in our example we will focus on the [ERR]
and [FTL]
messages.
Example #1 - Missing AI spline
Now, I want you to look at the log in the image below and try to read the log until you find something that might give you a idea about what is causing the server to crash.
At first this might seem like a lot of scary text and that doesn't really change even if we narrow it down the the [FTL]
message.
But if we actually try and read a few lines we can spot something we will be able to understand:
This line tells us everything we need to know, so we can ignore the rest of the message.
No ai folder found. Please put at least one AI spline fast_lane.ai(p) into \content\tracks\shuto_revival_project_beta\ai\
Apparently we failed to place a AI spline in the correct folder.
Moving the fast_lane.aip
into the folder that is shown in the log message (or creating the folder if needed), will get rid of this error and should let the server start without problems.
Example #2 - Syntax error in config file
Since we enabled and configured some plugins earlier on, let's look at an example that has something to do with that.
While this looks a lot different and it doesn't provide a helpful message telling us what to do as before, it is actually easy to understand.
Error parsing configuration file cfg\plugin_auto_moderation_cfg.yml --> (Line: 6, Col: 16, Idx: 172)
From this line we can tell that something went wrong parsing the plugin_auto_moderation_cfg.yml
file.
So lets open the plugin_auto_moderation_cfg.yml
and take a look at Line 6
At first glance, especially if you don't use a text editor that has syntax highlighting, it might look like there is nothing wrong here.
But looking closer, we can see that we made a typo when enabling HighPingKick
, correcting the Enabled: ture
to Enabled: true
and saving the file will get rid of this error and should let the server start without problems.
Updating the Server
In general, it is recommended to start fresh instead of simply overwriting files when updating AssettoServer.
-
Backup your current server files and download the latest release. (or the version you want to update to)
-
Create a new folder for the updated server and extract the new AssettoServer files as explained back in this section.
-
From your old server, only copy and re-use files that are not
extra_cfg.yml
orplugin_<plugin_name>_config.yml
. -
Run the updated
AssettoServer.exe
once to generate a updatedextra_cfg.yml
. -
Use the backup of your old
extra_cfg.yml
to reconfigure theextra_cfg.yml
of the updated server. -
If you had any plugins enabled, restart the updated server once to generate new plugin config files and then reconfigure them.
The parameters inside extra_cfg.yml
and plugin config files may change between versions.
If you overwrite the file with one from a older version or change / restore parameters manually, the server may stop working.
How to Ask for Help
If you have a question or run into a problem that you can't figure out yourself, feel free to join the AssettoServer Discord and ask for help.
Before that though, please make sure to read the Introduction, FAQ and Common configuration errors pages as they answer a lot of common questions.
If you need help with setting up your server please use #server-troubleshooting.
Posting your problem in #bug-reports or #general will ususally result in the message being ignored or deleted.