# How to Configure Your Windrose Server (/docs/windrose/server-config)



import { File, Folder, Files } from 'fumadocs-ui/components/files';
import { Step, Steps } from 'fumadocs-ui/components/steps';

Windrose uses two config files: `ServerDescription.json` at the server root for how players find and connect to your server, and `WorldDescription.json` per-world for gameplay settings.

> ⚠️ **Always stop your server before editing config files.** The server may automatically overwrite changes if it detects an issue while running.

> **First run:** Config files are auto-generated when the server starts for the first time. Start the server once, wait for it to fully load, then stop it before editing.

***

File Locations [#file-locations]

<Files>
  <File name="ServerDescription.json" />

  <Folder name="R5" defaultOpen>
    <Folder name="Saved" defaultOpen>
      <Folder name="SaveProfiles" defaultOpen>
        <Folder name="Default" defaultOpen>
          <Folder name="RocksDB" defaultOpen>
            <Folder name="<game_version>" defaultOpen>
              <Folder name="Worlds" defaultOpen>
                <Folder name="<world_id>" defaultOpen>
                  <File name="WorldDescription.json" />
                </Folder>
              </Folder>
            </Folder>
          </Folder>
        </Folder>
      </Folder>

      <Folder name="Logs">
        <File name="R5.log" />
      </Folder>
    </Folder>
  </Folder>
</Files>

`ServerDescription.json` sits at the **root** of your server directory. `WorldDescription.json` is nested inside the world save folder.

***

Editing Config Files [#editing-config-files]

<Steps>
  <Step>
    Stop your server from the **Dashboard**.
  </Step>

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

  <Step>
    Open `ServerDescription.json` from the root of the file list.
  </Step>

  <Step>
    Make your changes, then click **Save Content**.
  </Step>

  <Step>
    Start your server. Changes take effect on the next startup.
  </Step>
</Steps>

***

ServerDescription.json [#serverdescriptionjson]

This file controls how players find and connect to your server.

```json
{
  "PersistentServerId": "auto-generated-do-not-edit",
  "InviteCode": "d6221bb7",
  "IsPasswordProtected": false,
  "Password": "",
  "ServerName": "My Windrose Server",
  "WorldIslandId": "A252DE670935496D6E87B57ADF88225C",
  "MaxPlayerCount": 4,
  "P2pProxyAddress": "127.0.0.1"
}
```

| Setting               | Description                                                                                  |
| --------------------- | -------------------------------------------------------------------------------------------- |
| `PersistentServerId`  | Unique server ID — **do not edit**, auto-generated on first run                              |
| `InviteCode`          | The code players use to join. Min 6 characters, case-sensitive. Allowed: `0-9`, `a-z`, `A-Z` |
| `IsPasswordProtected` | `true` to require a password, `false` for public                                             |
| `Password`            | The join password — only used when `IsPasswordProtected` is `true`                           |
| `ServerName`          | Display name shown to players identifying your server                                        |
| `WorldIslandId`       | The active world ID — must match a world folder name under `RocksDB/.../Worlds/`             |
| `MaxPlayerCount`      | Maximum simultaneous players. 4 recommended during Early Access, 10 max                      |
| `P2pProxyAddress`     | IP address for listening sockets. Default `127.0.0.1` — leave as-is on managed hosting       |

***

WorldDescription.json [#worlddescriptionjson]

Each world has its own `WorldDescription.json` at:

```
R5/Saved/SaveProfiles/Default/RocksDB/<game_version>/Worlds/<world_id>/WorldDescription.json
```

Difficulty Presets [#difficulty-presets]

Set `WorldPresetType` to one of:

| Preset   | Multiplier Values | Description                                         |
| -------- | ----------------- | --------------------------------------------------- |
| `Easy`   | All at `0.7`      | Lower enemy health, damage, and ship stats          |
| `Medium` | All at `1.0`      | Balanced defaults — the standard experience         |
| `Hard`   | All at `1.5`      | Higher enemy health, damage, and tougher encounters |

> If any values are present in `WorldSettings`, the preset automatically changes to `"Custom"` on next server launch. Remove all `WorldSettings` values to return to a clean preset.

Custom World Settings [#custom-world-settings]

Add values to the `WorldSettings` block to fine-tune difficulty:

| Parameter                          | Section | Default  | Range                    | Effect                                                        |
| ---------------------------------- | ------- | -------- | ------------------------ | ------------------------------------------------------------- |
| `CoopQuests`                       | `bool`  | `true`   | `true` / `false`         | When one player completes a co-op quest, it completes for all |
| `EasyExplore`                      | `bool`  | `false`  | `true` / `false`         | Disables map markers for POIs — **true = harder exploration** |
| `MobHealthMultiplier`              | `float` | `1.0`    | `0.2 – 5.0`              | Enemy health                                                  |
| `MobDamageMultiplier`              | `float` | `1.0`    | `0.2 – 5.0`              | Enemy damage                                                  |
| `ShipHealthMultiplier`             | `float` | `1.0`    | `0.4 – 5.0`              | Enemy ship health                                             |
| `ShipDamageMultiplier`             | `float` | `1.0`    | `0.2 – 2.5`              | Enemy ship damage                                             |
| `BoardingDifficultyMultiplier`     | `float` | `1.0`    | `0.2 – 5.0`              | Enemy sailors to defeat during boarding                       |
| `Coop_StatsCorrectionModifier`     | `float` | `1.0`    | `0.0 – 2.0`              | Scales enemy health/posture by player count                   |
| `Coop_ShipStatsCorrectionModifier` | `float` | `0.0`    | `0.0 – 2.0`              | Scales enemy ship health by player count                      |
| `CombatDifficulty`                 | `tag`   | `Normal` | `Easy`, `Normal`, `Hard` | Boss and enemy aggression level                               |

Custom WorldDescription.json Example [#custom-worlddescriptionjson-example]

```json
{
  "IslandId": "A252DE670935496D6E87B57ADF88225C",
  "WorldName": "My Server",
  "WorldPresetType": "Custom",
  "WorldSettings": {
    "bool": {
      "CoopQuests": true,
      "EasyExplore": false
    },
    "float": {
      "MobHealthMultiplier": 1.5,
      "MobDamageMultiplier": 1.2,
      "ShipHealthMultiplier": 1.0,
      "ShipDamageMultiplier": 1.0,
      "BoardingDifficultyMultiplier": 1.0,
      "Coop_StatsCorrectionModifier": 1.0,
      "Coop_ShipStatsCorrectionModifier": 0.5
    },
    "tag": {
      "CombatDifficulty": {
        "TagName": "WDS.Parameter.CombatDifficulty.Hard"
      }
    }
  }
}
```

***

Related Guides [#related-guides]

* [How to Join Your Server](/docs/windrose/join-server)
* [Set a Password](/docs/windrose/server-password)
* [World Modifiers](/docs/windrose/world-modifiers)
* [Manage Worlds](/docs/windrose/manage-worlds)
* [Update Your Server](/docs/windrose/update-server)
