Admins & Moderators
Specify SteamId64s. Multiple entries allowed.
AdminsSteamId64=76561197960287930
AdminsSteamId64=76561198012345678
ModeratorsSteamId64=76561197960287930 Players
| Setting | Default | Description |
|---|---|---|
MaxPlayers | 100 | Maximum players on the server. |
Tick Rates
Game Tick Rate
| Setting | Default | Description |
|---|---|---|
bEnableGameTickRateScaling | True | Enable linear dynamic game tick scaling. |
bEnableGameTickRateExponentialScale | False | Switch to exponential scaling. |
MinGameTickRate | 16 | Minimum game tick rate. |
MaxGameTickRate | 60 | Maximum game tick rate. |
Network Tick Rate
| Setting | Default | Description |
|---|---|---|
bEnableNetworkTickRateScaling | False | Enable linear dynamic network tick scaling. |
bEnableNetworkTickRateExponentialScale | False | Switch to exponential scaling. |
MinNetTickRate | 16 | Minimum network tick rate. |
MaxNetTickRate | 60 | Maximum network tick rate. |
Game Rules
| Setting | Default | Description |
|---|---|---|
bPlatformAntiCheat | True | Enable server-side anti-cheat. |
bUseLAN | False | Run on LAN. |
bHardcore | False | Disable "Bound to Account" item property. |
Economy
| Setting | Default | Description |
|---|---|---|
MinCurrencyValue | 0.5 | Minimum economic value. |
MaxCurrencyValue | 2.25 | Maximum economic value. |
MaxBuildablesMultiplier | 1.5 | Global scalar for max buildables. |
DoubleDropRateDays | Fri, Sat, Sun | Days with doubled drop rates. |
Plugins
Settings for WebAssembly server plugins. See Plugin Development for writing them.
| Setting | Default | Description |
|---|---|---|
PluginTickRate | 20 | Rate in Hz at which each tickable plugin receives onPluginTick. |
PluginFuelPerCall | 10000000000 | How much work a single call into a plugin may do. 0 disables fuel accounting. |
PluginCallTimeoutMilliseconds | 250 | How long a single call into a plugin may hold the game thread. 0 disables the timeout. |
Plugin Tick Rate
PluginTickRate is the target rate, in Hz, at which each tickable plugin receives onPluginTick. Plugins are spread across frames rather than all ticking on the same one, so raising this raises per-frame plugin cost proportionally.
Plugins run on the game thread, so the value is clamped to MaxGameTickRate: a plugin cannot tick faster than the server itself. Setting it above that ceiling just makes every plugin run every frame, at maximum per-frame cost.
Plugin Fuel
PluginFuelPerCall bounds how much work a single call into a plugin may do. Fuel is consumed per executed WebAssembly instruction, and the budget is refreshed before every call, so it is a ceiling on one call rather than a rate limit. A call that exhausts its budget is stopped, and an isolated overrun costs only that call: the plugin stays loaded and the next call runs normally. Overruns that keep happening are handled differently, under repeated overruns below.
Set it high enough that only a runaway loop reaches it — the default leaves ordinary plugin work far below the ceiling. Setting it to 0 turns fuel accounting off, which leaves the call timeout as the only bound on a call.
Plugin Call Timeout
PluginCallTimeoutMilliseconds bounds how long a single call may hold the game thread, and it is the bound that protects server responsiveness. A callback that finishes in five milliseconds is fine; one still running after two hundred is holding up the whole server, whatever its instruction count. A call that passes its deadline is interrupted.
The two bounds answer different questions, and a server wants both. Fuel limits the work a call may do; the timeout limits the time it may take. A fuel budget generous enough that no legitimate callback ever reaches it is also large enough to take a long while to spend, and instructions do not convert to time the same way on every machine.
Setting the value to 0 turns the timeout off, in which case a plugin that does not return will hold the game thread.
Repeated Overruns
Either bound stopping a call counts as one strike against that plugin, and a call that returns on its own clears the count. Three strikes in a row disables the plugin: it stays loaded, but is not called again until plugins are reloaded. An admin can reload them on a running server with /reloadplugins, or from the server console with BadLads.Plugins.Reload. Restarting the server clears it too.
Stopping calls one at a time is enough for a plugin that occasionally overruns, but not for one that runs away on every tick — that plugin would be handed a fresh budget each time and the server would keep paying for it. Disabling it instead names the plugin in the server log and leaves the rest of the server running, so the fault can be found and fixed.
Server Options
| Setting | Default | Description |
|---|---|---|
AutoSaveInterval | 300 | Auto-save interval in seconds. |
ServerPassword | — | Server password (32 char limit). |
MessageOfTheDay | — | Message shown on player join. |
EnableSteamSockets | False | Steam Datagram Relay (experimental). |