Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
SailingTogether
Cooperative rowing: players seated on ship benches row with W/S. Each side pushes independently, so the crew can steer and spin the ship. Includes a top-down ship HUD.
| Last updated | 3 days ago |
| Total downloads | 234 |
| Total rating | 1 |
| Categories | Mods Misc Vehicles |
| Dependency string | FRS-SailingTogether-1.0.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2351README
SailingTogether

A BepInEx mod for Valheim that adds cooperative rowing. In vanilla, only the player at the helm can move the ship. With SailingTogether, every player sitting on a ship bench can row with W (forward) and S (backward) instead of standing up. Jump still stands you up.
Requirements
BepInEx is required. SailingTogether is a BepInEx plugin and does nothing without it.
- Valheim (Steam)
- BepInExPack Valheim (BepInEx 5.4.x) installed in the game folder
- Every player on the ship must have the mod installed (see Multiplayer)
Installation
Thunderstore / r2modman (recommended): install SailingTogether from the mod manager — BepInExPack Valheim is installed automatically as a dependency.
Nexus Mods / Vortex: download the main file and install it with Vortex (BepInEx must already be installed).
Manual:
- Install BepInExPack Valheim and run the game once, so the
BepInExfolder is created. - Download
SailingTogether-<version>.zipfrom Releases and extract it into the Valheim folder (it containsBepInEx/plugins/SailingTogether/SailingTogether.dll). - Start the game. The log (
BepInEx\LogOutput.log) should showSailingTogether 1.0.0 loaded.
How it works
-
Rowing works when the ship is at speed 1 (oars). It also works in reverse (
RowInBack) and, optionally, while stopped (RowInStop, which also allows rowing with nobody at the helm). -
Each rower pushes on the side of the ship they are sitting on:
Port (left) Starboard (right) Result W W goes straight, faster W — turns right — W turns left W S spins in place to the right S S brakes / goes backward -
A bench on the ship's centerline (
CenterDeadZone) only pushes, it does not turn the ship. -
The helmsman keeps full control of speed and rudder; the rowers' force is added on top.
Ship HUD
A top-down view of the ship (bow up) in the lower-right corner, built from the game's own sprites:
ship_top (the orange boat from the wind indicator), winddirection (the wind arrow) and
ship_rudder_icon (the oar).
- Helmsman: every bench — grey ring = free, blue = player, purple = simulated (debug panel).
- Rower: the ship and only your own bench (gold).
- Each occupied bench shows an upright oar that sways like the vanilla helm oar: short and quick when rowing forward (W), wider and slower when rowing backward (S), still when idle.
- A green (W) or red (S) arrow outside the hull, next to each rowing bench.
- The helm is shown in yellow (filled when someone is steering). Oars and arrows turn grey when the current speed does not allow rowing.
Debug simulator (optional)
For testing alone. Disabled by default — enable it with [Debug] SimulatorPanel = true.
Press F8 on board a ship: the panel lists the ship's real benches (bow to stern, with the detected side), each with a -1 (S) / 0 / 1 (W) slider, plus shortcuts (all W/S, left W, right W, spin, reset).
- Take the helm and set speed 1.
- Press F8, set the benches, press F8 again to close. The simulated rowers keep rowing while you steer.
- While the simulation is active, a status line shows rowers, thrust, turn, speed, yaw rate and whether force is being applied.
While the panel is open the cursor is free and character input is blocked.
Multiplayer
Ship physics only runs on the ship's owner (the client simulating it). Each rower writes their input into their own Player ZDO (synced automatically by the game) and the owner reads and applies it — no extra RPCs. All players need the mod. The force/turn values used are the ones from the config of whoever currently owns the ship.
Configuration
BepInEx\config\farias.SailingTogether.cfg (created on first run):
| Section | Key | Default | Description |
|---|---|---|---|
| General | Enabled |
true |
Enables cooperative rowing |
| General | ShowHint |
true |
Shows the controls hint when sitting on a bench |
| Rowing | PowerPerRower |
0.35 |
Force per rower, as a fraction of the ship's helm-oar force |
| Rowing | TurnAccelPerRower |
10 |
Turn acceleration (°/s²) per unbalanced rower |
| Rowing | MaxTurnRate |
25 |
Maximum turn rate (°/s) the rowers can apply |
| Rowing | CenterDeadZone |
0.4 |
Distance (m) from the centerline treated as "center" |
| Rowing | RowInStop |
false |
Allow rowing while the ship is stopped |
| Rowing | RowInBack |
true |
Allow rowing while in reverse |
| Hud | ShowShipHud |
true |
Shows the top-down ship HUD |
| Hud | Scale |
1 |
HUD scale |
| Hud | OffsetX / OffsetY |
30 / 230 |
Distance (px at 1080p) from the right / bottom edge |
| Hud | ShipSprite |
ship_top |
Game sprite used for the ship |
| Hud | ArrowSprite |
winddirection |
Game sprite used for the arrows |
| Hud | OarSprite |
ship_rudder_icon |
Game sprite used for the oars (empty = no oar) |
| Debug | SimulatorPanel |
false |
Enables the rower simulator panel |
| Debug | SimulatorHotkey |
F8 |
Key that opens/closes the simulator panel |
Building from source
Requires the .NET SDK. BepInEx must be installed in the game folder, because the project references
BepInEx.dll and 0Harmony.dll from <Valheim>\BepInEx\core and the game assemblies from
<Valheim>\valheim_Data\Managed.
dotnet build -c Release -p:GamePath="C:\Path\To\Valheim"
The DLL is copied to <Valheim>\BepInEx\plugins\SailingTogether\ after the build.
Use -p:DeployToGame=false to skip copying.
To build the release packages into dist/:
dotnet build -c Release -t:Package -p:DeployToGame=false
| File | For |
|---|---|
SailingTogether-<version>-thunderstore.zip |
Thunderstore / r2modman |
SailingTogether-<version>.zip |
GitHub Releases, Nexus Mods, manual install |
The version lives in SailingTogether.csproj (<Version>) and must match
SailingTogetherPlugin.ModVersion — the Package target fails if they differ.
Support
If you enjoy this mod, consider buying me a coffee:
https://buymeacoffee.com/chrystianfarias
License
SailingTogether — Copyright (c) 2025 Chrystian Farias.
Licensed under Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0). You may share and adapt this work with attribution, for non-commercial purposes only. See LICENSE for the full text.
Third-party
- BepInEx — github.com/BepInEx/BepInEx, licensed under the GNU Lesser General Public License v2.1 (LGPL-2.1). BepInEx is not included in this repository or in the mod release; it must be installed separately.
- HarmonyX (shipped with BepInEx) — MIT License.
- Valheim and its assets are the property of Iron Gate AB. This project is not affiliated with or endorsed by Iron Gate or Coffee Stain. No game assets are included: the HUD sprites are loaded from the installed game at runtime.