Server configuration limits: Difference between revisions
Complete upcoming 0.1.9 documentation: weather, crafting UI, world removal, doors and ladders; preserve release status |
Document upcoming 0.1.9 Discord Rich Presence: server Lua functions, callback, opt-in and owner setup; not a release |
||
| Line 199: | Line 199: | ||
The world weather setting accepts the canonical names and aliases in [[Weather catalog]]. Weather transition remains 0..300000 milliseconds. Existing modes remain biome-dependent; explicit presets add snow, fog, dust and regional variations. See [[Weather]] for examples. This does not change current public-release configuration support. | The world weather setting accepts the canonical names and aliases in [[Weather catalog]]. Weather transition remains 0..300000 milliseconds. Existing modes remain biome-dependent; explicit presets add snow, fog, dust and regional variations. See [[Weather]] for examples. This does not change current public-release configuration support. | ||
<!-- weather019:end --> | <!-- weather019:end --> | ||
<!-- discord019:start --> | |||
== Optional Discord presence (from 0.1.9) == | |||
'''Available from 0.1.9 (upcoming; not yet publicly released). Not included in public 0.1.8. Use matching updated clients and server.''' | |||
[[Discord Presence configuration]] provides the complete server-only resource. Configure its public Application ID and presentation fields in config.lua, then append its name to your existing resources autostart list. No new [discord] INI section, bot token, Client Secret, Discord installation, Python or SDK is needed on either Windows or Linux dedicated servers. Players opt in separately in launcher Settings and rejoin. Keep existing gamemode/server settings; do not enable development QA commands publicly. | |||
<!-- discord019:end --> | |||
Revision as of 09:36, 20 October 2026
All numeric ranges below are extracted from the production configuration parser, not guessed from a running server. Defaults are the compiled defaults; an explicit setting in your existing configuration overrides them. Invalid out-of-range values fail configuration loading instead of being silently clamped. Restart with the new server executable/configuration to apply changes. Do not overwrite your passwords, keys or other custom settings with a sample configuration.
See Scripting limits for fixed API capacities and client limits. Server [lua] settings do not propagate to the client VM.
Complete numeric configuration table
| Setting | Compiled default | Minimum | Maximum | Unit |
|---|---|---|---|---|
server.port |
7777 | 1 | 65535 | TCP/UDP port |
server.maxPlayers |
500 | 1 | 5000 | count / integer |
server.tickrate |
30 | 1 | 240 | ticks/s |
server.syncDistance |
15000 | 500 | 200000 | cm (100 cm = 1 m) |
server.peerTimeoutMinimumMs |
20000 | 5000 | 60000 | ms |
server.peerTimeoutMaximumMs |
40000 | 5000 | 120000 | ms |
server.peerTimeoutLimit |
32 | 4 | 64 | count / integer |
http.port |
7780 | 1 | 65535 | TCP/UDP port |
http.workerThreads |
8 | 1 | 64 | count / integer |
http.maxQueuedRequests |
1024 | 8 | 16384 | count / integer |
http.requestsPerMinutePerIp |
1200 | 60 | 100000 | per minute |
http.maxTrackedAddresses |
8192 | 256 | 1000000 | count / integer |
http.readTimeoutMs |
5000 | 500 | 120000 | ms |
http.writeTimeoutMs |
30000 | 1000 | 600000 | ms |
nameplates.maxPairs |
250000 | 1 | 1000000 | count / integer |
nameplates.maxPairsPerResource |
250000 | 1 | 1000000 | count / integer |
nameplates.mutationsPerSecond |
4096 | 1 | 250000 | per second |
nameplates.mutationBurst |
8192 | 1 | 250000 | count / integer |
voice.port |
7778 | 1 | 65535 | TCP/UDP port |
voice.ticketTtlMs |
15000 | 1000 | 120000 | ms |
voice.idleTimeoutMs |
5000 | 2000 | 120000 | ms |
voice.heartbeatIntervalMs |
1000 | 250 | 10000 | ms |
voice.maxFramesPerSecond |
55 | 10 | 200 | per second |
voice.maxBytesPerSecond |
65536 | 8192 | 1048576 | bytes/s |
voice.maxPendingHandshakes |
128 | 1 | 4096 | count / integer |
voice.maxConnectionsPerIp |
32 | 1 | 1000 | count / integer |
voice.maxTrackedAddresses |
16384 | 256 | 1000000 | count / integer |
voice.whisperRange |
500 | 50 | 200000 | cm (100 cm = 1 m) |
voice.defaultRange |
1800 | 50 | 200000 | cm (100 cm = 1 m) |
voice.shoutRange |
3500 | 50 | 200000 | cm (100 cm = 1 m) |
voice.maxRange |
10000 | 50 | 200000 | cm (100 cm = 1 m) |
lua.memoryLimitMB |
1024 | 4 | 4096 | MiB |
lua.instructionLimit |
10000000 | 10000 | 1000000000 | count / integer |
lua.timeoutMs |
5000 | 10 | 60000 | ms |
lua.hookInstructionInterval |
10000 | 100 | 1000000 | count / integer |
magic.projectileTickrate |
30 | 10 | 120 | ticks/s |
magic.maxCastsPerSecond |
6 | 1 | 30 | per second |
magic.maxSnapshotAgeMs |
1000 | 100 | 10000 | ms |
magic.playerCapsuleRadius |
45 | 10 | 500 | cm (100 cm = 1 m) |
magic.playerCapsuleHalfHeight |
90 | 20 | 1000 | cm (100 cm = 1 m) |
ranged.projectileTickrate |
30 | 10 | 120 | ticks/s |
ranged.maxShotsPerSecond |
8 | 1 | 30 | per second |
ranged.maxSnapshotAgeMs |
1000 | 100 | 10000 | ms |
ranged.developmentArrowCount |
0 | 0 | 65535 | count / integer |
ranged.developmentBoltCount |
0 | 0 | 65535 | count / integer |
ranged.playerCapsuleRadius |
45 | 10 | 500 | cm (100 cm = 1 m) |
ranged.playerCapsuleHalfHeight |
90 | 20 | 1000 | cm (100 cm = 1 m) |
rcon.port |
7781 | 1 | 65535 | TCP/UDP port |
rcon.timestampWindowSeconds |
30 | 5 | 300 | s |
rcon.requestsPerMinute |
60 | 1 | 600 | per minute |
security.handshakeTimeoutMs |
5000 | 1000 | 30000 | ms |
security.maxConnectionsPerIp |
32 | 1 | 1000 | count / integer |
security.maxPendingHandshakes |
128 | 1 | 2048 | count / integer |
security.connectionAttemptsPerMinute |
120 | 1 | 100000 | per minute |
security.preAuthPacketsPerSecond |
12 | 1 | 1000 | per second |
security.authenticatedPacketsPerSecond |
240 | 30 | 10000 | per second |
security.authenticatedBytesPerSecond |
524288 | 65536 | 67108864 | bytes/s |
security.invalidPacketsPerMinute |
16 | 1 | 10000 | per minute |
security.temporaryBlockSeconds |
120 | 10 | 86400 | s |
security.maxTrackedAddresses |
16384 | 256 | 1000000 | count / integer |
security.maxPacketBytes |
65536 | 16384 | 1048576 | bytes |
security.maxWaitingDataPerPeerBytes |
524288 | 65536 | 16777216 | bytes |
world.day |
0 | 0 | 1000000 | count / integer |
world.hour |
8 | 0 | 23 | count / integer |
world.minute |
0 | 0 | 59 | count / integer |
world.minuteDurationMs |
1000 | 0 | 3600000 | ms |
world.weatherTransitionMs |
3000 | 0 | 300000 | ms |
world.syncIntervalMs |
5000 | 500 | 60000 | ms |
database.workerThreads |
8 | 1 | 64 | count / integer |
database.maxConnectionsPerResource |
16 | 1 | 128 | count / integer |
database.maxPendingQueriesPerResource |
1024 | 1 | 100000 | count / integer |
database.maxQueryBytes |
4194304 | 1024 | 67108864 | bytes |
database.maxResultRows |
50000 | 1 | 1000000 | count / integer |
database.maxResultBytes |
67108864 | 1024 | 536870912 | bytes |
database.connectTimeoutMs |
5000 | 100 | 120000 | ms |
database.readTimeoutMs |
15000 | 100 | 300000 | ms |
database.writeTimeoutMs |
15000 | 100 | 300000 | ms |
database.maxBlockingPollMs |
100 | 0 | 5000 | ms |
security.passwordWorkerThreads |
4 | 1 | 8 | count / integer |
security.passwordQueueCapacity |
1024 | 8 | 4096 | count / integer |
security.passwordPendingPerResource |
256 | 1 | 512 | count / integer |
security.passwordMemoryKiB |
65536 | 8192 | 1048576 | KiB |
security.passwordIterations |
3 | 1 | 10 | count / integer |
security.passwordParallelism |
1 | 1 | 4 | count / integer |
Additional validation and units
- Peer timeout maximum must be at least the minimum. Voice idle timeout must be at least twice its heartbeat interval.
- Voice ranges must satisfy whisper <= default <= shout <= max. These configuration values and
server.syncDistanceare centimetres, not the metre units used by camera, NPC route and 3D-text Lua functions. world.minuteDurationMs=0pauses time. Day 0..1000000, hour 0..23 and minute 0..59 are separate limits.- Enabled voice must use a different port from gameplay, resource HTTP and enabled RCON.
- At least one autostart resource and a nonempty navigation map filename are required. Navigation geometry settings are not exposed as numeric serverconf settings; see Scripting limits#Navigation.
- Listing/name text: server name at most 96 UTF-8 bytes and 48 codepoints; description at most 320 bytes and 160 codepoints. Game mode is an ASCII token up to 24 bytes, region 12, version 24; at most 8 tags of 16 bytes each. Join password is at most 128 bytes.
- Production master-list heartbeat is fixed at 20 seconds and authorization maximum staleness at 300 seconds. These are not operator-adjustable Lua limits. Device identity verification remains mandatory.
- Rate controls are shared traffic budgets, not one independent allowance per Lua event. Increasing Lua storage does not disable anti-abuse controls.
Source audit
The numeric table above records the configuration/parser audit for 0.1.3 dated 2026-09-12; it is not a new complete configuration audit for 0.1.9. Later scoped additions are documented separately below and in their feature guides.
Extended weather configuration (from 0.1.9)
Available from 0.1.9 (upcoming; not yet publicly released). Not included in public 0.1.8. Use matching updated clients and server.
The world weather setting accepts the canonical names and aliases in Weather catalog. Weather transition remains 0..300000 milliseconds. Existing modes remain biome-dependent; explicit presets add snow, fog, dust and regional variations. See Weather for examples. This does not change current public-release configuration support.
Optional Discord presence (from 0.1.9)
Available from 0.1.9 (upcoming; not yet publicly released). Not included in public 0.1.8. Use matching updated clients and server.
Discord Presence configuration provides the complete server-only resource. Configure its public Application ID and presentation fields in config.lua, then append its name to your existing resources autostart list. No new [discord] INI section, bot token, Client Secret, Discord installation, Python or SDK is needed on either Windows or Linux dedicated servers. Players opt in separately in launcher Settings and rejoin. Keep existing gamemode/server settings; do not enable development QA commands publicly.