# Windrose Server Troubleshooting (/docs/windrose/troubleshooting)



import { Step, Steps } from 'fumadocs-ui/components/steps';

***

Server Won't Start [#server-wont-start]

**Server exits immediately after starting**

* Check the server console log at `R5/Saved/Logs/R5.log` in **File Manager** for the error
* Make sure `ServerDescription.json` is valid JSON — a missing comma or bracket will prevent startup
* Try a **Reinstall Server** from the Dashboard, then start once to regenerate clean config files

**Server crashes on launch (self-hosted)**

* Verify your game files via Steam (right-click game → Properties → Local Files → Verify)
* Add a Windows Firewall exception specifically for `WindroseServer.exe`
* Update your GPU drivers and Windows OS
* Restart your PC and router before trying again
* The dedicated server **cannot be run from inside your main Windrose game folder** — it must be installed to a separate location

**Server starts but no world loads**

* Check that `WorldIslandId` in `ServerDescription.json` matches an actual folder name under `R5/Saved/SaveProfiles/Default/RocksDB/<version>/Worlds/`
* If the world folder is missing or was renamed, the server won't find it — see [Manage Worlds](/docs/windrose/manage-worlds)

***

Players Can't Connect [#players-cant-connect]

**"Connection Timed Out" / invite code not working**

* Confirm the server is fully started (green status in the panel) — wait at least 1 minute after start before trying to join
* Double-check the invite code — it is **case-sensitive**
* Make sure the player has completed the Windrose tutorial in single-player at least once — players who haven't finished the tutorial cannot join multiplayer

**Player reaches loading screen then gets kicked back to the menu**

* The joining player hasn't completed the tutorial yet
* The host may still be loading — wait until the host is fully inside the world before players try to connect

**"Version Mismatch" or "Incompatible Version"**

* Game client and server must be on the exact same version
* Update your Windrose game client via Steam, or [update your server](/docs/windrose/update-server)

**Server not found / can't find server by invite code**

* Try switching your DNS to Google Public DNS (`8.8.8.8` / `8.8.4.4`) — some DNS providers (including NextDNS) block Windrose's connection endpoints by default, preventing the game from registering the server
* Disable any VPN or proxy on the client machine

***

