Skip to content

Configuring your Windrose server

Manage identity, passwords, and invite codes across your Windrose configuration files, and learn the formatting rules that prevent errors.

Updated September 28, 2026
Windrose

This guide covers ServerDescription.json, the main config file that controls how players find and connect to your Windrose server: server name, invite code, password, max players, and the choice between invite code or direct IP connection.

For world-specific settings (difficulty, multipliers, gameplay rules), see World Settings.

The Two-File System

Windrose splits its settings across two JSON files:

  • ServerDescription.json lives in the server root at R5/ServerDescription.json and controls common server settings: name, invite code, password, max players, which world to load.
  • WorldDescription.json lives inside each world's save folder and controls world-specific settings.

You can have multiple worlds, each with its own WorldDescription.json. ServerDescription.json selects which one is active. See Managing Worlds for that workflow.

Critical Editing Rule

Always stop the server before editing either file

Windrose rewrites these files on shutdown. If you edit while the server is running, your changes are overwritten the moment the server stops.

Procedure:

  1. Stop the server (Console > Stop, wait for "Offline").

  2. Edit the file in the File Manager on your hosted Windrose server.

  3. Save.

  4. Start the server.

A missing comma or stray quote will prevent startup, so save carefully and consider using the panel's JSON syntax check (right-click > Edit usually highlights syntax errors). If your server fails to start after a config change, that's almost always the cause.

ServerDescription.json Reference

Located at R5/ServerDescription.json. The most important fields are nested under ServerDescription_Persistent. A trimmed example:

{
  "ServerDescription_Persistent": {
    "ServerName": "My GSK Windrose Server",
    "InviteCode": "PIRATES123",
    "IsPasswordProtected": false,
    "Password": "",
    "MaxPlayerCount": 4,
    "WorldIslandId": "0123456789ABCDEF",
    "UserSelectedRegion": "",
    "UseDirectConnection": false,
    "DirectConnectionServerPort": 7777,
    "DirectConnectionProxyAddress": "0.0.0.0",
    "PersistentServerId": "DO_NOT_EDIT_THIS_VALUE"
  }
}
R5/ServerDescription.json
Field Notes
ServerName Display name shown to connecting players
InviteCode 6 or more characters, allowed: 0-9, a-z, A-Z (case-sensitive). If left blank, one is auto-generated on first boot
IsPasswordProtected True to require a password in addition to the invite code
Password The password itself when IsPasswordProtected is true
MaxPlayerCount Windrose officially supports up to 8 players. Devs recommend 4 for best performance
WorldIslandId Must match the IslandId in the active world's WorldDescription.json
UserSelectedRegion SEA, CIS or EU (EU covers EU and NA). Leave blank to let the server pick the lowest-latency region
UseDirectConnection true makes the server open sockets for direct IP joins; false uses the ICE protocol for P2P
DirectConnectionServerPort Port for direct connection. Must be open for both TCP and UDP when direct connection is on
DirectConnectionServerAddress Reserved by the developers for future use and currently unused
DirectConnectionProxyAddress Picks a specific network interface on the host. Defaults to 0.0.0.0
PersistentServerId Auto-generated unique ID. Never edit this. Changing it can disconnect your server from its world data

Most of this file is rewritten from the Startup tab on every boot

On a hosted Windrose server the panel owns ServerName, InviteCode, IsPasswordProtected, Password, MaxPlayerCount, P2pProxyAddress, UseDirectConnection, DirectConnectionServerAddress and DirectConnectionServerPort, and rewrites each from its Startup variable every time the server starts. Editing those lines in the file is undone on the next boot. WorldIslandId, UserSelectedRegion and DirectConnectionProxyAddress are not managed, so those you can edit here.

After editing an unmanaged field, save and restart.

Setting a Server Password

The invite code is its own access barrier, but for tighter control (paid Patreon-only servers, private friend groups), add a second password layer:

  1. Stop the server.

  2. Open the Startup tab and set Server Password to the password you want, then set Password Protected to 1. Both lines in ServerDescription.json are written from these on boot, so setting them here is the route that sticks.

  3. Save and start.

Players will be prompted for the password in-game after the invite code resolves. The password is not case-sensitive but does require the exact string match.

Changing the Invite Code

Two common reasons to rotate:

  • Someone leaked the code to people you do not want
  • You ran a temporary event and want to revert to your standard code

On our Windrose plans the invite code is not yours to choose, and it changes on every restart

InviteCode is one of the values the panel writes into ServerDescription.json on boot, and the Invite code variable is not editable in the Startup tab. It is therefore written empty, and the game's documented behaviour for an empty invite code is to generate a fresh random one on each server start. Editing the field in the file does nothing — the next boot overwrites it.

The practical consequences: rotating the code is automatic rather than something you do, and a restart invalidates the code your crew are holding. Read the current code off R5/ServerDescription.json (or the console banner at boot) after every restart, and share it again. If you want a fixed invite code on your server, open a ticket.

If you need a stable address that survives restarts, use direct connection instead — that runs off your allocated IP and port, which do not change.

The rules the game enforces on an invite code, for reference: at least 6 characters, only 0-9, a-z and A-Z, case-sensitive.

Direct Connection (IP and Port)

If your community is more comfortable with traditional server browsers and IP joins, enable direct connection:

  1. Stop the server.

  2. In the Startup tab, set Use Direct Connection to 1. The panel writes UseDirectConnection into the config from that variable, and fills DirectConnectionServerAddress and DirectConnectionServerPort from your allocation — so there is no port to choose by hand and no risk of advertising one you were never assigned.

  3. Save and start.

  4. Read the address and port off the Address at the top left of the panel, and give players that pair.

Invite code or direct connection, not both

You can use invite code OR direct connection, but not both simultaneously. Most users stick with the invite code since the Epic Online Services relay handles NAT traversal automatically without any player-side port forwarding.

Changing Max Players

Windrose officially supports up to 8 players, and the developers recommend groups of up to 4 for the best performance. Their FAQ says 10 or more slots are "technically possible" on a server, but larger groups can hit performance limits, and some systems, such as boss encounters, are not balanced for them.

  1. Stop the server.

  2. Set Max players in the Startup tab to your target (8 is the official maximum). The panel writes MaxPlayerCount from this on boot, so editing the file directly is undone.

  3. Save and start.

Reducing the player count does not kick anyone already connected; it just prevents new connections beyond the new limit.

The PersistentServerId Field

You will see PersistentServerId near the bottom of ServerDescription_Persistent. Do not edit this. It is auto-generated on first boot and links your server to its world data and any registration on Kraken Express's backend services. Changing it can:

  • Disconnect your server from its existing world
  • Cause player profile or progression issues
  • Require support intervention to recover

If you somehow lose the value or it appears blank, restore the most recent backup that has it intact rather than guessing.

Common Issues

  • Server will not start after editing the config: Almost always a JSON syntax error. Open the file, scan for missing commas, extra commas after the last entry in an object, or mismatched braces. The panel Console will show the line where parsing failed.
  • Invite code changes do not take effect: A full restart is required, not just a reload. Stop, wait for "Offline," then start.
  • Players can connect with the old invite code even after rotating: They are using cached connection info from their game client. Have them close and reopen Windrose.
  • Direct connection works locally but not from outside: Confirm the port shown in the panel's Network tab matches DirectConnectionPort in the config.
  • "PersistentServerId looks wrong or empty": Do not edit it manually. Restore from a backup that has the correct value.

Made with 💜 by GameServerKings

Need a Windrose server?

Deploy an instantly-provisioned Windrose server on high-clock hardware — DDoS protected, no contracts, cancel anytime.

From $9.90 /month