Dedicated Server Guide
This guide explains how to set up a dedicated server for Windrose.
The same guide is included within the in-game files of the Windrose Dedicated Server app available for free on Steam, in the file DedicatedServer.md. Both sets of instructions are valid and almost identical.
If you happen to have any questions, please visit our Windrose Support for troubleshooting.
Why run a dedicated server?
A dedicated server lets you have a world that’s always running. You and your friends can join anytime — no need for the host to be online. Great for co-op when schedules don’t match, like building ships alone then sailing together later.
Dedicated servers support all the world’s game settings (and a few extras), letting you fully customize your swashbuckling adventures. Win-win for tailoring co-op chaos to your crew!
Initial setup and hosting
There are two ways to get the Windrose Dedicated Server, depending on your platform of choice: Steam, EGS, or Stove.
When you download the game, go to the in-game files and open the R5\Builds folder. There, you will find the WindroseServer folder. That is the dedicated server. If you want to deploy it, copy the folder to any other location on your PC. It will not work inside the game folder; please read more about that in the FAQ. This is important. Once it has been copied anywhere on your PC, you can proceed with the instructions.
Alternatively, you can download the Windrose Dedicated Server application on Steam, which is available for free to everyone. Open the internal folder of this application and proceed with the instructions.
Both of these methods ensure that the build is up to date and free from harmful third-party modifications that could put your data or device at risk.
If you play through EGS/Stove
Copy the R5\Builds\WindowsServer folder from the in-game files and place it anywhere on your PC where you prefer. Then proceed with the instructions.
From here, pick how you want to set up your dedicated server:
Simple — run with defaults for a quick start.
Advanced — edit configs for full customization.
If you play through Steam
- Install from Steam
Navigate to the Tools section in your Steam Library. Click the dropdown filter above your game list and select “Tools.” Search for “Windrose Dedicated Server” or browse the list, then install it like any game or tool. - Access files
Steam lets you launch directly, but for setup you’ll need the local files. Right-click “Windrose Dedicated Server” → Manage → Browse Local Files. - Choose preferred setup
Simple — run with defaults for a quick start.
Advanced — edit configs for full customization.
Simple setup
Perfect if you just want to start the server quickly on your PC! There are two ways to launch:
StartServerForeground.bat — recommended. The server runs in a separate command-line window where you can see game logs. To shut down, just close the window.
WindroseServer.exe — use this if you want the server to run as a background process. To close it, open Task Manager and end the process there.
- Launch using your preferred method (bat file recommended).
- A console window will appear if you use
StartServerForeground.bat. - Once loaded, look for an invite code in the console like
f1014dc1. - If it scrolled away too fast, open your server folder →
R5folder → findServerDescription.json. - Open it with any text editor (Notepad will do).
- Find the invite code inside, e.g.
f1014dc1. - Launch the game: Play → Connect to Server → paste the invite code.
- Send the invite code to friends — they connect the same way.
YARR! That’s it. Happy Windrose!
Advanced setup
Server settings are split into two .json files:
ServerDescription.json — common server settings (one file, root folder).
WorldDescription.json — one per world, for world-specific tweaks.
ServerDescription.json
Single file in the root folder of the application.
| Field | Description |
|---|---|
| PersistentServerId | Unique identifier of your server. Do not edit this value. Note: This will be changed in upcoming builds. |
| InviteCode | Invite code used to find your server. Allowed characters: 0–9, a–z, A–Z. Must contain at least 6 characters. Case-sensitive. |
| IsPasswordProtected | Specifies whether a password is required. Set to true if a password is specified.Set to false if the password field is empty.Incorrect configuration may cause unexpected behavior. |
| Password | Server password. |
| ServerName | Name of your server. Useful for distinguishing servers with similar invite codes. |
| WorldIslandId | ID of the selected world. Must match the corresponding value in one of the server's WorldDescription.json files. This world will be loaded when the server starts. |
| MaxPlayerCount | Maximum number of simultaneous players allowed on the server. |
| UserSelectedRegion | Specifies the region for the Connection Service. Supported values: SEA, CIS, EU (EU covers both EU and NA).If left empty, the server will automatically select the optimal region based on latency. If specified, the server will use only that region. |
| P2pProxyAddress | IP address used for listening sockets. |
| UseDirectConnection | true: the server creates sockets for direct client connections.false: the server uses the ICE protocol for P2P connection. |
| DirectConnectionServerAddress | Address for direct connection. Reserved for future use (currently not used). |
| DirectConnectionServerPort | Port for direct connection. Must be available for both TCP and UDP if UseDirectConnection is set to true. |
| DirectConnectionProxyAddress | Can be used to select a specific network interface on the host machine. Default value: 0.0.0.0 |
| AutoLoadLatestBackupIfHasBroken | If set to true, on launch the server will try to restore broken save files from backups, as described in SaveWorkflow.md. |
Example JSON
{
"Version": 1,
"DeploymentId": "0.10.0.0.251-master-9f800c33",
"ServerDescription_Persistent": {
"PersistentServerId": "1B80182E460F727CEA080C8EEBB1EA0A",
"InviteCode": "d6221bb7",
"IsPasswordProtected": false,
"Password": "",
"ServerName": "",
"WorldIslandId": "DB57768A8A7746899683D0EEE91F97BF",
"MaxPlayerCount": 4,
"UserSelectedRegion": "EU",
"P2pProxyAddress": "192.168.31.49",
"UseDirectConnection": false,
"DirectConnectionServerAddress": "",
"DirectConnectionServerPort": 7777,
"DirectConnectionProxyAddress": "0.0.0.0",
"AutoLoadLatestBackupIfHasBroken": true
}
}
WorldDescription.json
You can create as many worlds as you need. All worlds are located in:
The first one is created automatically on server start.
WorldIslandId must match the same field in WorldDescription.json in this folder.| Field | Description |
|---|---|
| IslandId | Unique world ID. Must match the folder name. |
| WorldName | Name of the world. |
| CreationTime | Creation time in internal format. |
| WorldPresetType | Easy, Medium, or Hard. Custom values force “Custom” on next launch. |
| WorldSettings | Parameters grouped by bool, float, and tag. Empty for presets except “Custom”. |
Example JSON
{
"Version": 1,
"WorldDescription": {
"IslandId": "DB57768A8A7746899683D0EEE91F97BF",
"WorldName": "isp",
"CreationTime": 6.3905278455349005e+17,
"WorldPresetType": "Medium",
"WorldSettings": {
"BoolParameters": {
"{\"TagName\": \"WDS.Parameter.Coop.SharedQuests\"}": true,
"{\"TagName\": \"WDS.Parameter.EasyExplore\"}": false
},
"FloatParameters": {
"{\"TagName\": \"WDS.Parameter.MobHealthMultiplier\"}": 1,
"{\"TagName\": \"WDS.Parameter.MobDamageMultiplier\"}": 1,
"{\"TagName\": \"WDS.Parameter.ShipsHealthMultiplier\"}": 1,
"{\"TagName\": \"WDS.Parameter.ShipsDamageMultiplier\"}": 1,
"{\"TagName\": \"WDS.Parameter.BoardingDifficultyMultiplier\"}": 1,
"{\"TagName\": \"WDS.Parameter.Coop.StatsCorrectionModifier\"}": 1,
"{\"TagName\": \"WDS.Parameter.Coop.ShipStatsCorrectionModifier\"}": 0
},
"TagParameters": {
"{\"TagName\": \"WDS.Parameter.CombatDifficulty\"}": {
"TagName": "WDS.Parameter.CombatDifficulty.Normal"
}
}
}
}
}
Custom preset parameters
| Parameter | Default | Details |
|---|---|---|
| CoopQuests | true | If any player completes a co-op quest, it auto-completes for all active players. |
| EasyExplore | false | When true, disables map markers (in-game: “Immersive exploration”). Legacy name — actually makes exploration harder. |
| MobHealthMultiplier | 1.0 | Enemy health. Range: [0.2; 5.0] |
| MobDamageMultiplier | 1.0 | Enemy damage. Range: [0.2; 5.0] |
| ShipHealthMultiplier | 1.0 | Enemy ship health. Range: [0.4; 5.0] |
| ShipDamageMultiplier | 1.0 | Enemy ship damage. Range: [0.2; 2.5] |
| BoardingDifficultyMultiplier | 1.0 | Enemy sailors to win boarding. Range: [0.2; 5.0] |
| Coop_StatsCorrectionModifier | 1.0 | Scales enemy health/posture by player count. Range: [0.0; 2.0] |
| Coop_ShipStatsCorrectionModifier | 0.0 | Scales enemy ship health by player count. Range: [0.0; 2.0] |
| CombatDifficulty | Normal | Boss aggression. Options: Easy / Normal / Hard |
F.A.Q.
System requirements for dedicated server?
RAM: 8 GB
Storage: 35 GB SSD
RAM: 12 GB
Storage: 35 GB SSD
RAM: 16 GB
Storage: 35 GB SSD
For self-hosting (game client + server on same machine): min 16 GB RAM for the client, plus 8 GB more (24 GB total recommended). SSD strongly recommended. Share your experience on Discord or email support@playwindrose.com.
Server won’t start or crashes on launch
Verify game files in Steam. Update GPU drivers. Update your OS. Add firewall/antivirus exceptions for WindroseServer.exe. Restart PC and router.
Can I run on Linux / headless?
Currently Windows-only, unfortunately.
How to install the Dedicated Server via SteamCMD?
You can install and update the Windrose Dedicated Server using SteamCMD, which is the recommended method for headless environments, remote servers, and automation setups.
Step-by-step setup
- Install SteamCMD on your system (available for Windows and Linux from Valve’s official resources)
- Launch SteamCMD
- Run the following commands:
force_install_dir "C:\Game_Servers\Windrose_Server"
login anonymous
app_update 4129620 validate
quit
Explanation of commands
force_install_dir — Specifies the directory where the server files will be installed. You can replace this with any valid path.
login anonymous — Logs into Steam anonymously. The dedicated server does not require a purchased copy of the game to install.
app_update 4129620 validate — Downloads and installs the latest version of the Windrose Dedicated Server. The validate flag ensures all files are correctly downloaded and not corrupted.
quit — Exits SteamCMD once the installation is complete.
Updating the server
To update the server later, simply rerun:
app_update 4129620 validate
This will download only the changed files and keep your server up to date.
What ports does the server use?
Ports are dynamically assigned via NAT punch-through. Ensure your router supports UPnP. Disable proxy/VPN temporarily if connections fail.
Where are my saves stored?
If you are self-hosting from the game client, your saves are stored inside your AppData folder.
To access it:
- Press
Win + R - Paste the following path:
%localappdata%\R5\Saved\ - Press Enter
You should now see the SaveProfiles folder. Inside, open your %YOUR_STEAM_ID% folder. Depending on your game version and migration state, you may see the following folders:
RocksDB— old main saves before update0.10.0.5.120%YOUR_STEAM_ID%_Backups— old backups before update0.10.0.5.120RocksDB_v2— new runtime folder used while the game is running to store required runtime files after update0.10.0.5.120. DO NOT TOUCH IT.RocksDB_v2_Backups— new backups after update0.10.0.5.120
Because of the various situations currently possible, you first need to determine where your actual saves are located:
- Whether the game was updated
- Whether the world was launched after the update
- Whether migration already happened
- Whether backups were already created
In most cases, if you updated the game and launched it at least once, migration should happen automatically and your saves should appear inside RocksDB_v2_Backups. If not, they should be stored in RocksDB.
If you experience any issues with this process, refer to the Save Issues FAQ section.
Dedicated Server Saves
If you are using a dedicated server, save files are stored inside the dedicated server directory:
Windrose Dedicated Server\R5\Saved\SaveProfiles\Default\
The same folder logic applies here as well. However, dedicated servers only use the Worlds folder, since they store only world-related data and do not store player character data here.
How do I transfer saves between the game client and a dedicated server?
Transferring Saves From Client → Dedicated Server
STEP 1 — Locate Your World Save
Depending on your platform and migration state, your saves may be located in either:
RocksDB(old main saves before update0.10.0.5.120)RocksDB_v2_Backups(usually contains migrated backups, new backup folder after update0.10.0.5.120)
Refer to Where Are My Saves Stored? if you are unsure which folder contains your actual saves.
Steam:
OR
(look for the _Latest backup if applicable)
Epic Games Store:
OR
(look for the _Latest backup if applicable)
Stove:
OR
(look for the _Latest backup if applicable)
STEP 2 — Copy the World Folder
Example (or similarly inside RocksDB_v2_Backups\{GameVersion}\Worlds\):
Copy the entire WorldID folder.
STEP 3 — Paste It Into the Dedicated Server
Paste the copied folder into (or similarly inside RocksDB_v2_Backups\{GameVersion}\Worlds\):
STEP 4 — Set Correct WorldIslandID
Open ServerDescription.json, find "WorldIslandID", and set its value to the exact name of the copied world folder. Example:
"WorldIslandID": "EC10598E83A14ED04D9C44CBFBF3F4B1"
Save the file.
STEP 5 — Launch the Dedicated Server
Start the server and verify that the world loads correctly.
Transferring Saves From Dedicated Server → Client
The process is essentially the same, but reversed.
STEP 1 — Locate the Dedicated Server World Save
Navigate to:
Locate the correct WorldID folder. You may also need to check RocksDB_v2_Backups depending on the server version and migration state.
STEP 2 — Copy the World Folder
Copy the entire WorldID folder from the dedicated server.
STEP 3 — Paste It Into the Client Save Folder
Steam / EGS:
Stove:
You may also choose to place it inside RocksDB_v2_Backups\{GameVersion}\Worlds if you are working with migrated saves.
STEP 4 — Launch the Game
Start Windrose normally through Steam / EGS / Stove. If prompted about save conflicts, choose local saves. This prevents cloud data from overwriting the transferred save.
Why is there a WindroseServer folder in the main game?
You cannot launch the dedicated server from the main game folder. The WindowsServer folder there serves a different role — it’s a complementary part of the client. If you launch it from the game folder, the client will shut it down. However, if you copy that folder to any other location, it works as a proper dedicated server.
How do I store multiple worlds on my server?
In ServerDescription.json, change the WorldIslandId field to the ID of the world you want to load, then save the file and launch the server.
Depending on whether you updated to 0.10.0.5.120 or not, world folders may be located in:
or
My game has been updated. Should I update my dedicated server, too?
Absolutely! The game version and the dedicated server version should match; otherwise, bugs may occur. So when your game client has been updated, make sure to update the dedicated server files, too. To do so:
- Download and install the latest game update.
- Take the files from the
WindroseServerfolder inside the game files and move them to wherever you want to store your new dedicated server. - Take your old saves from the previous dedicated server’s
R5\Savedfolder and place them in the new dedicated server’sR5\Savedfolder. - Launch the new dedicated server as usual.
I have useful info to add to this guide
We appreciate it! Visit Windrose Support
← Back to playwindrose.com