Config File Issues [#config-file-issues]

**My WorldDescription.json edits keep reverting on server start**

This is the single most-reported Windrose hosting question, and the answer is unintuitive: **`WorldDescription.json` is an *export*, not a config file.** Windrose stores world settings inside the RocksDB database (`R5/Saved/SaveProfiles/Default/RocksDB_v2/<version>/Worlds/<world_id>/`). On every server start, the game reads the DB and *re-generates* `WorldDescription.json` from current DB state — overwriting whatever you wrote to it.

That means **editing the JSON does nothing for an existing world**, even with valid syntax, proper leading-zero numbers, and `WorldPresetType: "Custom"`. The panel isn't to blame either — its config management only touches `R5/ServerDescription.json`, never the per-world JSON. This is confirmed upstream in [indifferentbroccoli/windrose-server-docker issue #69](https://github.com/indifferentbroccoli/windrose-server-docker/issues/69) (still open):

> *"Server-Binary loads the world out of the RocksDB-Database and then generates the WorldDescription.json at every Start. The json is only an export not a config at this point."* — muhzn1991, issue #69

The save-roundtrip workaround (confirmed working) [#the-save-roundtrip-workaround-confirmed-working]

To actually change settings on an existing Windrose world you have to write to the database, not the JSON. The supported path is to take the save into local single-player, change settings via the in-game UI (which writes to RocksDB), and upload it back:

<Steps>
  <Step>
    **Back up + download the save from the panel.**
    Open **Backups** → **Create Backup** → wait for it to finish → click the three-dot menu → **Download**. Or use **File Manager** to download `R5/Saved/SaveProfiles/Default/` as a zip.
  </Step>

  <Step>
    **Copy the save into your local Windrose install.**
    Extract the downloaded archive and place the `Default` folder at:

    ```
    %LOCALAPPDATA%\R5\Saved\SaveProfiles\Default\
    ```

    (Windows). Overwrite the local `Default` folder if one exists, or move yours aside first.
  </Step>

  <Step>
    **Launch Windrose in single-player and load the world.**
    From the main menu, your server's world should now appear in the local world list. Open it.
  </Step>

  <Step>
    **Change settings via the in-game UI.**
    Open the world settings panel and change whatever you need (combat difficulty, `Coop.StatsCorrectionModifier`, multipliers). The in-game UI writes directly to the RocksDB database — which is the source of truth.
  </Step>

  <Step>
    **Exit the game cleanly.**
    Use the menu → Save & Exit so the DB flushes to disk. Don't Alt-F4.
  </Step>

  <Step>
    **Stop your server cleanly** from the panel **Dashboard** → **Stop** (not **Kill**).
  </Step>

  <Step>
    **Upload the modified Default folder back** to the server via **File Manager** or SFTP, overwriting the existing `R5/Saved/SaveProfiles/Default/`. Keep the full folder structure intact (`RocksDB_v2/<version>/Worlds/<world_id>/`).
  </Step>

  <Step>
    **Start the server.** The next server start regenerates `WorldDescription.json` from the modified DB, so your new settings show up there too — and persist.
  </Step>
</Steps>

When direct WorldDescription.json edits do work [#when-direct-worlddescriptionjson-edits-do-work]

There's one narrow case where editing the JSON does survive a restart: **a brand-new world that hasn't been loaded yet**. If you've created a world via `ServerDescription.json` but never started the server with it, the RocksDB entry doesn't exist yet, so on first start the game initialises the DB from the JSON. After first load, edits to the JSON stop sticking.

If you go this route on a fresh world, **always include leading zeros on decimal values** (`0.5` not `.5`, `0.3` not `.3`). Missing leading zeros silently revert the field to default on load. Confirmed in [issue #30 comment 11](https://github.com/indifferentbroccoli/windrose-server-docker/issues/30): *"I was able to resolve the issue with using the correct format for the values I was setting (0.3 vs .3)."*

Status [#status]

The save-roundtrip workaround is annoying but it's the only working path on current Windrose Early Access builds. The Windrose team has not shipped a fix as of this writing — track [issue #69](https://github.com/indifferentbroccoli/windrose-server-docker/issues/69) for upstream progress. Once direct JSON edits are supported, we'll update this entry.

**WorldPresetType keeps changing to "Custom"**

* If there are any values in `WorldSettings`, the server automatically sets the preset to `"Custom"` on startup
* To use a clean preset, empty all three sections: `"bool": {}, "float": {}, "tag": {}`

**`ServerDescription.json` is missing**

* The file is auto-generated on first server start — if it's missing, start the server once and it will be created
* Do not start editing config files before running the server for the first time

***

Performance Issues [#performance-issues]

**High lag / rubber-banding with players**

* Check CPU and RAM usage in the **Dashboard** — if CPU is consistently above 80%, upgrade your plan
* Set up [Scheduled Restarts](/docs/windrose/scheduled-restarts) — UE5 servers accumulate memory over time and a daily restart clears it
* Reduce `MaxPlayerCount` temporarily — above 4 players performance may degrade in Early Access
* Reduce high multipliers in `WorldSettings` — very high `MobHealthMultiplier` values (e.g. 5.0) cause longer AI tick loops per encounter

**Server crashes after a few hours**

* This is typically a memory leak in the Early Access build — scheduled daily restarts will prevent it
* Back up your world data before each restart as a precaution

***

Save File Issues [#save-file-issues]

**World progress is gone after an update**

* Windrose save data is stored per game version in `R5/Saved/SaveProfiles/Default/RocksDB/<version>/`
* After an update, the version folder path changes — your old world is still there under the previous version folder
* Copy the world folder from the old version path to the new version path, then update `WorldIslandId` in `ServerDescription.json` if needed

**Save appears corrupt / world fails to load**

* Stop the server and restore a backup from the **Backups** tab
* If no backup exists, check the old version folder for an intact save
* See [Backup and Restore](/docs/windrose/backup-restore)

***

Reading the Server Log [#reading-the-server-log]

The server log at `R5/Saved/Logs/R5.log` is the first place to check for any issue:

<Steps>
  <Step>
    In the panel sidebar, click **Files**.
  </Step>

  <Step>
    Navigate to `R5/Saved/Logs/`.
  </Step>

  <Step>
    Open `R5.log` and scroll to the bottom to see the most recent entries.
  </Step>
</Steps>

Look for lines containing `Error`, `Warning`, or `Fatal` — these indicate what went wrong.

***

Still Stuck? [#still-stuck]

Contact Windrose support directly:

* **Discord:** [discord.gg/windrose](https://discord.gg/windrose)
* **Email:** [support@playwindrose.com](mailto:support@playwindrose.com)
* **Official server guide:** [playwindrose.com/dedicated-server-guide](https://playwindrose.com/dedicated-server-guide/)

***

Related Guides [#related-guides]

* [Server Configuration](/docs/windrose/server-config)
* [Backup and Restore](/docs/windrose/backup-restore)
* [Update Your Server](/docs/windrose/update-server)
* [How to Join Your Server](/docs/windrose/join-server)
