Source-checkedPerformance

SmoothServer

by Nosferatu · for Valheim

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.

3.8KDownloads
43d agoLast updated
BepInExLoaders
ThunderstoreSource

About SmoothServer

From Thunderstore

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 <world>.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-handshake.

  • SyncListCache [SyncListCache] — caches the per-peer sector scan in ZDOMan.CreateSyncList

briefly; the filter and sort still run on every send.

  • VPOServer [VPOServer] — the server-safe parts of ValheimPerformanceOptimizations (MIT):

WearNTear support caching and a faster ReleaseNearbyZDOS scan.

  • AsyncSave [AsyncSave] — pre-sizes the save clone list. Measured on a 136 000-ZDO world,

main-thread autosave stall 67 ms → 47 ms and 78 ms → 45 ms.

  • GcThrottle [GcThrottle] — rate-limits Resources.UnloadUnusedAssets on an idle server.
  • OwnershipRelease [OwnershipRelease] — shortens the ZDO ownership-release interval from

vanilla's 2 s (default 0.5 s) so objects change hands faster as players move.

  • MapSelfTest [MapSelfTest] — headless unit tests for the shared-map codec at load; shows up

as applied PASS in the module summary.

  • PriorityLane [PriorityLane] — both ends. Holds this machine's outgoing backlog in a

priority queue instead of letting it pile up inside Steam's own buffer, and hands Steam only about one bandwidth-delay product at a time, latency-critical traffic first. A melee hit no longer waits behind tens of kilobytes of bulk world data: the residual delay drops from the 80–430 ms band to roughly 25 ms. Unmodded clients benefit too — only the send order changes, every byte stays vanilla. Coexists with SendQueueGuard and Compression; the ordering rules that keep it safe (never let a destroy overtake the object it destroys, never promote a message whose target the receiver has not been sent, never cross Compression's handshake) are unit-tested at load.

Read the full description on Thunderstore →

Highlights

From source data

Loaders

Runs on BepInEx.

Footprint

Rated a light load on a server.

Last update

Its author last shipped an update 43d ago.

SmoothServer on Nxeon

From our catalogue
One-click install
Supported on Nxeon Valheim servers, for BepInEx servers. We download it from Thunderstore, place it, and restart the server.
Server type needed
BepInEx
Server load
light
Smallest plan we suggest
Valheim — 4 GB (4 GB RAM). This follows our own load rating above, not a benchmark.
Latest build
0.6.1, released 2026-09-22

Game versions by loader

LoaderGame versionsNewest
BepInEx

From 10 recorded builds of SmoothServer.

Recent builds

BuildReleasedGame versionsLoaders
0.6.12026-09-22n/aBepInEx
0.6.02026-09-18n/aBepInEx
0.5.32026-09-17n/aBepInEx
0.5.22026-09-17n/aBepInEx
0.5.12026-09-16n/aBepInEx
0.5.02026-09-09n/aBepInEx

Dependencies

Declared by the newest build that lists any. Required ones are installed with it on one-click installs.

Run SmoothServer on a Valheim server

Pick a server or deploy a new one above; it is installed in one click.

What kind of mod it is

From the catalog
Listed on Thunderstore as “Content”

Performance

Makes the game or server run faster or lighter without changing how it plays.

Compatibility

Game
Valheim
Loaders
BepInEx
Requires
One-click install needs a BepInEx server.

Verified at the source

  • ✓ThunderstoreOfficial listing, checked 2026-10-01Open ↗
  • ✓AuthorNosferatu, as published on Thunderstore
  • ✓LicenseNot published by the sourceFree

SmoothServer, answered

Generated from the mod’s own source data.

Which loaders does it support?

BepInEx.

Is it free?

Yes. SmoothServer is free to download from Thunderstore.

How do I add it to my Nxeon server?

Use “Add to a server” on this page, or open NxLabs from your dashboard. We install it, restart your server and switch it on.

NxLabs

Run SmoothServer on a Valheim server.

Deploy in about a minute from $9.99 a month, then add SmoothServer in one click.