SmoothServer

版本 v0.6.1·更新於 2026-09-22

Networking and performance tuning for Valheim dedicated servers: send cadence, adaptive per-peer budgets, async save, telemetry. Optional client half adds zstd compression and a shared map.

模組介紹 作者原文

SmoothServer

Actively maintained for Valheim 1.0. Rebuilt for 1.0.7 on launch day and kept current as patches land;

version 1.x of the mod is in the works. Bugs and ideas: GitHub issues.

Designed and thought up by Nosferatu from real pain points hit running a co-op server.

Coded using Claude, tested by humans.

Networking and performance tuning for Valheim dedicated servers — and, since 0.3.0, an optional

client half in the same DLL.

The server half is the point of the mod and it still needs zero client installs:

[General] EnforceClientMod defaults to false, so vanilla players can always join. Install the

same package on players' machines as well and you additionally get packet compression, a client

send budget and a server-wide shared map.

Installing

Server admins — install into the server's profile

(BepInEx/plugins/SmoothServer). Everything under "Server modules" below starts working

immediately; nobody has to install anything. Config file: Nosferatu.SmoothServer.cfg in the

server's BepInEx/config.

Players — install into your own profile only if the server also runs SmoothServer 0.3.0+.

[General] Mode is Auto: a dedicated server runs the server half, your game runs the client

half. You get compression, the client send budget and the shared map; server-owned settings are

pushed to you by the server.

The package contains six DLLs, not one: SmoothServer.dll plus ZstdSharp.dll,

System.Memory.dll, System.Buffers.dll, System.Numerics.Vectors.dll and

System.Runtime.CompilerServices.Unsafe.dll (the zstd codec and its dependencies — none ship

with Valheim or BepInEx). A mod manager handles this; hand-installers must copy all six.

Mods this replaces — uninstall them first

| Uninstall | Replaced by | Where |

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

| CW_Jesse / BetterNetworking | Compression + SteamRates + SendQueueGuard | server and clients |

| Mydayyy / ServerSideMap | SharedMap | server and clients |

Both must go from every machine. If BetterNetworking is still installed, Compression refuses

to patch (FAILED(...) in the module summary) and the rest of SmoothServer loads normally — it

will not break your server, it just will not compress. SharedMap imports an existing.mod.serversidemap.explored file once on first start, so no exploration is lost.

Server modules

Each module has its own Enabled toggle in its config section.

  • Telemetry [Telemetry] — periodic fps / frame-time / ZDO-rate log line. No gameplay effect.
  • FrameRate [FrameRate] — raises the dedicated server's Unity frame cap. 60 is a good

default on modern hardware: roughly +4pp of one CPU core for half the tick latency.

  • SendCadence [SendCadence] — sends ZDO updates to every peer on a fixed interval

(SendHz, default 20) instead of vanilla's one-peer-per-frame round robin. Scales with player count.

  • SendBudget [SendBudget] — the ZDO send-queue high-water mark and minimum chunk size,

exposed as config: HighWaterBytes defaults to 65536 (vanilla 10240), MinChunkBytes to 2048

(same as vanilla). Acts as the fallback when AdaptiveBudget is off.

  • CreateBudget [CreateBudget] — objects created per frame, exposed as config (default

matches vanilla, i.e. a no-op until raised).

  • PeerTelemetry [PeerTelemetry] — per-peer ping, throughput and Steam send-queue sampling.

No patches; feeds AdaptiveBudget.

  • AdaptiveBudget [AdaptiveBudget] — a per-peer send budget from each peer's measured

bandwidth-delay product, clamped, EMA-smoothed, and backed off while Steam's pending byte count

says the pipe is congested. A player on fibre next door and one on satellite no longer share

one number.

  • SteamRates [SteamRates] — raises Steam's SendRateMax (default 1 MB/s).

SendRateMin stays at vanilla on purpose: it is a floor on Steam's own bandwidth estimate,

and raising it stops the congestion controller backing off for weak connections.

  • SendQueueGuard [SendQueueGuard] — defers, never drops, while a peer's Steam send queue is

backed up, and survives the Steamworks throws that can occur mid-handsha

安裝與使用 安裝:BepInEx 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。 多人連線時,主機與所有用戶端需要安裝一致的模組。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

denikson-BepInExPack_Valheim

檔案與校驗

檔案名稱
SmoothServer-0.6.1.zip
檔案大小
801.2 KiB