Skip to main content
Windrose ServerDescription.json Config Guide - visual guide

Windrose ServerDescription.json Config Guide

What is actually inside R5/ServerDescription.json, which fields GameGrid owns, which you can safely change, and why the Settings tab is the better way.

File location

R5/ServerDescription.json holds the server-level half of a Windrose server’s configuration. On GameGrid it is reachable from the Files tab: open R5/, select ServerDescription.json and click "Open" to edit it in the browser.

It is not the whole configuration. Everything about the world itself — difficulty, multipliers, co-op scaling — lives in a second file, WorldDescription.json, inside that world’s own folder under R5/Saved/SaveProfiles/Default/RocksDB_v2/0.10.0/Worlds/<world id>/. The Settings tab writes both for you: ServerDescription.json, and in WorldDescription.json the World Difficulty Preset plus the individual world values in its Gameplay category. See the Windrose Server Settings Reference for what each one does and how far the individual values are confirmed.

Stop the server before editing either file. Windrose rewrites its configuration when it shuts down, so an edit made while it is running is usually discarded.

What the file actually contains

Three fields at the root and one object: Version, DeploymentId, ServerPort and ServerDescription_Persistent. Windrose takes no port argument on its command line — it is started with -log and nothing else — so ServerPort at the root is how the server learns which port to bind.

Version (integer): the config schema version. Written by the game.

DeploymentId (string): the build the server was last run on, for example "0.10.0.8.10-dd411cfd". Written by the game; this is where Windrose Plus reads the game version it displays.

ServerDescription_Persistent (object): everything else, listed below.

Fields inside ServerDescription_Persistent

ServerName (string): the server’s name as Windrose stores it. Editable from the Settings tab.

InviteCode (string): the code players use to find the server. 0-9, a-z and A-Z, at least 6 characters, case-sensitive. Each server is given a random 8-character code when it is built. Editable from the Settings tab. Ignored while UseDirectConnection is true.

Password (string) and IsPasswordProtected (boolean): the join password and the flag that tells the game to require it. Both editable from the Settings tab; set them together.

MaxPlayerCount (integer, default 8, 1 to 64): the player limit. Editable from the Settings tab.

WorldIslandId (string): which world the server loads. Editable from the Settings tab, where the panel offers the worlds it has detected in a dropdown.

UserSelectedRegion (string): "", "SEA", "CIS" or "EU" — the Connection Service region. Empty means the server chooses the lowest-latency one. Editable from the Settings tab.

UseDirectConnection (boolean): whether players join by address or by invite code. Editable from the Settings tab.

AutoLoadLatestBackupIfHasBroken (boolean, default true): whether the game tries to recover a broken save from its own backup on launch. Editable from the Settings tab.

PersistentServerId (string): a generated unique identifier for the server. Not shown in the panel; do not edit it.

P2pProxyAddress (string): the listening address for the game’s P2P sockets. Platform-managed and not shown in the panel.

DirectConnectionServerAddress, DirectConnectionServerPort and DirectConnectionProxyAddress: the address, port and bind address used for direct connections. Platform-managed and not shown in the panel — your port is allocated by the platform and is not yours to change.

CanLaunchMultipleServerInstances (boolean): the safeguard that lets several Windrose servers coexist on one host. Platform-managed and not shown in the panel.

Which fields can I edit by hand?

Anything the Settings tab shows, you should change from the Settings tab instead — it validates the value against the game’s own schema, writes it into the right file, and tells you whether a restart is needed. Every one of the fields above except the invite code and Auto Load Latest Backup needs a restart to take effect.

The six platform-managed fields — PersistentServerId, P2pProxyAddress, the three DirectConnection fields and CanLaunchMultipleServerInstances — are not shown in the panel on purpose. Changing them by hand is how a working server becomes unreachable. The two ports are the exception: the platform re-writes the root ServerPort and DirectConnectionServerPort to your allocated port on every start, so an edit to either is undone the next time the server comes up.

If you do edit the file directly, the Files tab editor is the safest way: it opens JSON files up to 1 MB, shows you the byte count, and warns you if you close it with unsaved changes.

JSON syntax

ServerDescription.json must be valid JSON. The three mistakes that break it: a missing comma between two fields, a trailing comma after the last field in an object (JSON does not allow one), and an unquoted string value. Numbers and booleans are written without quotes; every string needs double quotes.

If the file is not valid JSON the server will not start. The Console tab shows the parse error.

Recovering from a broken file

Stop the server. Do not rename or delete ServerDescription.json so that Windrose writes a new one. A new file gets a new server identity and a new world ID, and Windrose creates a new, empty world under R5/Saved and loads that instead of yours. Your own world folder stays on disk but is not loaded. The direct-connection port in the new file is -1 instead of your server's port, and your players may need new connection details.

The way to recover is to keep the file you have, or put the old one back:

Fix it in place. Open R5/ServerDescription.json in the Files tab editor, correct the syntax error (see JSON syntax above), save, and only then start the server. If Windrose starts while it cannot read the file, it replaces the file with a default one: new IDs, the player limit and port reset, and that start can fail as well.

Put back the previous copy. If you kept a copy of the file from before your change, open the broken file in the Files tab editor with the server stopped, replace its contents with the copy and save. Otherwise use a backup taken before the change on the Backups tab. A restore puts back everything in that backup, your worlds included, so anything you did in the game since is lost; GameGrid takes a safety copy of your current save first. To avoid losing what you did in the game since that backup, open a support ticket and name the backup: support can put the old values back into the file by hand.

If the file was already replaced, you will see settings you did not choose and a new empty world folder under R5/Saved/SaveProfiles/Default/RocksDB_v2/0.10.0/Worlds. Do not play on that world. Put your previous ServerDescription.json back as above, so that your old world loads again.

When the file is back, open the Settings tab and check that the server name, password, player limit, invite code and World Island ID are what you expect. Missing game files are a separate problem: if the server will not start for that reason, "Check & Repair" on the Admin tab puts back any game file your server should have, as described in Windrose Server Won't Start.