Repository navigation
Host settings
Every setting a Release build reads: its default, what the host checks at start-up, and what it sets. A setting that fails its check stops the server before it listens, naming the setting, never its value (Host lifecycle).
A setting can also come from the environment, its name with __ for each :, such as Maps__TickMs.
Note
Generated from the settings classes at dev dd9b230 by Tools/NexusTomorrow.ProtocolReference. Don't edit it by hand: change the setting's documentation or its rule and regenerate.
Gateway explains these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
Gateway:Sts:BindAddress |
127.0.0.1 | An IP address | The address to bind |
Gateway:Sts:Port |
6600 | 1 to 65,535 | The TCP port |
Gateway:Login:BindAddress |
127.0.0.1 | An IP address | The address to bind |
Gateway:Login:Port |
23115 | 1 to 65,535 | The TCP port |
Gateway:World:BindAddress |
127.0.0.1 | An IP address | The address to bind |
Gateway:World:Port |
24000 | 1 to 65,535 | The TCP port |
Gateway:WorldPublicAddress |
127.0.0.1 | An IPv4 address | The IPv4 address the login server hands the client for the world listener |
Gateway:MaxClientFrameBytes |
65536 bytes | 64 to 1,048,576 | The largest frame a client may send, in bytes |
Gateway:ConnectionsPerAddress |
8 | 1 to 1,000 | Connections one address may hold at once on each listener |
Gateway:PreAuthTimeout |
30 s | Positive | How long a connection may stay open without completing its login |
Gateway:OutboundQueueCapacity |
4096 | 16 to 1,048,576 | How many messages one connection may have queued for its client; a client that stops reading fills the queue, and the connection is disconnected rather than the sender made to wait |
Gateway:DisconnectGrace |
5 s | 0 to 60 s | How long a disconnecting connection may keep trying to deliver what is queued before it is closed regardless, so a client that has stopped reading cannot hold the connection open; zero closes at once |
Gateway:LoginAttemptsPerMinute |
10 | 1 to 1,000 | Login attempts (STS login starts and login requests) one address may make per minute |
Gateway:UnknownAccountSecret |
none | Set: base64 of at least 32 bytes | The key from which unknown accounts get stable fake credentials; keep it out of the repository; a secret, never logged |
Gateway:DisabledOpcodes |
none | Client opcodes switched off: dropped and counted as if they had no table row |
Gateway:Sts:Port, Gateway:Login:Port and Gateway:World:Port must be three different ports.
Owners explains these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
Account:TokenLifetime |
60 s | Positive | How long a game token or a session key stays redeemable |
Owners explains these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
Realm:Id |
1 | 1 to 16,383 | The realm's id, which the client keeps as its current realm and a character's unit carries |
Realm:Name |
NexusTomorrow | Set | The realm's name, shown to the player |
Realm:Flags |
0 | The realm's flags; bit 4 keeps characters to one faction | |
Realm:PvpType |
0 | 0 to 1 | 0 PvE, 1 PvP |
Realm:NoteTextId |
0 | A note about the realm, as a text id; 0 for none | |
Realm:MaxCharactersPerAccount |
12 | 1 to 50 | How many live characters an account may hold |
Realm:StartLocations |
none | Where a new character stands, by faction; a faction with no entry starts in world 0 at the origin | |
Realm:StartLocations:<n>:FactionId |
0 | The faction this location serves | |
Realm:StartLocations:<n>:WorldId |
0 | The world id | |
Realm:StartLocations:<n>:ZoneId |
0 | The zone id | |
Realm:StartLocations:<n>:X |
0 | The x coordinate | |
Realm:StartLocations:<n>:Y |
0 | The y coordinate | |
Realm:StartLocations:<n>:Z |
0 | The z coordinate |
Map scheduler and Owners explain these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
Maps:PoolThreads |
the logical processors less three, at least 1 | At least 1 | How many pool threads run the maps that have no thread of their own; the default leaves three logical processors for the gateway, the realm and account owners and the garbage collector |
Maps:DedicatedThreads |
0 | Not negative | How many maps may run on a thread of their own; a dedicated placement past this many runs in the pool |
Maps:TickMs |
25 ms | One of 25, 50, 125 or 250 | A map's tick period in milliseconds, which divides 250 so an effect timed on a multiple of 250 ms lands exactly on a tick |
Maps:ReplicationEveryTicks |
5 | How many ticks make one replication interval: TickMs times this is the interval the client is told to send its movement at (WorldSettings.MovementInterval), within the client's 25 to 1,000 ms |
|
Maps:SaveInterval |
60 s | At least 1 s | How often a character that changed is saved in a map; each character's first save falls at random within one interval of its arrival |
Maps:NormalDrainBudget |
5 ms | Positive | How long a tick keeps handling normal-priority messages once it has handled NormalDrainFloor of them |
Maps:NormalDrainFloor |
32 | At least 1 | How many normal-priority messages a tick handles at least, however long that takes |
Maps:AdmitRadius |
128 | At least 1 | How near, in world units, another player must come before a player sees it: the map creates it for the viewer at its next replication flush |
Maps:DropRadius |
160 | At least 1 | How far, in world units, a seen player may go before the map destroys it for the viewer; beyond AdmitRadius, so a player near the edge is not created and destroyed over and over |
Maps:VisibleCap |
256 | At least 1 | The most other players one player sees at once; past it, the nearest are created first |
Maps:SwapsPerCheck |
32 | At least 1 | The most players created for one viewer at one replication flush, so a crowd fills in over a few flushes |
Maps:SayRange |
155 | At least 1 | How near, in world units, a player must stand to hear another's /say line, measured in three dimensions from the speaker; a server policy figure, not the client's |
Maps:TickMs times Maps:ReplicationEveryTicks must be from 25 to 1,000 ms.
Maps:AdmitRadius must not exceed Maps:DropRadius.
Persistence explains these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
Persistence:ConnectionString |
none | Set | The Npgsql connection string; a secret, never logged |
Persistence:SaveWorkers |
4 | At least 1 | How many queue workers apply work at once |
Persistence:FirstRetryDelay |
100 ms | Positive | The wait before the first retry of failed work; each retry doubles it |
Persistence:MaxRetryDelay |
30 s | Positive | The longest wait between retries |
Persistence:FirstIdBlockTimeout |
30 s | Positive | How long the host's start waits for the first character id block before it fails |
Persistence:FirstRetryDelay must not exceed Persistence:MaxRetryDelay.
Command layer explains these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
Cli:Enabled |
on | Whether the server reads admin commands from its console, which stays off whenever standard input is redirected |
Owners explains these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
Content:ClientDataPath |
none | The folder MapGenerator extracted the operator's own client data into, which holds tbl\; never in the repository |
Owners explains these.
| Setting | Default | Must be | Sets |
|---|---|---|---|
AccountDefaults:Entitlements |
the full game's set: 4, 10, 14 to 22, 61 and 62, one of each, and the store licenses 12, 3, 27, 23, 25, 26, 36, 71, 74, 75, 42 and 43 at their caps | Each entitlement once, by a nonzero id, with a count of at least 1 when one is given | The entitlements every account holds, sent with the world grant before character select; unset, the full game's set (FullGame). A list given here replaces that set whole |
AccountDefaults:Entitlements:<n>:Id |
0 | The entitlement, an Entitlement table id | |
AccountDefaults:Entitlements:<n>:Count |
none | How many of it the account holds; unset, the Entitlement row's maxCount, the most the client counts | |
AccountDefaults:PremiumTier |
1 | 0 to 31 | The premium tier every account holds, sent with the world grant (AccountPremiumTier) and on every player's unit; 1 is the top tier of the premium system the client runs, the full game |
AccountDefaults:CreationLevelLimit |
3 | At least 1 | The creation level limit sent with the world grant: of the creation options that need no entitlement, the client offers those starting at this level or below (CreationLevelLimit.Level), and the realm creates only those |
Start here
How the server works
The protocol
Working on it