Vintage Story Server Settings and World Config
Vintage Story server settings explained: serverconfig.json, live /serverconfig changes, the roles and land-claim system, and /worldconfig for world rules.
Vintage Story splits its configuration in a way that catches people out: server settings live in serverconfig.json and can mostly be changed at runtime, while world settings live inside the save and are changed with console commands. Editing the wrong one, or editing at the wrong time, quietly achieves nothing. This guide covers both, plus the roles system that handles permissions.
serverconfig.json
The main config sits at the root of your data folder. The server writes it on first start, and it contains every key the build supports.
{
"ServerName": "My GSK Vintage Story Server",
"ServerDescription": "A vintage survival adventure",
"WelcomeMessage": "Welcome {0}, may you survive well and prosper",
"Port": 42420,
"MaxClients": 16,
"MaxClientsInQueue": 0,
"Password": null,
"AdvertiseServer": false,
"PassTimeWhenEmpty": false,
"WarnClientsAfterAfkSeconds": 0,
"KickClientsAfterAfkSeconds": 0,
"ClientConnectionTimeout": 150,
"MaxChunkRadius": 12,
"ServerLanguage": "en"
} | Setting | Default | Notes |
|---|---|---|
ServerName |
— | 4–80 characters, shown in the public list |
MaxClients |
16 |
Slot cap |
MaxClientsInQueue |
0 |
Queue length once full |
Password |
null |
null for an open server |
AdvertiseServer |
false |
Off by default — set true to appear in the public list |
PassTimeWhenEmpty |
false |
Whether time advances with nobody online |
WarnClientsAfterAfkSeconds / KickClientsAfterAfkSeconds |
0 |
AFK handling. 0 disables |
MaxChunkRadius |
12 |
Chunks loaded per player — the biggest performance dial |
ClientConnectionTimeout |
150 |
Seconds before a stalled client is dropped |
Portbelongs to your allocation, not to you
42420is Vintage Story's stock port. Your managed Vintage Story server is assigned its own and the firewall is opened for that one only. A hand-editedPortproduces a server that starts, logs nothing unusual, and listens where no traffic ever arrives. Your real port is beside the Address on the Console tab and on the Network tab.
Never edit serverconfig.json while the server is running
Vintage Story writes its current in-memory config to disk on shutdown. Edit the file while the server is up and your changes are overwritten the moment it stops — with no error. Stop → edit → start, in that order.
Changing settings without stopping the server
Many of these can be set live from the console, which sidesteps the overwrite problem entirely:
/serverconfig maxclients 12
/serverconfig password MySecret
/serverconfig allowpvp false Not everything is available this way — world generation options and some performance settings still need a file edit and a restart. Run /serverconfig with no arguments to see what your build accepts.
Roles and privileges
This is Vintage Story's permission system, and it is more capable than most. serverconfig.json contains a Roles array defining who can do what, including how much land each group may claim.
The stock roles, in ascending order of privilege:
| Role code | Can do |
|---|---|
suvisitor |
Visit and chat only. No building or interaction |
crvisitor |
As above, plus fly |
limitedsuplayer |
Build and interact only in permitted areas |
limitedcrplayer |
As above, plus fly and set own game mode |
suplayer |
Build in unprotected areas, claim land |
crplayer |
Build anywhere, fly, larger land claim allowance |
Each role carries a PrivilegeLevel, a Privileges list (chat, build, useblock, areamodify, gamemode, freemove, attackplayers, and so on), and land-claim limits:
| Field | Meaning |
|---|---|
LandClaimAllowance |
Total claimable volume for that role |
LandClaimMaxAreas |
How many separate claims they may hold |
LandClaimMinSize |
Smallest permitted claim |
AutoGrant |
Whether new players receive this role automatically |
Land claim limits are a role setting, not a world setting
If players complain they cannot claim enough land, the dial is
LandClaimAllowanceon their role — not anything in the world config. Raising it forsuplayeris the usual fix on a building-focused server.
World settings
World rules are stored inside the save, not in serverconfig.json. They are changed with the /worldconfig console command and take effect after a restart:
/worldconfig deathPunishment keep
/worldconfig creatureHostility passive
/worldconfig graceTimer 10
/worldconfig daysPerMonth 12
/worldconfig temporalStorms rare | Command | Effect |
|---|---|
deathPunishment keep |
Players keep their items on death |
creatureHostility passive |
Creatures do not attack |
graceTimer 10 |
Delays the first temporal storm by that many days |
daysPerMonth 12 |
Slows the seasons |
temporalStorms rare |
Reduces storm frequency |
Run /worldconfig on its own to list every option your server supports — that output is always correct for your build.
Playstyle, seed and world size only apply at generation
PlayStyle,Seed,WorldTypeand theMapSizevalues are read when a world is created. Changing them on an existing world does nothing at all. To use a different playstyle you need to generate a new world.
The five playstyles are surviveandbuild, exploration, homosapiens, wildernesssurvival and creativebuilding. WorldType accepts standard or superflat.
Performance tuning
MaxChunkRadius is the setting that matters most. Each connected player loads chunks in that radius, so memory and CPU scale with players × radius:
12is the default and is right for most servers- Drop to
10if a busy server is struggling - Raising it above
14rarely improves the experience and costs a lot
The block-tick settings (BlockTickChunkRange, RandomBlockTicksPerChunk, BlockTickInterval, MaxMainThreadBlockTicks) control how much world simulation runs each tick. Leave them alone unless you are diagnosing a specific performance problem — they trade world liveliness for frame time, and the defaults are well chosen.
Applying changes
| Change | How |
|---|---|
| Most server settings | /serverconfig <key> <value> — takes effect live |
Everything in serverconfig.json |
Stop the server, edit, start |
| World rules | /worldconfig <key> <value>, then restart |
| Playstyle, seed, world size | Generate a new world |
What to read next
- Getting started with your Vintage Story server — first boot and connecting
- Vintage Story Admin Setup — granting yourself privileges
- Installing Mods on Vintage Story — the mod database and installs
- How to use your server panel — where the Network and File Manager tabs live
FAQ
Why do my serverconfig.json edits keep disappearing?
You edited the file while the server was running. Vintage Story overwrites it from memory on shutdown. Stop the server first, or use /serverconfig to change the setting live.
Why is my server not showing in the public list?
AdvertiseServer defaults to false. Set it to true.
How do I change the playstyle on an existing world?
You cannot. PlayStyle is read only when a world is generated — changing it later has no effect. You would need to create a new world.
What is the difference between /serverconfig and /worldconfig?
/serverconfig changes server settings such as slots and password. /worldconfig changes world rules such as death penalty and creature hostility, which are stored in the save itself.
How do I let players claim more land?
Raise LandClaimAllowance on their role in the Roles array. It is a role permission, not a world setting.
My server is lagging with several players online — what should I change first?
MaxChunkRadius. Dropping it from 12 to 10 has a larger effect than any other single setting, because chunk load scales with every connected player.
Made with 💜 by GameServerKings

Need a Vintage Story server?
Deploy an instantly-provisioned Vintage Story server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $4.90 /month