SpreadTheLoad
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
模組介紹 作者原文
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
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。 多人連線時,主機與所有用戶端需要安裝一致的模組。
下面這些內容需要先安裝,否則該模組不會生效: