Windrose spreads its dedicated-server config across three files — ServerDescription.json (the server box and its invite code), WorldDescription.json (the difficulty preset and the mob, ship and co-op dials), and the optional windrose_plus.json (the WindrosePlus mod's multipliers, RCON and live map). Here's every setting that matters in plain English — defaults, sane values, and the two traps that catch most admins: the WorldIslandId that must match in three places, and the preset that silently flips to Custom.
WorldDescription.json needs, the auto-flip to Custom, and the two island IDs kept in lockstep. No counting backslashes. Renting a box instead of self-hosting? VanillaNodes has a step-by-step how to host a Windrose dedicated server walkthrough.Half the battle is keeping the three files straight — they do different jobs and live side by side in your server's config folder. Stop the server before swapping any of them in; Windrose rewrites its config on shutdown, so live edits get overwritten.
| File | What it controls | Required? |
|---|---|---|
| ServerDescription.json | The server's front door — name, invite code, player cap, password, region, the direct-connect options, and the WorldIslandId that points at the world. | Always |
| WorldDescription.json | The world's rulebook — the matching IslandId, world name, difficulty preset, and a WorldSettings block of mob/ship multipliers and co-op toggles. | Always |
| windrose_plus.json | Bonus tooling for the third-party WindrosePlus mod only — five rate multipliers, RCON, and an optional public live map. Vanilla servers ignore it. | Mod only |
Who can see and join, and the code they connect with — all in ServerDescription.json. Players join Windrose by invite code, not by IP address.
| Setting | What it does | Default | Recommended |
|---|---|---|---|
| ServerName | The name players see for your server. Purely a label — no effect on connectivity. Set something short and recognisable. | (empty) | your name |
| InviteCode | The code players enter to join — this is the whole join flow. 6+ characters, letters and digits, case-sensitive. Hand it to your crew; keep it private if you want the server private. | (empty) | a 6+ char code |
| MaxPlayerCount | How many players can be on at once. Co-op caps out around 8; the field allows up to 10. Higher leans harder on the host and on a game still being balanced for big crews. | 4 | 4–8 |
| IsPasswordProtected | Whether a password is required on top of the invite code. Off by default. Most small co-op servers leave this off and just keep the invite code private. | false | false |
| Password | The join password — used only when password protection is on above. Leave blank for an invite-code-only server. | (empty) | blank |
| UserSelectedRegion ⚠ verify | Which relay region the server uses. Blank = automatic (the safe default). Known codes are SEA, CIS and EU; no North America value has surfaced and the list may be incomplete in EA. Leave on auto unless you've confirmed a working code. | (blank = auto) | blank |
The single ID that ties the server to its world — and the #1 Windrose misconfiguration when it's wrong. The WorldIslandId lives in ServerDescription.json; the matching IslandId and the world name live in WorldDescription.json.
| Setting | What it does | Default | Recommended |
|---|---|---|---|
| WorldIslandId | The identifier that links the server to a specific world. Must match the IslandId in WorldDescription.json and the world's on-disk folder name — all three identical. | (empty) | one shared ID |
| IslandId | The WorldDescription.json copy of the island ID. Keep it exactly equal to WorldIslandId above. (The generator locks the two together for you.) | (empty) | = WorldIslandId |
| WorldName | The display name of the world inside WorldDescription.json. Cosmetic — labels the save, separate from the server name players see. Useful to keep multiple worlds straight on the host. | (empty) | a world label |
WorldIslandId (ServerDescription) = IslandId (WorldDescription) = the world's folder name on disk. Get any of the three out of step and the server loads the wrong world — or a fresh empty one — and it looks like your save vanished.The headline difficulty dials, all in WorldDescription.json under WorldSettings. The multipliers nest under FloatParameters with escaped tag-name keys (e.g. WDS.Parameter.MobHealthMultiplier) — fragile to hand-type, which is what the generator is for. Change any value here and the preset auto-flips to Custom — that's how Windrose itself behaves.
| Setting | What it does | Default | Range |
|---|---|---|---|
| WorldPresetType | The base difficulty profile: Easy, Medium, Hard or Custom. Pick a clean preset and leave the dials alone to ship that preset with an empty settings block; touch anything below and it becomes Custom automatically. You rarely set Custom by hand. | Medium | Easy / Medium / Hard |
| CombatDifficulty | A separate combat-feel switch (a tag parameter, not a multiplier). Anything but Normal counts as a customisation and flips the preset to Custom. | Normal | Easy / Normal / Hard |
| MobHealthMultiplier | Multiplier on enemy health — tankier mobs, longer fights. Easy preset uses 0.7, Hard uses 1.5. | 1.0× | 0.2–5 |
| MobDamageMultiplier | Multiplier on damage enemies deal to you — the most direct "how punishing is combat" lever. Easy 0.6, Hard 1.25. | 1.0× | 0.2–5 |
| ShipsHealthMultiplier | Multiplier on ship hull health (yours and enemies'). Raise it so ships survive naval fights; lower for fragile, high-stakes boarding. (In-file key is plural.) | 1.0× | 0.4–5 |
| ShipsDamageMultiplier | Multiplier on damage dealt by ship weapons — higher makes naval combat lethal and quick. Hard preset uses 1.25. | 1.0× | 0.2–2.5 |
| BoardingDifficultyMultiplier | Scales how hard boarding actions are. Easy 0.7, Hard 1.5 — tune alongside ship health/damage for the naval feel you want. | 1.0× | 0.2–5 |
Shared-progress rules and the exploration assist, also in WorldSettings. Like everything in this block, changing any of these flips the preset to Custom.
| Setting | What it does | Default | Recommended |
|---|---|---|---|
| SharedQuests | Whether quest progress is shared across the crew. On by default — the natural co-op choice so everyone advances the story together. Off if you want each player tracking their own. | true | true |
| EasyExplore ⚠ verify | The name is backwards. Off by default. Turning it on disables map markers, making exploration harder, not easier. Leave off for the guided experience; on for a deliberately bare-map challenge. | false | false |
| StatsCorrectionModifier | Scales the co-op catch-up correction so crews of different progress stay viable together. Lower toward 0 weakens it; raise toward 2 strengthens it. | 1.0× | 1.0 |
| ShipStatsCorrectionModifier | The ship-specific version of the co-op correction. Default is 0.0, not 1.0 — so no ship correction out of the box. Raise (up to 2) to scale ships toward the crew's level. | 0.0× | 0.0 |
These live in windrose_plus.json and do nothing without the third-party WindrosePlus mod installed (the mod must be present, run as administrator, and rebuilds its PAK on launch). Running vanilla? Skip this section. The current mod applies exactly five multipliers, all default 1.0.
| Setting | What it does | Default | Range |
|---|---|---|---|
| xp | Multiplier on experience gained. 2× is a gentle boost, 5× is grind-free. | 1.0× | 0.1–10 |
| loot | Multiplier on loot quantity — more drops per container and kill. Pairs naturally with a higher XP rate. | 1.0× | 0.1–10 |
| craft_efficiency ⚠ verify | Multiplier on crafting efficiency (the current key; the old craft_cost name is stale). Direction unconfirmed — higher most likely means more efficient (cheaper/faster), but verify on your build. | 1.0× | 0.1–10 |
| cooking_speed | Multiplier on cooking speed — a small quality-of-life boost so the stove isn't a bottleneck. | 1.0× | 0.1–10 |
| harvest_yield | Multiplier on resources gathered per harvest — the headline "boosted server" dial alongside XP and loot. | 1.0× | 0.1–10 |
stack_size, weight, inventory_size, crop_speed and points_per_level — all disabled in the current mod. points_per_level was removed in v1.0.8 after it corrupted saves. Setting them does nothing, so don't.The mod's own HTTP server, remote console, and optional public live map — also in windrose_plus.json, and likewise inert without WindrosePlus installed.
| Setting | What it does | Default | Recommended |
|---|---|---|---|
| server.http_port | TCP port the WindrosePlus HTTP server (RCON + live map) listens on. Forward and firewall it only if you actually use RCON or the public live map. | 8780 | 8780 |
| server.bind_ip | Which local interface the mod's HTTP server binds to. Blank = all interfaces, which is what you want on a normal box. Set a specific IP only on a multi-homed host. | (blank = all) | blank |
| rcon.enabled | Turns on the mod's remote console. On by default in WindrosePlus — set a password below before exposing it. | true | true (w/ password) |
| rcon.password | Password for RCON. Set a long random one if RCON is enabled and reachable — anyone with this gets full remote control of the server. | (empty) | long random |
| livemap.public.enabled | Whether the mod serves a public live map of the world. Off by default. Turn on for a community server where players want a shared map. | false | false |
| livemap.public.token | Access token gating who can view the public live map. Used only when the live map is enabled. | (empty) | a token if used |
rcon.password first. An unauthenticated remote console is full control of your server.Direct-IP and proxy options in ServerDescription.json, for self-hosting outside the relay. These are lightly documented for the current EA build (hence ⚠ verify) — on a managed host you leave them at default and rely on the invite code.
| Setting | What it does | Default | Recommended |
|---|---|---|---|
| P2pProxyAddress | The peer-to-peer proxy address the server uses. Leave as-is on managed hosts — the host sets up the relay. Only change for a custom networking setup. | 127.0.0.1 | 127.0.0.1 |
| UseDirectConnection ⚠ verify | Switches to direct IP connections instead of the invite-code relay. Off by default. Turn on only for a self-hosted box where you control the network — then open the port below. | false | false |
| DirectConnectionServerPort | The port used when direct connection is on. Must be open on both TCP and UDP and forwarded on your router. Ignored when direct connection is off. | 7777 | 7777 |
PersistentServerId: Windrose auto-generates and manages this read-only key in ServerDescription.json. Leave it alone — adding or changing it by hand can break the server's identity.A sensible starting point for a small group that wants a forgiving voyage without trivialising it. Adjust to taste.
| Setting | Value | Why |
|---|---|---|
| MaxPlayerCount | 4–6 | The sweet spot Windrose is balanced for in EA; easy on the host. |
| WorldPresetType | Medium → becomes Custom | Start from Medium; the tweaks below flip it to Custom automatically. |
| MobDamageMultiplier | 0.75× | Takes the edge off combat deaths without removing the threat. |
| SharedQuests | On | Everyone advances the story together — the point of co-op. |
| EasyExplore | Off | Keep map markers (remember: "on" makes it harder). |
| WindrosePlus xp / loot / harvest | ~1.5–2× | Only if you run the mod — a gentle boost so progression isn't a grind. |
ServerDescription.json (the box + invite code), WorldDescription.json (the world rules), and windrose_plus.json (the WindrosePlus mod only). Stop the server first — Windrose rewrites its config on shutdown, so any edit to a running server is overwritten. Easiest path: build all three with the generator and drop them in.WorldIslandId in ServerDescription.json must equal the IslandId in WorldDescription.json and the world's folder name on disk. If any of the three differ, the server loads the wrong world or spins up a fresh empty one. Make all three identical and the save reappears.WorldSettings, Windrose rewrites WorldPresetType to Custom. A "Hard" file with a tweaked mob-health value is really Custom with your values. To ship a clean preset, leave every dial at default; to tune, accept that it becomes Custom.MaxPlayerCount defaults to 4 (the recommended EA size) and tops out at 10, with co-op tuned around 8. Raise it gradually and watch host performance. Players join with the invite code, not your IP.