SpreadTheLoad

v0.2.2·Updated 2026-10-05

Server-side performance optimization for multiplayer: moves object ownership off a struggling client so other players stop inheriting its lag and desync. Valheim never rebalances who simulates what; t

About this mod Author’s original text

SpreadTheLoad

Server-side performance optimization for Valheim multiplayer. It moves object ownership off a

struggling client so that everybody else stops inheriting that machine's lag.

Install on the dedicated server only. No client needs it, including players running no mods at

all. There is no prefab, no RPC and no version check, so nobody is locked out.

The problem

Valheim simulates each creature, ship and workbench on exactly one machine: whichever client

owns it. Ownership goes to whoever was in range first, and vanilla never rebalances it — whoever

loads a zone keeps it until they walk away.

That is fine until the owner is the slowest machine in the group. Then every arrow you fire at a

creature it owns, and every swing at a tree it loaded, travels to that machine and back before

anything happens. Its frame time becomes your input delay, and the lag you feel has nothing to do

with your own hardware or your ping to the server.

Measured on a three-player server: two clients averaging 18 ms a frame, one at 63 ms, and a round

trip through the slow one of 144 ms against an 18 ms ping to the server.

What it does

Three things, all server-side:

  • Objects follow whoever is using them — a tree or ore vein moves to the player chopping it
  • Ships follow whoever is steering — vanilla picks an arbitrary passenger instead
  • Named or detected struggling machines are steered away from shared work

For the third: name the players whose machines should not be handed shared work, and the server

stops giving them objects that somebody else is also standing near — and hands back the ones they are already

holding, which vanilla will not do on its own.

They still own anything only they are near, so nothing is ever left unsimulated and no creature

freezes. When they are the only player in a zone, nothing changes at all.

What it does not do

It will not improve the frame rate of the machine it steers away from. Ownership costs that

machine CPU, and a struggling client is usually short of something else — on the server this was

built for, the slow client was using less CPU than the healthy ones while rendering a third as

many frames. Measurement there found ownership made no difference to its frame time either way.

This mod protects the other players. If you want the slow machine itself to run better, that is a

graphics settings and hardware question, and [DiagnoseServerLag][dsl] will tell you which.

Configuration

BepInEx/config/DeathMonger.SpreadTheLoad.cfg, generated on first run.

| Setting | Default | Meaning |

| --- | --- | --- |

| Enabled | true | Turn off for stock behaviour without removing the mod. |

| Yield Players | (empty) | Who to steer work away from. Empty means the mod does nothing. |

| Remember Ids | true | Learn and remember network ids, so names keep working. |

| Log Activity | false | Occasional summary line; never one line per object. |

| Ownership Follows Attacker | true | Give a tree, rock or ore vein to whoever is hitting it. |

| Attacker Dwell Seconds | 5 | How long it stays put afterwards. |

| Auto Detect Struggling Players | false | Find struggling machines without naming anyone. |

| Stalls Per Minute | 6 | How many stalls a minute before flagging someone. |

| Assign Ship To Captain | true | Give a ship to whoever is steering it. |

| Yielding Player Retains Boat Helm Ownership | true | Whether a yielding player keeps the helm when they steer. |

Naming players

Yield Players takes Steam ids or character names, comma separated.

A character name is not an identity — the same person on a second character stops matching, and

somebody else picking that name starts matching. So a name is used once, to find the player;

their network id is then written to SpreadTheLoad-known-ids.txt beside the config, and from then

on they are matched by id whatever they call their character. Delete a line from that file to

forget someone.

Steam ids are the reliable thing to enter. The server logs them as

Got connection SteamID 76

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file. In multiplayer, the host and every client need the same mods installed.

Dependencies

Install these first, or the mod will not work:

denikson-BepInExPack_Valheim

File & checksum

Filename
SpreadTheLoad-0.2.2.zip
File size
58.2 KiB