Rust world, event and vehicle convars
Quick answer: these are the Rust server convars for weather, physics, trees, world events, vehicles, boats and every variable not on the other pages, with the value each starts at. Type a name and a value in the server console or RCON, or put that line in server.cfg to apply it at every start. This list comes straight from a Rust dedicated server (Rust build 26431843, read 2026-11-06), and it is refreshed after every Rust update.
A Saved variable is written to cfg/serverauto.cfg by server.writecfg and read back at the next start, before server.cfg. The common ones are on Rust server variables. The other groups: Server and gameplay variables, Antihack, network and RCON variables, AI, NPC and animal variables.
apartment
Section titled “apartment”| Variable | Default | Saved | What it does |
|---|---|---|---|
apartment.adminapartmentbypass | False | Should admins be able to bypass apartment authorization checks? | |
apartment.adminapartmentnoclip | True | Should admins be able to noclip in apartments? | |
apartment.allowcombatoutsideofbreakin | True | Should combat be allowed inside apartment rooms outside of the break-in period? | |
apartment.apartmentevictiondelay | 86400 | How long should we wait before evicting a player from their apartment if they don’t pay rent? | |
apartment.apartmentfreerenthours | 4 | How many hours of scrap upkeep does the apartments spawn with (so players don’t see ‘Eviction’ vital right after renting an apartment | |
apartment.apartmentinvisibleblocker | True | Should an invisible blocker prevent guests from entering apartments that they don’t have access to? | |
apartment.breakinseconds | 30 | How long a player needs to hold the break in interaction on an apartment door with a master key | |
apartment.intruderauthseconds | 300 | How long a player stays authorized on an apartment room after breaking in with a master key | |
apartment.masterkeyprice | 1000 | How much scrap the apartment security NPC charges for a master key | |
apartment.npcsecuritydooropentime | 300 | How long should the apartment security NPC keep the door open for after being paid? | |
apartment.rentscaling | 0 | Should the rent scale based on the items you have stored inside your apartment? |
baseboat
Section titled “baseboat”| Variable | Default | Saved | What it does |
|---|---|---|---|
baseboat.debug_eject_ai | False | When enabled, logs debug information about AI ejection events when passengers are removed from boat seats | |
baseboat.do_shore_drift | True | When enabled, boats without nearby players will slowly drift toward the shore after the shore drift delay elapses | |
baseboat.drift_speed | 1 | ||
baseboat.generate_paths | True | When enabled, procedural patrol paths are generated for boats at server startup; false in editor to skip path generation during testing | |
baseboat.regenerate_ocean_path | False | Regenerate the ocean patrol path at startup instead of loading it from the cache file next to the map |
basemission
Section titled “basemission”| Variable | Default | Saved | What it does |
|---|---|---|---|
basemission.missionpervalidstatecooldown | 3 | Yes | Minimum time (s) between revalidating individual missions via updateMissionValidStateWorkQueue |
basemission.missionsenabled | True | When enabled, missions are available and can be assigned to players; disable to globally suppress mission generation and assignment on the server | |
basemission.missionvalidstateworkqueuebudget | 0.1 | Yes | How long per frame (ms) to spend processing updateMissionValidStateWorkQueue |
basemission.missionvalidstateworkqueuecooldown | 3 | Yes | Minimum time (s) between starting runs of updateMissionValidStateWorkQueue |
| Variable | Default | Saved | What it does |
|---|---|---|---|
bike.doplayerdamage | True | Can bike crashes cause damage or death to the rider? | |
bike.motorbikemonumentpopulation | 1 | Motorbike population in monuments | |
bike.outsidedecayminutes | 1440 | How long before a bike loses all its health while outside | |
bike.pedalmonumentpopulation | 1 | Pedal bike population in monuments | |
bike.pedalroadsidepopulation | 1 | Pedal bike population active on the server (roadside spawns) | |
bike.playerdamageragdolltheshold | 10 | Amount of collision damage on a bike required to ragdoll the player |
boatbuildingstation
Section titled “boatbuildingstation”| Variable | Default | Saved | What it does |
|---|---|---|---|
boatbuildingstation.autocloseplayercheckinterval | 150 | ||
boatbuildingstation.autocloseplayerchecktriggercount | 2 | ||
boatbuildingstation.editfinishuseinterval | 5 | ||
boatbuildingstation.globaleditfinishuseinterval | 0 | ||
boatbuildingstation.logboatbuildingevents | False | ||
boatbuildingstation.max_bbs | 1 | ||
boatbuildingstation.staticstationsenabled | True |
bradleyapc
Section titled “bradleyapc”| Variable | Default | Saved | What it does |
|---|---|---|---|
bradleyapc.deployattackdistancemax | 50 | ||
bradleyapc.deployhealthrangemax | 0.5 | ||
bradleyapc.deployhealthrangemin | 0.4 | ||
bradleyapc.deployinterval | 1 | ||
bradleyapc.deployondamagecheckinterval | 1 | ||
bradleyapc.killscientistsonbradleydeath | False | ||
bradleyapc.mountafternotattackedduration | 180 | ||
bradleyapc.mountafternotfiredduration | 60 | ||
bradleyapc.mountafternottargetsduration | 60 | ||
bradleyapc.scientistredeploymentmininterval | 60 | ||
bradleyapc.usesmokegrenades | True |
camerarenderer
Section titled “camerarenderer”| Variable | Default | Saved | What it does |
|---|---|---|---|
camerarenderer.completionframebudgetms | 5 | Per-frame CPU budget in milliseconds for completing pending companion server camera renders | |
camerarenderer.developerpermissions | True | Enable developer-specific permissions for camera access (less restricted) | |
camerarenderer.enabled | True | When enabled, the companion server camera rendering system is active and processes camera render requests from the companion app | |
camerarenderer.entitymaxage | 5 | Maximum age in frames for a known collider entity entry in the companion server camera cache before it is evicted | |
camerarenderer.entitymaxdistance | 100 | Maximum distance in metres from the companion server camera at which entity colliders are tracked for rendering | |
camerarenderer.farplane | 250 | Far clipping plane distance in metres for companion server camera renders; default 250 | |
camerarenderer.height | 180 | Height in pixels of the companion server camera render output; default 180 | |
camerarenderer.layermask | 1218656529 | Physics layer mask used for raycasting in companion server camera depth sampling; defaults to solid, water, and player movement layers | |
camerarenderer.maxraysperframe | 100000 | Maximum number of raycasts per frame used for companion server camera depth sampling | |
camerarenderer.maxrendersperframe | 25 | Maximum number of camera render tasks that can complete per frame for companion server cameras | |
camerarenderer.nearplane | 0 | Near clipping plane distance for companion server camera renders; 0 = use default | |
camerarenderer.playermaxdistance | 30 | Maximum distance in metres at which player entities are included in companion server camera renders | |
camerarenderer.playernamemaxdistance | 10 | Maximum distance in metres at which player name labels are included in companion server camera render output | |
camerarenderer.rayjitter | 0.5 | Maximum per-axis camera rotation jitter, in sample cells, applied to each companion server camera render so a stationary camera still returns a natural scatter of ray samples instead of a rigid grid; 0 disables | |
camerarenderer.renderinterval | 0.05 | Interval in seconds between successive companion server camera render dispatches; default 0.05s (20 Hz) | |
camerarenderer.samplesperrender | 3000 | Number of raycast samples taken per companion server camera render pass for depth reconstruction | |
camerarenderer.verticalfov | 65 | Vertical field of view in degrees for companion server camera renders; default 65 | |
camerarenderer.width | 320 | Width in pixels of the companion server camera render output; default 320 |
cargoship
Section titled “cargoship”| Variable | Default | Saved | What it does |
|---|---|---|---|
cargoship.cargo_escape_boat_rhib | True | ||
cargoship.dock_time | 480 | ||
cargoship.docking_debug | False | ||
cargoship.egress_duration_minutes | 10 | ||
cargoship.event_duration_minutes | 50 | ||
cargoship.event_enabled | True | ||
cargoship.loot_round_spacing_minutes | 10 | ||
cargoship.loot_rounds | 3 | ||
cargoship.refresh_loot_on_dock | True | ||
cargoship.should_dock | True |
convartimedprefabspawner
Section titled “convartimedprefabspawner”| Variable | Default | Saved | What it does |
|---|---|---|---|
convartimedprefabspawner.prefab_despawn_time | 20 | Yes | Time in seconds before spawned prefabs are despawned. Set to 0 to disable despawning. |
convartimedprefabspawner.prefab_spawn_interval | 0 | Time in seconds between prefab spawns. Set to 0 to disable spawning. | |
convartimedprefabspawner.prefab_spawn_interval_variance | 3 | Yes | Variance in seconds to add/subtract from the spawn interval |
convartimedprefabspawner.prefab_spawn_random_position_offset | 0 | Yes | Maximum random offset (sphere radius) from the spawner’s position when spawning prefabs |
convartimedprefabspawner.prefab_spawn_random_rotation | True | Yes | If true, spawned prefabs will have a random rotation |
dartsgame
Section titled “dartsgame”| Variable | Default | Saved | What it does |
|---|---|---|---|
dartsgame.accuracyadjustspeed | 1 | Yes | |
dartsgame.accuratevelocitythreshold | 0.05 | Yes | |
dartsgame.cooldownbetweenthrows | 3 | Yes | |
dartsgame.debugcanplayagainstself | False | Yes | |
dartsgame.holdfocusaddedfriction | 0.45 | Yes | |
dartsgame.holdfocusduration | 2 | Yes | |
dartsgame.idlekickseconds | 180 | Yes | |
dartsgame.maxaccuracy | 0 | Yes | |
dartsgame.maxthrowtimer | 10 | Yes | |
dartsgame.maxzoom | 0.5 | Yes | |
dartsgame.minaccuracy | 0.1 | Yes | |
dartsgame.needdoubletowin | True | Yes | |
dartsgame.reticlefriction | 0.5 | Yes | |
dartsgame.reticleinputbufferapplication | 100 | Yes | |
dartsgame.reticleinputspeed | 0.01 | Yes | |
dartsgame.reticlemaxvelocity | 3 | Yes | |
dartsgame.reticlerandomforcestrength | 0.5 | Yes | |
dartsgame.reticlespawnpointradiusoffset | 0.5 | Yes | |
dartsgame.scoretarget | 301 | Yes | Sets the score target in Darts. Standard games are either 301 or 501. |
deepsea
Section titled “deepsea”| Variable | Default | Saved | What it does |
|---|---|---|---|
deepsea.allow_all_vehicles | False | Allow all vehicles to travel to the deep sea, instead of just the whitelisted vehicles | |
deepsea.allow_swimmers | False | Allow players to swim to the deep sea | |
deepsea.block_building | True | ||
deepsea.debug_portal_spawnattempts | False | When enabled, logs each deep sea portal spawn attempt to the console including whether it succeeded or failed | |
deepsea.enabled | True | Toggles the deep sea. Needs a server restart to take effect. Any saved deep sea entities will be destroyed at the next startup | |
deepsea.entities_spawninterval | 5 | When generating, the interval in seconds in between each entity spawn (island, ghost ship and floating city). Increase if you’re experiencing lag when the deep sea is opening. | |
deepsea.floatingcity_count | 1 | Number of floating cities to spawn in the deep sea | |
deepsea.floatingcity_edgemargin | 1500 | Minimum distance in metres floating cities must be from the deep sea boundary edge when spawning | |
deepsea.floatingcity_mindist | 1500 | Minimum distance in metres required between floating city | |
deepsea.floatingcity_radius | 500 | Exclusion radius in metres around floating cities | |
deepsea.forceentranceportaldirection | 0 | 0 Random, 1 North, 2 East, 3 South, 4 West | |
deepsea.ghostship_count | 4 | Number of ghost ship to spawn in the deep sea zone | |
deepsea.ghostship_edgemargin | 450 | Minimum distance in metres ghost ships must be from the deep sea boundary edge when spawning | |
deepsea.ghostship_mindist | 400 | Minimum distance in metres required between ghost ships | |
deepsea.ghostship_radius | 80 | Exclusion radius in metres around ghost ship | |
deepsea.hackablecrate_count | 1 | Number of hackable crates to spawn in the deep sea | |
deepsea.island_count | 6 | Number of islands to spawn in the deep sea zone | |
deepsea.island_edgemargin | 750 | Minimum distance in metres islands must be from the deep sea boundary edge when spawning | |
deepsea.island_mindist | 600 | Minimum distance in metres required between islands | |
deepsea.island_portal_terrain_distance | 750 | Distance in metres from the main island shore at which deep sea entrance portals are placed | |
deepsea.island_radius | 300 | Exclusion radius in metres around islands | |
deepsea.lighthouseopendelay | 0 | Seconds between the first lighthouse repair and the deep sea opening, 0 opens it straight away | |
deepsea.logs | False | When enabled, outputs verbose deep sea system log messages (portal transitions, wipe events, entity moves) to the server log for debugging | |
deepsea.loot_respawn_scale | 1 | Population multiplier applied to the loot the deep sea will respawn over time. 1.0 = unchanged, 0.5 = half, 2.0 = double | |
deepsea.loot_scale | 1 | Population multiplier applied to the loot the deep sea spawns with. 1.0 = unchanged, 0.5 = half, 2.0 = double | |
deepsea.navmesh_spawninterval | 5 | When generating, the interval in seconds in between each island navmesh bake. Increase if you’re experiencing lag when the deep sea is opening. | |
deepsea.openonserverwipe | False | Should the deep sea open as soon as the server wiped? | |
deepsea.rhib_count | 4 | Number of RHIB boat groups to spawn in the deep sea | |
deepsea.rhib_edgemargin | 1150 | Minimum distance in metres RHIB groups must be from the deep sea boundary edge when spawning | |
deepsea.rhib_mindist | 300 | Minimum distance in metres required between RHIB groups | |
deepsea.rhib_radius | 10 | Exclusion radius in metres around each RHIB group | |
deepsea.spawngroups_spawninterval | 0.15 | When generating, the interval in seconds in between each spawn groups fill (dwellings/crates/scientists on island, ghost ships). Increase if you’re experiencing lag when the deep sea is opening. | |
deepsea.stricttransitionreposition | True | Ensure all players on a mounted boat are repositioned after a transition, if this is false we rely on parenting exclusively | |
deepsea.terrain_everywhere | False | Yes | Applies the deep sea terrain config and foliage to the whole map, not just inside the deep sea |
deepsea.wipecooldownmax | 5400 | Maximum seconds before a deep sea re-opens after closing | |
deepsea.wipecooldownmin | 5400 | Minimum seconds before a deep sea re-opens after closing | |
deepsea.wipeduration | 10800 | Duration in seconds of the deep sea wipe | |
deepsea.wipeendphaseduration | 1800 | Duration in seconds of the final wipe phase, bad weather kicking in etc | |
deepsea.wiperadiationphaseduration | 300 | Seconds before radiation starts to ramp in before the deep sea wipe |
| Variable | Default | Saved | What it does |
|---|---|---|---|
demo.recordlist | Yes | Comma-separated list of player Steam IDs whose demos are automatically recorded on the server; empty means no targeted recording | |
demo.recordlistmode | 0 | Yes | Controls the behavior of recordlist, 0=whitelist, 1=blacklist |
demo.splitmegabytes | 200 | Maximum file size in megabytes before a demo recording is automatically split; prevents individual demo files from becoming unmanageably large | |
demo.splitseconds | 3600 | Maximum duration in seconds before a demo recording is automatically split into a new file; default is 3600 (1 hour) |
| Variable | Default | Saved | What it does |
|---|---|---|---|
drone.altitudespeedoverride | 0 | If greater than zero, overrides the drone’s vertical movement speed | |
drone.disablesamtargeting | False | ||
drone.maxcontrolrange | 750 | How far drones can be flown away from the controlling computer station | |
drone.movementspeedoverride | 0 | If greater than zero, overrides the drone’s planar movement speed | |
drone.samproximityfuseradius | 10 | Radius at which a SAM missile’s proximity fuse detonates against drones, capped by the missile’s 20m trigger sphere |
| Variable | Default | Saved | What it does |
|---|---|---|---|
env.day | 0 | Gets or sets the current in-game day of the month; used for calendar-driven events and date display | |
env.daylength | 0 | How many real minutes one in-game day lasts on the server. Not sent to clients, whose sky keeps its own day length between time syncs, so lower it headless or in the editor to run a day through quickly. Never zero, freeze time with env.progresstime instead | |
env.month | 0 | Gets or sets the current in-game month (1-12); used for seasonal event triggers and calendar display | |
env.nightlight_brightness | 0.008 | Brightness multiplier for night lighting. | |
env.nightlight_distance | 5 | Render distance for night light. | |
env.nightlight_fadefraction | 0.65 | Fade proportion for night light. | |
env.oceanlevel | 0 | Adjust the ocean water level height. | |
env.progresstime | False | When enabled, the server advances the in-game time of day automatically; disabling freezes time at its current value | |
env.redmoon | False | Enable or disable the red moon visual effect. | |
env.time | 0 | Gets or sets the current in-game time of day as a decimal hour (0.0-24.0); writing a value immediately jumps the time to that point | |
env.year | 0 | Gets or sets the current in-game year; used for date display and long-running server event tracking |
halloween
Section titled “halloween”| Variable | Default | Saved | What it does |
|---|---|---|---|
halloween.enabled | False | Enables the Halloween event on the server, activating Halloween-themed loot spawns, NPC variants, and event-specific mechanics | |
halloween.murdererpopulation | 0 | Population active on the server, per square km | |
halloween.scarecrow_beancan_vs_player_dmg_modifier | 0.1 | Modified damage from beancan explosion vs players (Default: 0.1). | |
halloween.scarecrow_body_dmg_modifier | 0.25 | Modifier to how much damage scarecrows take to the body. (Default: 0.25) | |
halloween.scarecrow_chase_stopping_distance | 0.5 | Stopping distance for destinations set while chasing a target (Default: 0.5) | |
halloween.scarecrow_throw_beancan_global_delay | 8 | The delay globally on a server between each time a scarecrow throws a beancan (Default: 8 seconds). | |
halloween.scarecrowpopulation | 0 | Population active on the server, per square km | |
halloween.scarecrows_throw_beancans | True | Scarecrows can throw beancans (Default: true). |
| Variable | Default | Saved | What it does |
|---|---|---|---|
heli.bulletaccuracy | 2 | Cone angle in degrees of the patrol helicopter gun spread; higher values make the helicopter less accurate | |
heli.bulletdamagescale | 1 | Multiplier applied to all bullet damage dealt by the patrol helicopter; 1.0 = normal, 2.0 = double damage | |
heli.guns | 1 | Number of gun hardpoints active on the patrol helicopter; set to 0 to disable its guns without despawning it | |
heli.lifetimeminutes | 30 | How many minutes the patrol helicopter stays airborne before self-destructing; default is 30 minutes |
hotairballoon
Section titled “hotairballoon”| Variable | Default | Saved | What it does |
|---|---|---|---|
hotairballoon.minimumaltitudeterrain | 25 | ||
hotairballoon.outsidedecayminutes | 180 | How long before a HAB loses all its health while outside | |
hotairballoon.population | 1 | Population active on the server | |
hotairballoon.serviceceiling | 175 |
ioentity
Section titled “ioentity”| Variable | Default | Saved | What it does |
|---|---|---|---|
ioentity.allow_on_boats | False | Allows the deployment and usage of IO entities on player boats and tugboats. | |
ioentity.backtracking | 8 | Number of IO update passes allowed to back-track and re-process changed entities each tick; higher values improve signal propagation speed | |
ioentity.debugbudget | False | Print out what is taking so long in the IO frame budget | |
ioentity.debugbudgetthreshold | 2 | Ignore frames with a lower ms than this while debugBudget is active | |
ioentity.framebudgetelectrichighpriorityms | 1 | ||
ioentity.framebudgetelectriclowpriorityms | 0.5 | ||
ioentity.framebudgetfluidms | 0.25 | ||
ioentity.framebudgetgenericms | 1 | ||
ioentity.framebudgetindustrialms | 0.25 | ||
ioentity.framebudgetkineticms | 1 | ||
ioentity.infiniteiopower | False | All player placed electrical entities will receive full power without needing to be plugged into anything | |
ioentity.responsetime | 0.1 | Minimum interval in seconds between IO entity logic updates; controls how quickly electrical signals propagate through the network |
junkpilewater
Section titled “junkpilewater”| Variable | Default | Saved | What it does |
|---|---|---|---|
junkpilewater.destroyablebyplayerboats | True | ||
junkpilewater.framebudgetms | 0.05 | ||
junkpilewater.minimumplayerboatmasstobedestroyed | 2000 | ||
junkpilewater.minimumplayerboatvelocitytobedestroyed | 5 |
metaldetectorsource
Section titled “metaldetectorsource”| Variable | Default | Saved | What it does |
|---|---|---|---|
metaldetectorsource.attemptspersubsourcespawn | 5 | ||
metaldetectorsource.mindistancebetweensubsources | 1.5 | ||
metaldetectorsource.population | 1200 | Population active on the server, per square km | |
metaldetectorsource.timeoutduration | 7200 |
motorrowboat
Section titled “motorrowboat”| Variable | Default | Saved | What it does |
|---|---|---|---|
motorrowboat.decaystartdelayminutes | 45 | How long until decay begins after the boat was last used | |
motorrowboat.deepwaterdecayminutes | 120 | How long before a boat loses all its health while in deep water | |
motorrowboat.outsidedecayminutes | 180 | How long before a boat loses all its health while outside. If it’s in deep water, deepwaterdecayminutes is used | |
motorrowboat.population | 1 | Population active on the server |
physics
Section titled “physics”| Variable | Default | Saved | What it does |
|---|---|---|---|
physics.allowhorsetempragdoll | True | When enabled, horses can be temporarily ragdolled by large physics impacts; disabling keeps horses upright during collisions | |
physics.allowplayertempragdoll | True | When enabled, players can be temporarily ragdolled by large physics impacts (e.g. explosions) before recovering; disabling keeps players standing | |
physics.autosynctransforms | True | When enabled, Unity Physics auto-syncs transform changes to physics each frame; disable to manually control when transforms sync | |
physics.batchsynctransforms | True | When enabled, physics transform syncs are batched per frame for efficiency; disable to force immediate per-object sync | |
physics.bouncethreshold | 2 | Minimum relative velocity at which a physics collision generates a bounce response; lower values cause more objects to bounce on light impacts | |
physics.droppedmode | 2 | The collision detection mode that dropped items and corpses should use | |
physics.gravity | 1 | Gravity multiplier | |
physics.groundwatchdebug | False | When enabled, logs ground-watch trigger events to the console, showing when players are detected as off the ground or falling through the world | |
physics.groundwatchdelay | 0.1 | Seconds between ground-watch checks on a player; lower values detect world-fall issues faster but increase CPU overhead | |
physics.groundwatchfails | 1 | Number of consecutive ground-watch failures allowed before corrective action is taken on a player who appears to be falling through geometry | |
physics.sendeffects | True | Send effects to clients when physics objects collide | |
physics.serverragdollmode | 3 | The collision detection mode that server-side ragdolls should use | |
physics.serversideragdolls | False | Yes | Do ragdoll physics calculations on the server, or use the old client-side system |
physics.sleepthreshold | 0.01 | Energy threshold below which a rigid body is put to sleep by the physics engine; lower values keep more objects awake, higher values reduce CPU usage | |
physics.solveriterationcount | 6 | The default solver iteration count permitted for any rigid bodies (default 7). Must be positive | |
physics.towingmaxlinearaccelfromjoint | 40 | Maximum linear acceleration (m/s^2) that a vehicle towing joint can apply before the joint breaks; prevents unrealistic joint forces during towing | |
physics.treecollision | True | Yes | Do players and vehicles collide with trees? |
physicstumblingentity
Section titled “physicstumblingentity”| Variable | Default | Saved | What it does |
|---|---|---|---|
physicstumblingentity.angular_drag_override | -1 | Yes | Override for rigidbody angular drag. Set to -1 to disable. |
physicstumblingentity.drag_override | -1 | Yes | Override for rigidbody drag. Set to -1 to disable. |
physicstumblingentity.max_tumbling_force | 1000 | Yes | Maximum force applied on collision to cause tumbling |
physicstumblingentity.min_tumbling_force | 600 | Yes | Minimum force applied on collision to cause tumbling |
physicstumblingentity.player_impulse_multiplier | 10 | Yes | Multiplier for impulse applied to players when ragdolled by this entity |
physicstumblingentity.tumbling_force_cone_angle | 30 | Yes | Cone angle in degrees for randomizing tumbling force direction |
physicstumblingentity.velocity_threshold_for_tumbling_force | 1.5 | Yes | Minimum velocity required for an object to get tumbling force applied on collision |
playerboat
Section titled “playerboat”| Variable | Default | Saved | What it does |
|---|---|---|---|
playerboat.aboardplayercheckinterval | 2 | Interval in seconds between checks to determine whether any players are still aboard the boat | |
playerboat.anchoreddriftdelayseconds | 21600 | Time in seconds after a boat is anchored before it becomes eligible for shore drift; default 21600s (6 hours) | |
playerboat.corpseseconds | 1800 | ||
playerboat.debugvis | False | When enabled, draws debug visualisations for player boat state including drift target, shore direction, and power zones | |
playerboat.decayminutes | 720 | How long before a boat loses all its health while outside | |
playerboat.decaystartdelayminutes | 1440 | How long until decay begins after the boat was last used | |
playerboat.deepseatransitionpowerdowngraceduration | 10 | Duration in seconds after entering the deep sea zone that a player boat has before its engine is powered down | |
playerboat.deployandeditanywhere | False | Allow Deploy & Edit anywhere in the ocean, bypassing location checks. | |
playerboat.destructiblewrecksenabled | True | ||
playerboat.dragbyangle_exponent | 0.4 | ||
playerboat.dragbyangle_maxcontrib | 50 | ||
playerboat.dragbyangle_maxdrag | 2.2 | ||
playerboat.dragbyangle_mincontrib | 5 | ||
playerboat.dragbyangle_mindrag | 0.65 | ||
playerboat.editenabled | True | ||
playerboat.enginepositioninfluences | 0.05 | 0 - 1 | |
playerboat.finisheditingenabled | True | ||
playerboat.hammerrepairenabled | True | ||
playerboat.maxblockcount | 180 | ||
playerboat.maxdeployablecount | 120 | ||
playerboat.orphansendimmediate | True | When enabled, deployables on boats send immediate network updates when orphaned during edit mode to prevent looping sounds from being killed | |
playerboat.placementupthreshold | 30 | Maximum angle in degrees from vertical at which building blocks can be placed on a player boat; default 30 degrees | |
playerboat.powerdownonnoplayers | True | When enabled, player boat engines are powered down when no players are aboard; prevents runaway unmanned boats | |
playerboat.sailblockedupdateinterval | 5 | Interval in seconds between wind blocked checks on a lowered sail, jittered by 10% | |
playerboat.sailpositioninfluence | 0.1 | 0 - 1 | |
playerboat.usedestructiblewreckstability | True | ||
playerboat.velocitymax | 15 |
pooltable
Section titled “pooltable”| Variable | Default | Saved | What it does |
|---|---|---|---|
pooltable.debug_pool | False | ||
pooltable.idle_reset_seconds | 180 | Anyone can reset a pool game nobody has interacted with for this many seconds | |
pooltable.physics_update_rate | 64 | ||
pooltable.show_tooltips | False | Yes | Show pool game tooltip notifications |
pooltable.watch_after_shot_seconds | 2 | Seconds the shooter stays seated watching their shot before being dismounted |
powergrid
Section titled “powergrid”| Variable | Default | Saved | What it does |
|---|---|---|---|
powergrid.enabled | True | ||
powergrid.fusedecayhighpop | 100 | Yes | Connected player count at or above which heavy fuses in the power plant decay at their normal rate. See fuseDecayLowPop. |
powergrid.fusedecaylowpop | 10 | Yes | Connected player count at or below which heavy fuses in the power plant decay at fuseDecayLowPopScale times the normal rate. Decay rate scale rises linearly as pop increases to fuseDecayHighPop where scale returns to 1x. |
powergrid.fusedecaylowpopscale | 0.25 | Yes | Multiplier on the decay rate of heavy fuses in the power plant while the connected player count is at or below fuseDecayLowPop. At 1 the player count has no effect on decay. |
powergrid.fusefulldecaycount | 3 | Yes | How many of the worst condition heavy fuses in the power plant decay at the full rate (burning out after fuseLifespanSeconds). Every other inserted fuse decays slowly instead. If 0 no fuse ever decays at the full rate. |
powergrid.fuselifespanseconds | 9600 | Yes | How long a heavy fuse plugged into the power plant lasts while it is decaying at the full rate (how long the worst fuses in the power plant survive for). If <= 0 then fuses last forever. |
powergrid.fuseslowdecayfractionmax | 0.12 | Yes | Maximum fraction (0-1) of the full decay rate applied to heavy fuses that aren’t one of the worst fuseFullDecayCount. See fuseSlowDecayFractionMin. |
powergrid.fuseslowdecayfractionmin | 0.08 | Yes | Minimum fraction (0-1) of the full decay rate applied to heavy fuses that aren’t one of the worst fuseFullDecayCount. Each fuse rolls its own fraction between fuseSlowDecayFractionMin and fuseSlowDecayFractionMax and keeps it for its lifetime. |
powergrid.greenrecyclerfullefficiencystage | -1 | ||
powergrid.marketplacechargecapacity | 100 | Yes | Charge capacity of a drone marketplace’s power buffer. A marketplace charges this up from the power plant and bleeds it back out whenever the plant stops carrying it. |
powergrid.marketplacechargeperfuse | 0.01 | Yes | Charge a drone marketplace gains every second for each heavy fuse inserted at the power plant, once there are at least marketplaceMinimumFusesToCharge of them. |
powergrid.marketplacedrainrate | 0.05 | Yes | Charge a drone marketplace loses every second while there are no heavy fuses inserted at the power plant. A single fuse is enough to stop the bleed. |
powergrid.marketplaceminimumfusestocharge | 4 | Yes | Heavy fuses that have to be inserted at the power plant before a drone marketplace starts charging. Below this it holds whatever charge it has without building any more. |
powergrid.marketplacerequiredchargefraction | 0.5 | Yes | Fraction (0-1) of its capacity a drone marketplace needs charged to accept orders. Sets both how long a cold marketplace takes to come online and how long a full one keeps running after the power plant drops out. |
powergrid.powerlinebasepoweroutput | 5 | Yes | Starting power output of powerline poles when 1 heavy fuse is inserted at the power plant. |
powergrid.powerlinemaxpoweroutput | 50 | Yes | Power output of powerline poles when all possible heavy fuses are inserted at the power plant. |
powergrid.simulatepowerplantfuses | 0 | ||
powergrid.stagechangeworkqueuebudget | 0.1 | Yes | Max time per frame (ms) to spend notifying powergrid entities of a stage change. |
powergrid.stagechangeworkqueuedelaybetweenjobs | 0 | Yes | Time to wait (s) between each individual entity getting notified of a powergrid stage change. Higher values will delay the time it takes for all entities to receive notification of a stage change. Entities can skip this wait with stageChangeWorkQueueGroupJobsDistance |
powergrid.stagechangeworkqueuegroupjobsdistance | 20 | Yes | If a powergrid entity is within this range of the first powergrid entity to receive a stage change update this frame, then that entity will also receive an update (skipping stageChangeWorkQueueTimeBetweenJobs) |
rentableshop
Section titled “rentableshop”| Variable | Default | Saved | What it does |
|---|---|---|---|
rentableshop.additionalchecktimehoursdebug | 0 | When checking the time to see if items need to be deleted, add this many hours to what it thinks the current time is | |
rentableshop.initialscrapfee | 100 | ||
rentableshop.maxstoreditemsdurationminutes | 1440 | Yes | How long stores should store items (after a shop is closed) for before they are destroyed |
rentableshop.protectionfromtakeoverhours | 6 | ||
rentableshop.scrapperhourrent | 10 |
ridablehorse
Section titled “ridablehorse”| Variable | Default | Saved | What it does |
|---|---|---|---|
ridablehorse.autoavoidance | True | Yes | When enabled, horses use automatic avoidance steering to navigate around obstacles; saved between sessions; admin configurable |
ridablehorse.debug | False | Yes | When enabled, draws debug visualisations for this system (seismic sensor range sphere, escape capture state, etc.); editor/admin-only |
ridablehorse.decayminutes | 180 | How long before a horse dies unattended | |
ridablehorse.dungtimescale | 1 | ||
ridablehorse.groundangleupdaterate | 0.05 | Yes | Interval in seconds between ground angle recalculation updates for horse body tilting; default 0.05s |
ridablehorse.population | 2 | Population active on the server, per square km | |
ridablehorse.throttledgroundangleupdate | True | Yes | When enabled, ground angle updates for horse body tilt are throttled to groundAngleUpdateRate seconds; improves performance |
| Variable | Default | Saved | What it does |
|---|---|---|---|
room.draw_live | False | Continuously draw the room partition around every player, refreshing as the base changes. Needs room.occlusion on (1 = shadow mode draws without hiding anything). Editor/dev tool - it redraws for everyone connected, so do not leave it on. | |
room.draw_live_normals | True | Draw the normal arrows and face outlines of the room.draw_live overlay (off = room-coloured outlines only, much less traffic) | |
room.draw_live_range | 30 | Radius of the room.draw_live overlay, in metres | |
room.draw_networkgroups_live | False | Continuously draw room contents, boundary groups and portal subscription state around every player. Needs room.occlusion on. Editor/dev tool - do not leave it on. | |
room.occlusion | 0 | Server-side interior occlusion: 0 = off, 1 = shadow mode (compute + log, hide nothing), 2 = enforce | |
room.occlusion_admin_bypass | True | Admins and developers bypass interior occlusion and see everything | |
room.occlusion_deployables | 1 | What interior occlusion hides inside a room: 0 = nothing (building blocks only), 1 = static entities (boxes, workbenches, beds), 2 = also IO entities (wires and pipes can be dragged to an entity that is not on your client) | |
room.occlusion_door_immediate | False | Kill switch for the whole synchronous pre-open pass: repartition and deliver the rooms behind a door the moment it opens, instead of leaving it to the normal budgeted queue. Only players within room.occlusion_door_immediate_range are flushed; further ones enqueue as usual. Off skips the repartition entirely, not just the flush. | |
room.occlusion_door_immediate_range | 30 | How close a player must be to a door for its rooms to be sent immediately when it opens, in metres. 0 = no limit, flush every viewer of the door. | |
room.occlusion_linger | 5 | How long a room must have been out of sight before it is dropped from a player’s client, in seconds. Stops a door being opened and shut, or a walk past a doorway, from destroying and re-sending a whole room. 0 = drop immediately. | |
room.occlusion_nearby_range | 32 | Rooms within this many metres of a player are always sent, whether or not they can see into them. Leaving the radius starts the room.occlusion_linger countdown rather than dropping it at once. 0 = only ever send what is actually visible. | |
room.occlusion_range | 250 | How far from a player interior occlusion looks for rooms to hide things in, in metres. Must comfortably exceed network range; rooms beyond it fail open. |
satellite
Section titled “satellite”| Variable | Default | Saved | What it does |
|---|---|---|---|
satellite.control_window | 180 | Seconds of thruster control window | |
satellite.cooldown_hours_max | 18 | Maximum cooldown between satellite events, in game hours | |
satellite.cooldown_hours_min | 18 | Minimum cooldown between satellite events, in game hours (not real minutes), converted to real time via the map’s day length, same as the airdrop event scheduler. | |
satellite.crashing_fx_at_distance | True | Run the crashing FX pass (FX Pass 3) through the whole phase-2 descent, including the distance-projected stretch, instead of waiting until the satellite enters real draw distance. The projected-mode fixup still applies, its particles simulate in local space and scale with the model; its trails stay gated until real rendering. | |
satellite.crate_fire_duration | 300 | Seconds the crash loot crates burn and stay unlootable after impact. All crates unlock together when this expires. | |
satellite.debug | False | Log crash-target search diagnostics (samples, blockers, reasons) | |
satellite.default_crash_radius | 300 | Starting impact radius before thruster adjustments, in meters | |
satellite.descent_angle | 45 | Angle (degrees from vertical) the satellite descends at. Higher = more horizontal streak across the sky. Clamped to 45 so it always reaches the ground within 45 degrees of straight down. Only used when flyover_altitude is 0, the flyover path has its own geometry. | |
satellite.descent_seconds | 600 | Descent duration in seconds (0 = use day length fraction; nonzero values are clamped to a minimum of final_descent_seconds so the phase-2 window always fits inside the descent) | |
satellite.final_descent_seconds | 300 | Seconds before the scheduled crash that the satellite begins its phase-2 physics descent. Phase 1 slides in to the phase-2 start point up until then, then the satellite drops at a speed timed to hit the ground exactly on schedule. The start point is placed at the satellite’s finalDescentSpeed times this window, so lengthening it starts the descent higher rather than slowing the fall. | |
satellite.final_descent_speed | 0 | Speed (m/s) of the phase-2 physics descent (0 = use the satellite prefab’s finalDescentSpeed). Together with final_descent_seconds this sets where phase 2 starts, speed times seconds back up the descent line, so e.g. 180s at 80 m/s starts the drop 14.4km out. | |
satellite.flyover_altitude | 2500 | Altitude (m above the crash target) of the phase-2 flyover cruise. The satellite enters near-horizontally at this height, streaks across the sky, then bends into a dive onto the target from flyover_dive_distance out. 0 = disable the flyover and use the legacy straight-line descent at descent_angle. | |
satellite.flyover_dive_distance | 1500 | Horizontal distance (m) from the crash target at which the flyover bends into its terminal dive. Smaller = a longer level cruise with a steeper final plunge. | |
satellite.free_fuel | False | If true, firing satellite thrusters does not consume fuel | |
satellite.free_power | False | If true, powering up the satellite computer does not require any items | |
satellite.fuel_large_max | 16 | Maximum fuel rolled for large satellites (3000-5000kg) | |
satellite.fuel_large_min | 10 | Minimum fuel rolled for large satellites (3000-5000kg) | |
satellite.fuel_max | 36 | Hard maximum on generated fuel, applied after the per-size roll regardless of size | |
satellite.fuel_medium_max | 26 | Maximum fuel rolled for medium satellites (1500-3000kg) | |
satellite.fuel_medium_min | 16 | Minimum fuel rolled for medium satellites (1500-3000kg) | |
satellite.fuel_min | 8 | Hard minimum on generated fuel, applied after the per-size roll regardless of size | |
satellite.fuel_small_max | 36 | Maximum fuel rolled for small satellites (500-1500kg) | |
satellite.fuel_small_min | 24 | Minimum fuel rolled for small satellites (500-1500kg) | |
satellite.initial_offset_attempts | 8 | How many times to re-roll the initial random map position, re-checking the full crash-site acceptance each time, until a valid starting target is found. Guarantees the control phase never starts on an unusable spot. | |
satellite.kill_radius | 10 | Radius (m) around the impact point cleared on crash, players killed, construction/deployables/vehicles destroyed, vegetation removed | |
satellite.lateral_distance | 200 | Lateral offset multiplier per thruster fire (meters) | |
satellite.min_crash_radius | 100 | Minimum crash radius in meters | |
satellite.nudge_distance_max | 150 | Maximum random aim drift (meters) applied when tightening the impact radius | |
satellite.nudge_distance_min | 100 | Minimum random aim drift (meters) applied when tightening the impact radius, at a fully random angle so it can’t be cancelled out exactly by the cardinal-direction lateral thrusters | |
satellite.obstruction_tc_reorder | True | Crash targeting: use the tool-cupboard grid to test likely-occupied samples last, so a clear spot is usually found with fewer physics checks. The physics check stays authoritative. | |
satellite.phase1_extra_distance | 30000 | Extra distance (m) further out, along the descent line, that phase 1 starts. The satellite slides steadily from there in to the orbit point over phase 1, then phase 2 continues along the same line. | |
satellite.phase1_grow_scale | 4 | Multiplier the orbiting satellite’s glow billboard grows to by the end of phase 1 (starts at 1x). Purely a visual telegraph; replicated because the grow runs client-side. | |
satellite.require_powerplant | True | If true, the satellite control computer can only be powered up while the power plant is active (powergrid stage 1+). Ignored when the powergrid system itself is disabled. | |
satellite.reuse_last_crash_spot | True | Crash targeting: before scanning, re-test the previously found crash spot. Small thruster nudges usually leave it valid, returning in a single check. | |
satellite.rotation_strength | 15 | Heading rotation per thruster fire (degrees) | |
satellite.shrink_expand_radius | 25 | Impact radius change per thruster fire (meters) | |
satellite.site_check_physical_geometry | True | Also raycast the crash-site footprint against real collision geometry, rejecting spots with rocks or scenery the heightmap can’t see | |
satellite.site_clearance_radius | 16 | Clearance (m) the crash-site search demands around a candidate, rejected if any player building, prevent-building volume or safezone is within this range. Kept separate from kill_radius so targeting standoff can exceed what the impact destroys; 16 matches the building-privilege radius, so a valid site is never inside a base’s TC influence. | |
satellite.site_footprint_radius | 15 | Radius (m) around a candidate crash spot sampled for ground shape, roughly the crash remains footprint. Used both to reject unsuitable spots and to fit the spawned remains to the ground. | |
satellite.site_max_slope | 25 | Max overall ground slope (degrees) across the crash footprint before a spot is rejected | |
satellite.site_max_unevenness | 2 | Max terrain height deviation (m) from the crash footprint’s best-fit plane before a spot is rejected as too uneven (cliff edges, crests, dips the remains meshes can’t hide) | |
satellite.sky_trail | True | Render the satellite’s descent as a map-wide sky ribbon tracing the real flight path, visible from any distance at any draw distance setting. Rendered client-side from the entity’s networked positions. | |
satellite.sky_trail_age_fade | True | Fade each point of the sky ribbon out over its lifetime (sky_trail_seconds), like a TrailRenderer, the streak continuously dissolves behind the satellite instead of holding full brightness until its points expire. | |
satellite.sky_trail_drain_seconds | 10 | Seconds the sky ribbon takes to drain away tail-first after the satellite crashes or is destroyed. The recorded point ages are compressed into this window, so the ribbon keeps shrinking exactly the way it does in flight, and the impact end of the streak is the last to go. | |
satellite.sky_trail_max_length | 0 | Maximum length of the sky ribbon in meters of flight path, the tail is trimmed to keep the ribbon at or under this. 0 = no length cap, letting the sky_trail_seconds lifetime fade own the tail instead of a hard cut. | |
satellite.sky_trail_noise | 1 | Meters of smooth random wobble baked into the sky ribbon as it’s laid down, so the streak reads as turbulent rather than a perfect straight line. Keep it under the dish’s size (~3m) or the trail visibly detaches from the model. 0 = perfectly straight. | |
satellite.sky_trail_seconds | 60 | Seconds of flight path the sky ribbon spans, its TrailRenderer-style lifetime: with sky_trail_age_fade on, points dissolve to nothing as they reach this age. Capped by the ribbon’s internal point budget at ~128s. | |
satellite.sky_trail_width_degrees | 0.075 | On-screen thickness of the sky ribbon’s head, in degrees of view angle, it holds the same apparent width whatever distance it’s projected at, tapering to a point at the tail. | |
satellite.targeting_budget_ms | 5 | Crash targeting: max milliseconds per frame spent scanning for a safe crash site. The scan resumes next frame when exceeded. | |
satellite.targeting_coverage_factor | 3 | Crash targeting: candidate samples tested per clearance-footprint, i.e. per (targetingRadius/clearanceRadius)^2. The sample count scales with the targeting area, so a small circle runs far fewer checks than a large one. ~1.2 is bare geometric coverage (samples spaced ~one clearance apart); the default adds margin to catch tight gaps. Pushing it much higher mostly adds correlated, redundant checks. | |
satellite.targeting_min_samples | 8 | Crash targeting: minimum candidate samples per search, regardless of how small the targeting circle is. Floors the area-scaled sample count so a small but cluttered area still gets a fair number of attempts. | |
satellite.thruster_extra_steps | 2 | When a thruster move finds no valid crash site, how many extra steps to take in the same direction before giving up. Fuel cost is linear in the number of steps taken (a 3-step move costs 3 fuel), and a further step isn’t attempted if the player can’t afford it. | |
satellite.thruster_module_count | 3 | Thruster modules salvaged from fully harvesting the crash remains | |
satellite.thruster_module_min_condition | 0.2 | Minimum condition fraction of salvaged thruster modules, regardless of how much fuel the satellite burned before lock-in | |
satellite.trail_alpha_scale | 1 | Multiplier on the alpha of the satellite trails’ authored colour gradients, saturating at full opacity, the authored fades drop to near-transparent within the first quarter of the trail, so values above 1 keep progressively more of its length visible. Applied alongside trail_time_scale as the trails switch on. | |
satellite.trail_time_scale | 1 | Multiplier on the authored lifetime of the satellite’s trail renderers, a trail spans this many times the authored seconds of flight path, so it directly scales the visible streak length. Applied as the trails switch on (they sit out the projected far-distance stretch and only run once the satellite is drawn at its real position), so changes take effect at the next handover, not mid-trail. Replicated because trails render client-side. | |
satellite.wreck_fire_duration | 480 | Seconds the main wreck stays too hot to harvest after impact |
traincar
Section titled “traincar”| Variable | Default | Saved | What it does |
|---|---|---|---|
traincar.decayminutes | 30 | How long before a train car despawns | |
traincar.killofftracktrains | True | Should train cars that are not spawned near train tracks be killed instantly (default = true) | |
traincar.population | 2.3 | Population active on the server | |
traincar.trainturretinaccuratepervelocity | 0.1 | Chance to miss per m/s of velocity for turrets shooting players on moving trains | |
traincar.wagons_per_engine | 2 | Ratio of wagons to train engines that spawn |
travellingvendor
Section titled “travellingvendor”| Variable | Default | Saved | What it does |
|---|---|---|---|
travellingvendor.alive_time_seconds | 1800 | Maximum lifetime in seconds before the Travelling Vendor despawns; default 1800s (30 minutes) | |
travellingvendor.attempt_pullovers | True | When enabled, the Travelling Vendor will attempt to stop for players and perform pullover interactions along its route | |
travellingvendor.max_speed | 5 | Yes | |
travellingvendor.should_destroy_buildings | False | When enabled, the Travelling Vendor will destroy player-placed buildings that block its ring road path | |
travellingvendor.should_spawn | True | When enabled, the Travelling Vendor NPC is eligible to spawn on the server ring road; disable to prevent vendor spawning |
| Variable | Default | Saved | What it does |
|---|---|---|---|
tree.global_broadcast | False | When enabled, tree harvest events are broadcast to all connected clients, not just nearby players; useful for testing tree sync across the network | |
tree.hit_forgiveness | 0.12 | ||
tree.hit_forgiveness_max_trunk | 0.15 | ||
tree.simplified_collider | False | When enabled, trees use a simplified capsule collider instead of the full mesh collider, reducing physics CPU cost at the expense of collision accuracy |
treemanager
Section titled “treemanager”| Variable | Default | Saved | What it does |
|---|---|---|---|
treemanager.cellsize | 100 | Define cell size(in m) of a grid for trees - only has effect on world load and must be > 1. This affects how much data we send per tree cell(bigger the cell - more trees we have to send). The smaller the cell, the more cells we have to process and the more memory we need per player to track what’s left to send(gridSize ^ 2 / 8 bytes). We readjust CellSize to ensure gridSize never exceeds 512. | |
treemanager.enabletreestreaming | True | When enabled, tree data is streamed to players based on proximity rather than sending all trees at connect; reduces initial bandwidth | |
treemanager.playerbudgetms | 0.01 | Per-frame CPU budget in milliseconds allocated to sending tree streaming data per player | |
treemanager.updatebudgetms | 1 | Total per-frame CPU budget in milliseconds for the tree streaming update system | |
treemanager.uselazyserialization | True | Instead of reserializing grid cell on every tree add/removal(which can cost 0.25ms on 4.5k world), defer it to the streaming update. This reduces amount of times we need to serialize the tree list, but causes the player queue to take longer to process, as that’s where evaluation happens. |
vehicle
Section titled “vehicle”| Variable | Default | Saved | What it does |
|---|---|---|---|
vehicle.boat_corpse_seconds | 300 | ||
vehicle.carwrecks | True | Determines whether modular cars turn into wrecks when destroyed, or just immediately gib. Default: true | |
vehicle.cinematictrains | False | If true, trains always explode when destroyed, and hitting a barrier always destroys the train immediately. Default: false | |
vehicle.deepseaportal_boundary_force_start_distance | 10 | Distance in metres from a deep-sea portal boundary at which the repulsion force activates for vehicles | |
vehicle.disable_wheels_when_sleeping | True | When enabled, wheel colliders are disabled on vehicles that have gone to sleep in the physics engine, reducing CPU overhead for parked vehicles | |
vehicle.padrepairsrequired | True | Yes | Whether repairable vehicle pads (eg. the Air Wolf helipad) have to be rebuilt with a hammer before their vendor will sell. When disabled, pads spawn already rebuilt and players cannot repair them. |
vehicle.train_accel_force | 50000 | Acceleration force used by vehicle.train_speed (default 50000, same as train engine force) | |
vehicle.train_brake_force | 50000 | Braking force used by vehicle.train_stop (default 50000, same as train engine force) | |
vehicle.trainskeeprunning | False | Determines whether trains stop automatically when there’s no-one on them. Default: false | |
vehicle.vehiclesdroploot | True | Determines whether vehicles drop storage items when destroyed. Default: true | |
vehicle.world_boundary_force_offset | 25 | Additional offset applied to the world boundary force zone, extending the buffer zone inside the boundary before the force ramps up | |
vehicle.world_boundary_force_start_distance | 100 | Distance in metres from the world boundary at which a repulsion force starts pushing vehicles back inward; prevents vehicles from leaving the playable area |
weather
Section titled “weather”| Variable | Default | Saved | What it does |
|---|---|---|---|
weather.ambient_light_multiplier | -1 | ||
weather.arctic_fog_ambient_intensity_mult | -1 | ||
weather.arctic_fog_light_boost_mult | -1 | ||
weather.arctic_fog_ramp_end | -1 | ||
weather.arctic_fog_ramp_start | -1 | ||
weather.arid_fog_ambient_intensity_mult | -1 | ||
weather.arid_fog_light_boost_mult | -1 | ||
weather.arid_fog_ramp_end | -1 | ||
weather.arid_fog_ramp_start | -1 | ||
weather.atmosphere_brightness | -1 | Overall brightness of the sky (-1 = auto). | |
weather.atmosphere_contrast | -1 | Overall contrast of the sky (-1 = auto). | |
weather.atmosphere_directionality | -1 | Size of the glow around the sun (-1 = auto). | |
weather.atmosphere_fog_height_falloff | -1 | ||
weather.atmosphere_fog_ramp_end_distance | -1 | ||
weather.atmosphere_fog_ramp_start_distance | -1 | ||
weather.atmosphere_mie | -1 | Mie scattering intensity, affects sky haze and sun halo (-1 = auto). | |
weather.atmosphere_rayleigh | -1 | Rayleigh scattering intensity, affects sky coloration (-1 = auto). | |
weather.biome_fog_ambient_saturation_mult | -1 | ||
weather.biome_fog_distance_curve | -1 | ||
weather.clear_chance | 1 | Probability of the Clear weather type. | |
weather.cloud_attenuation | -1 | How dark clouds get as they thicken (-1 = auto). | |
weather.cloud_brightness | -1 | Overall brightness of the clouds (-1 = auto). | |
weather.cloud_coloring | -1 | Blending between indirect sky light and direct sun light (-1 = auto). | |
weather.cloud_config | -1 | ||
weather.cloud_coverage | -1 | How much of the sky is covered by cloud layers (-1 = auto). | |
weather.cloud_opacity | -1 | Overall opacity of the cloud layers and billboards (-1 = auto). | |
weather.cloud_saturation | -1 | ||
weather.cloud_scattering | -1 | How much sunlight the clouds scatter (-1 = auto). | |
weather.cloud_sharpness | -1 | Overall sharpness of the cloud formations (-1 = auto). | |
weather.cloud_size | -1 | Overall size of the cloud layers (-1 = auto). | |
weather.directional_light_multiplier | -1 | ||
weather.dust_chance | 0 | Probability of the Dust weather type. | |
weather.fog | -1 | Fog density override for the dynamic system (-1 = auto). | |
weather.fog_chance | 0 | Probability of the Fog weather type. | |
weather.fog_multiplier | -1 | ||
weather.jungle_fog_ambient_intensity_mult | -1 | ||
weather.jungle_fog_light_boost_mult | -1 | ||
weather.jungle_fog_ramp_end | -1 | ||
weather.jungle_fog_ramp_start | -1 | ||
weather.moon_mesh_brightness_multiplier | -1 | ||
weather.ocean_scale | -1 | ||
weather.ocean_time | -1 | ||
weather.overcast_chance | 0 | Probability of the Overcast weather type. | |
weather.rain | -1 | Rainfall intensity override for the dynamic weather system (-1 = auto). | |
weather.rain_chance | 0 | Probability of the Rain weather type. | |
weather.rain_grace_active | False | Whether the post-wipe rain grace period is currently active (set automatically by the server) | |
weather.rain_grace_period | 18 | Yes | Number of in-game hours after a wipe during which rain and storms are suppressed (0 to disable) |
weather.rainbow | -1 | Whether a rainbow is visible (-1 = auto). | |
weather.reflection_multiplier | -1 | ||
weather.storm_chance | 0 | Probability of the Storm weather type. | |
weather.sun_mesh_brightness_multiplier | -1 | ||
weather.temperate_fog_ambient_intensity_mult | -1 | ||
weather.temperate_fog_light_boost_mult | -1 | ||
weather.temperate_fog_ramp_end | -1 | ||
weather.temperate_fog_ramp_start | -1 | ||
weather.thunder | -1 | Amount of thunder and lightning present (-1 = auto). | |
weather.tundra_fog_ambient_intensity_mult | -1 | ||
weather.tundra_fog_light_boost_mult | -1 | ||
weather.tundra_fog_ramp_end | -1 | ||
weather.tundra_fog_ramp_start | -1 | ||
weather.vclouds_moon_color_scale | -1 | ||
weather.vclouds_sun_color_scale | -1 | ||
weather.wetness_rain | 0.4 | Controls how wet surfaces become during rain; higher values cause characters and world objects to appear more soaked when it is raining | |
weather.wetness_snow | 0.2 | Controls how wet surfaces become during snow; affects surface wetness shaders independently from rain wetness | |
weather.wind | -1 | Wind intensity override; primarily visual, affects vegetation (-1 = auto). |
| Variable | Default | Saved | What it does |
|---|---|---|---|
world.cache | True | ||
world.configfile | Path to a world generation config file used by the procedural map generator; used when configString is empty | ||
world.configstring | World generation config string passed directly to the procedural map generator; overrides the config file if set | ||
world.topology_hierarchy_validate | False |
| Variable | Default | Saved | What it does |
|---|---|---|---|
xmas.enabled | False | Enables the Christmas event on the server, activating Christmas-themed loot spawns, trees, and holiday gift mechanics | |
xmas.giftsperplayer | 2 | Target number of gift entities to maintain per connected player during the xmas event; controls overall gift density on the server | |
xmas.spawnattempts | 5 | Number of spawn attempts made per player when trying to place Christmas gifts during refill; higher values increase fill reliability in cluttered areas | |
xmas.spawnrange | 40 | Radius in metres around each player within which Christmas gift entities are spawned during the xmas event refill |
More variables
Section titled “More variables”Groups with only a few entries, in one list.
| Variable | Default | Saved | What it does |
|---|---|---|---|
adventcalendar.overrideadventcalendarday | 0 | ||
adventcalendar.overrideadventcalendarmonth | 0 | ||
basefirework.maxactivefireworks | 25 | ||
basemetaldetector.detectlongrangetick | 1 | Interval in seconds between long-range detectability checks for buried objects; longer interval saves CPU for distant searches | |
basemetaldetector.detectminmovementdistance | 1 | Minimum distance in metres the player must move before a new long-range detection check is triggered | |
basemetaldetector.nearestdistancetick | 0.25 | Interval in seconds between nearest-detectable-object distance checks performed by the metal detector | |
basesiegeweapon.outsidedecayminutes | 600 | How many minutes before a siege weapon loses all its health while outside | |
basesubmarine.deepwaterdecayminutes | 120 | How long before a submarine loses all its health while in deep water | |
basesubmarine.outsidedecayminutes | 180 | How long before a submarine loses all its health while outside. If it’s in deep water, deepwaterdecayminutes is used | |
basesubmarine.oxygenminutes | 10 | How long a submarine can stay underwater until players start taking damage from low oxygen | |
batteringram.maxbuildingblockgrade | 2 | Maximum building block upgrade grade (0=twig,1=wood,2=stone,3=metal,4=top tier) that the battering ram can damage; default 2 (stone) | |
bigwheelgame.spinfrequencyseconds | 45 | ||
blackjackmachine.maxbet | 500 | Maximum initial bet per round | |
boatbuildingblock.alwayrotatable | True | ||
boatbuildingblock.alwaysdemolishable | True | ||
boatbuildingblock.forwarddamagetoparentboat | True | When enabled, damage dealt to a building block attached to a boat is forwarded up to the parent boat entity | |
boatbuildingblockdecay.decaydelayminutes | 30 | Multiplied by the base BuildingBlockDecay duration | |
boatbuildingblockdecay.decaydurationmultiplier | 1 | Multiplied by the base BuildingBlockDecay duration | |
bradley.enabled | True | When false, prevents the Bradley APC from spawning or respawning on the server | |
bradley.respawndelayminutes | 60 | Number of minutes after the Bradley APC is destroyed before it respawns at its patrol path; default is 60 minutes | |
bradley.respawndelayvariance | 1 | Random variance multiplier applied to respawnDelayMinutes; a value of 1.0 means the actual delay is randomly chosen between 0 and respawnDelayMinutes | |
buoyancy.use_batching | True | When enabled, buoyancy point physics updates are batched together each fixed update for better CPU efficiency | |
cannon.ignore_boat_mount_restrictions | False | Allows mounting cannons outside of boats for testing. | |
cctv.camera_disable_seconds | 300 | ||
cctv.inputbudgetms | 0.05 | Yes | |
egghuntevent.includebots | False | Will spawn eggs for bots, only for debug purposes - don’t enable it! | |
electricbattery.dischargebudgetms | 0.05 | Yes | |
excavatorsignalcomputer.automaticchargeneededforsupplies | 600 | Amount of charge required for the excavator to automatically trigger supply drop delivery without player activation | |
excavatorsignalcomputer.chargeneededforsupplies | 600 | Amount of charge (in seconds of operation) the excavator signal computer requires before it can manually call a supply drop | |
gamephysics.defaultmaxresultsperquery | 48 | How many results to collect per command - DONT set this too low or you’ll risk missing results | |
generateerosion.determinism_log | False | Yes | Log a CRC32 fingerprint of the eroded heightmap after generation, for determinism validation (e.g. across platforms or client vs server) |
guntrap.gun_trap_budget_ms | 0.5 | How many milliseconds to spend on target scanning per frame | |
hackablelockedcrate.decayseconds | 7200 | How many seconds until the crate is destroyed without any hack attempts | |
hackablelockedcrate.requiredhackseconds | 900 | How many seconds for the crate to unlock | |
halloweendungeon.lifetime | 600 | How long each active dungeon should last before dying | |
halloweendungeon.population | 0 | Population active on the server | |
junkpile.destroyifspawnonsleepingbag | True | ||
junkpile.destroyifspawnonsleepingbagdistance | 3 | ||
junkpile.destroyifspawnonsleepingbagtime | 4 | ||
marchingcubesmanager.collidermiplevel | 1 | [0-2] - mip level the sculpture collision mesh is marched at. Each level is ~4x fewer collision triangles and a correspondingly cheaper physics bake, at the cost of the collider drifting slightly from the visual surface | |
marchingcubesmanager.debuglog | False | ||
marchingcubesmanager.generatorpoolcount | 1 | [1-16] - each generator has constant memory overhead, but will allow more to process at once | |
metaldetectorflag.timeoutduration | 10800 | ||
minicopter.population | 0 | Population active on the server | |
mlrs.brokendownminutes | 20 | How many minutes before the MLRS recovers from use and can be used again | |
modularcar.outsidedecayminutes | 864 | How many minutes before a ModularCar loses all its health while outside | |
modularcar.population | 3 | Population active on the server | |
parachute.bypassrepack | False | Yes | |
parachute.landinganimations | False | Yes | |
patrolhelicopterai.flee_damage_percentage | 0.35 | Fraction of maximum health at which the patrol helicopter will break off its attack and flee; default 0.35 (35%) | |
patrolhelicopterai.monument_crash | True | When enabled, the patrol helicopter prefers to crash into a monument area when destroyed rather than crashing in open terrain | |
patrolhelicopterai.use_danger_zones | True | When enabled, the patrol helicopter avoids designated danger zones during its patrol route | |
playerhelicopter.insidedecayminutes | 2880 | How long before a player helicopter loses all its health while indoors | |
playerhelicopter.outsidedecayminutes | 480 | How long before a player helicopter loses all its health while outside | |
ptboatturret.ai_burst_length | 3 | Seconds an NPC gunner keeps firing in each burst | |
ptboatturret.ai_fire_rate | 0.125 | Minimum seconds between NPC gunner shots | |
ptboatturret.ai_time_between_bursts | 3 | Seconds an NPC gunner waits between bursts | |
radiation.materialtoradsratio | 0.0044 | Multiplier converting radiation material value to effective radiation damage rate; lower values reduce radiation intensity globally | |
radiation.water_inventory_damage | True | When enabled, radiation-contaminated water damages items in a player’s inventory over time when in a radiation zone | |
radiation.water_loot_damage | True | When enabled, radiation-contaminated water damages loot containers over time when exposed to sufficient radiation | |
rhib.rhibpopulation | 0 | Population active on the server | |
sail.maxthrustmultiplier | 1 | ||
samsite.autoreloaddelay | 45 | Delay before SAM sites that haven’t shot a target will auto-reload | |
samsite.staticrepairseconds | 1200 | how long until static sam sites auto repair | |
santasleigh.altitudeaboveterrain | 50 | ||
santasleigh.desiredaltitude | 60 | ||
scraptransporthelicopter.population | 0 | Population active on the server | |
slotmachine.forcepayoutindex | -1 | ||
smallengine.maxthrustmultiplier | 1 | ||
snowmobile.allowpassengeronly | False | Allow mounting as a passenger when there’s no driver | |
snowmobile.allterrain | False | If true, snowmobile goes fast on all terrain types | |
snowmobile.outsidedecayminutes | 1440 | How long before a snowmobile loses all its health while outside | |
solarpanel.sunupdatebudgetms | 0.05 | Yes | |
telephonemanager.maxcalllength | 120 | Maximum duration in seconds a telephone call can remain active before it is automatically terminated | |
telephonemanager.maxconcurrentcalls | 10 | Maximum number of simultaneous active telephone calls allowed on the server at any time | |
territory.hexsize | 50 | Hex cell size in metres (centre to corner). Changing it rebuilds the grid and wipes ownership | |
territory.offsetx | 0 | Shifts the whole territory grid east/west in metres. Painted cells move with it | |
territory.offsetz | 0 | Shifts the whole territory grid north/south in metres. Painted cells move with it | |
traincarunloadable.decayminutesafterunload | 10 | How long before an unloadable train car despawns afer being unloaded | |
traincouplingcontroller.max_couple_speed | 9 | Maximum difference in velocity for train cars to couple | |
triggerbase.useexcludelayers | False | When enabled, triggers use an exclude layer mask to filter out specific physics layers from trigger detection; toggling clears or sets all active triggers | |
triggerboatmagnet.boatmagnetsenabled | True | When enabled, boat building station magnets are active and will magnetically attract compatible boat building blocks into position | |
triggerparent.allowtriggersleeping | True | Allow triggers to sleep if both they and their contents are stationary (TickMode 1 only) | |
triggerparent.sleeping_trigger_mask_epsilon | 0.001 | world units a trigger can move in WS before it is woken | |
triggerparent.tickmode | 1 | 0 - old InvokeHandler, 1 - Jobs | |
triggerparentdelayedexit.disable_delayed_exit | False | Makes TriggerParentDelayedExit act as a TriggerParent again | |
tugboat.tugcorpseseconds | 7200 | ||
tugboat.tugdecayminutes | 2160 | How long before a tugboat loses all its health while outside | |
tugboat.tugdecaystartdelayminutes | 1440 | How long until decay begins after the tugboat was last used | |
tutorialisland.enforcetrespasschecks | True | Yes | |
tutorialisland.overridetutoriallocation | (0.00, 0.00, 0.00) | Will place the tutorial as close as possible to this pos, only for debugging | |
tutorialisland.spawntutorialislandfornewplayer | True | Yes | |
vendingmachine.max_history | 10000 | ||
vendingmachine.max_processed | 10000 | ||
vendingmachine.max_returned | 100 | ||
vinemountable.allowchaining | True | ||
watercatcher.forceenableconditionalspawning | False | Debug flag to force enable conditional spawning for all water catchers, regardless of their individual settings. | |
watercatcher.oilproductionstartdelay | 900 | Yes | How long in seconds an oil pump runs after its oil switch is activated before it starts producing crude. |
watercatcher.watercatcherbudgetms | 0.1 | Yes | |
watertreatmentwatercatcher.evaporationperminute | 200 | Yes | |
watertreatmentwatertank.maxflowrateperminute | 1020 | Yes | |
watertreatmentwatertank.maximumpressure | 360 | Yes | |
watertreatmentwatertank.pressuredecayperminute | 1 | Yes | |
waypointrace.racetimeout | 900 | Yes | How long a race can go until it times out (in seconds) |
xmasdungeon.playerdetectrange | 30 | How far we detect players from our inside/outside | |
xmasdungeon.xmaslifetime | 1200 | How long each active dungeon should last before dying | |
xmasdungeon.xmaspopulation | 0 | Population active on the server |
