ValheimCommunityPatch
Vanilla bug fixes and performance fixes for Valheim. No gameplay changes.
Screenshots 4 screenshots
About this mod Author’s original text
Valheim Community Patch
Vanilla bug fixes and performance fixes. No gameplay changes.
This mod exists to fix things that are broken or pathologically slow in Valheim itself — crashes,
exceptions that silently kill a system, item loss, quadratic hot paths, per-frame allocations, log
spam. It deliberately ships no quality-of-life features, no balance changes, and no content, so you
can install it on a server without anyone having to agree about how the game should play.
Performance fixes are always on; the config holds only their tuning values and the admin-only Verify
diagnostics. Correctness and terrain fixes each have their own toggle. Server memory fixes are the
exception: they are off by default and opt-in, see Server memory. The
dedicated-server garbage collector settings moved to a separate plugin, see
Server garbage collector. Config values are admin-only and
server-synced.
Each fix is tagged with the side it is worth installing on. (server) fixes only do something on
the machine hosting the world — a dedicated server or a listen host. (client) fixes need a local
player, and are not even applied on a dedicated server, which is why the startup log there
reports a smaller number. (both) fixes do work wherever they are installed. A one-sided install is
safe; it just gets you a subset. See Installation.
Why so many fixes are client-side
A Valheim dedicated server is not a simulation host. It only creates game objects inside its own
active area, and a dedicated server never has a player to anchor that area to, so the game parks it
far outside the world for the whole run. Creatures, fires, chests, tar pits and everything else near
a player are created, owned and simulated on that player's client; the server holds the data and
relays it.
So the fixes a server gains from are the data-and-network ones — ZDO handling, world load, packet
allocation, socket logging — and almost everything else is worth having on the client.
Performance Side by Side
Terrain Fix comparison
| Terrain Tears | Terrain Fixed |
|---|---|
| | |
| Shore Shade Tears | Shore Shade Fixed |
|---|---|
| | |
Shore tears are much more subtle as it is a shading issue. On the right side of the first image directly above the head you can see the shading issue.
Fixes in this release
Where a fix was sourced from, or corroborated against, another modder's work, that is recorded per
fix under Credit and sources.
Performance
- Fix Portal Connection Scan (server) — pairs portals through a tag index instead of rescanning
every portal for each unconnected one every five seconds.
- Fix World Load Connection Scan (server) — indexes the world-load pairing of portals, spawners
and sync transforms with their targets instead of comparing every pair.
- Fix Disconnect ZDO Sweep (server) — indexes non-persistent objects by owner, so a disconnect
sweeps only the departing player's objects instead of every ZDO in the world.
- Fix Tar Pit Buffer Disposal (client) — disposes tar pit raycast buffers only when they were
allocated, so a tar pit whose load failed cannot throw out of scene teardown.
- Fix ZDO Packet Allocation (both) — writes one network package into another straight from its
buffer instead of copying the whole payload onto the heap first.
- Fix Mist Query Overhead (client) — answers mist volume queries from a zone-bucketed snapshot
and heightmap data instead of scanning every mist volume with native reads and physics rays per
particle.
- Fix Heightmap Lookup Scan (both) — finds the terrain tile under a point with a zone-keyed
lookup instead of scanning every loaded tile.
- Fix Static Object Ground Checks (both) — reads a tree or rock's position once per ground check
instead of about six times.
- Fix Grass Rebuild Burst (client) — spreads a whole-area grass rebuild over a few frames,
nearest patches first, instead of regenerating every patch in one frame.
- Fix Terrain Builder Throughput (both) — makes the terrain build thread sleep only when idle
and hol
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- 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.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- 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.
Install these first, or the mod will not work: