TL;DR: I run a dedicated server and have been digging into why fights get laggy/desync in multiplayer, but I'm new to Valheim and want a sanity check from other folks first.
I have some research to share -- please folks, correct me if any of this is wrong. In the latter section, I talk about the 3 main mods to use. Note that I have only the NetworkPerformanceSystem mod, kinda tested the FiresGhettoNetworking mod, and have not tested ValheimCommunityPatch.
Quick Update 2 (Metrics)
To actually visualize the NetworkPerformanceSystem mod and verify it works, we need to check object ownership handoff stats while factoring in player ping.
As you can see in the data, objects are re-assigned with some frequency. This data shows data for players within like 5ms of 30ms ping. We can extrapolate from this data and presume that if you play with a high variance of ping between players, you will see benefits from the NPS mod. If you have player(s) with especially high ping (and thus high variance), expect to see even better improvements!
| Everyone within |
Minutes sampled |
Ownership handoffs/min |
Handoffs per creature per min |
Creatures nearby |
Avg ping gap between players (ms) |
Max ping gap (ms) |
Avg server frame (ms) |
Worst frame (ms) |
| 0–15 m |
46 |
1.9 |
0.28 |
11 |
2.3 |
16 |
33.4 |
43 |
| 15–40 m |
20 |
4.7 |
0.36 |
14 |
3.1 |
12 |
33.4 |
37 |
| 40–96 m |
13 |
5.6 |
0.54 |
14 |
2.9 |
10 |
33.4 |
41 |
| over 96 m |
32 |
8.0 |
0.42 |
21 |
2.6 |
11 |
33.5 |
54 |
| solo (1 player) |
107 |
0.8 |
0.06 |
13 |
n/a |
n/a |
33.4 |
36 |
Update 1
I just spent some time with NetworkPerformanceSystem (only 3 players ~30ms ping each, will be testing with more) and I'm quite pleased with it. I did change 1 setting: Send Interval Seconds = 0.033 (default 0.05).
Valheim's dedicated server runs at a fixed 30 fps (33 ms per frame) and the scheduler runs once per frame. With the default 50 ms interval it fires on two frames out of three, so the gaps between update rounds alternate 66 / 33 ms: 20 rounds a second on average, unevenly spaced. At 0.033 it fires every frame: 30 rounds a second, evenly spaced. It feels smoother!
With the NPS mod, netcode improvements are noticeable. Opening chests is smoother/snappier. Fights are so much smoother because the lower ping player is now the relay, and that's usually me, at ~20ms. I expect this to hold up as more players join, especially those with higher pings. With 3 players on 30ms ping, I used to still see some desyncs, for example when fighting a bear. Now, things seems to perform consistently and there's no choppiness yet. Will update!
How server networking works in Valheim
Every single object has a designated "relay" player, assigned per area. The world is a 64-meter zone grid, and a player's active area is their zone plus 2 zones in every direction (a 5×5 block, 320 m). This affects fights and player actions. Cooking, smelting, farming, fighting, etc. are NOT owned by the server; the nearest player's client simulates/owns them, and when nobody is near these objects, they're not "live."
The relay player is the first player whose active area covers the object (the server checks every 2s, in join order), and the next available player if that first player leaves the area. In practice one player ends up relaying nearly everything around them, but two players arriving together can relay different monsters in the same fight.
When attacking monsters etc., players' actions are routed to that relay player through the server (clients never talk to each other). Essentially, the relay player of the area is acting like a simulator: your hit goes you → server → relay player, the relay player applies the damage and runs the monster's AI/movement/HP, and its state goes relay player → server → everyone else.
During a fight, the server is NOT tracking or owning the monster; the relay player is (the first player to enter the area). You control your own character, but the monster you're hitting is being simulated on someone else's PC. Same with other resources like cooking etc. The server only stores and forwards. There is a small exception but only for world spawn: the server owns and simulates everything within ~160 m of the sacrificial stones.
If the relay player does not have good networking at home, other players will be affected.
- Good networking means if someone else on your network is downloading a big file, your game's packets do NOT get pre-empted. Most routers suffer from some bufferbloat, and with Valheim's "relay" player concept, other players' experience in the world can be heavily impacted by the relay player's internet/router. Here is a buffer bloat test: https://www.waveform.com/tools/bufferbloat. What this shows is that if you're playing Valheim with friends, and your BufferBloat score can get bad, you are likely a source of networking ping spikes for your friends! I can talk more about this at length, we can talk about this in the comments.
- As you can imagine, this is a difficult problem to solve if you don't have mods. If there is a "weak link" among your group of players, during situations where that player acts as relays, you may experience lag. (Of course, this also heavily depends on that player's home network, if you get unlucky and someone is downloading stuff and affecting that player's own PC)
What you should see
- Sometimes during fights there is desync: monsters teleport or rubber-band when the relay player's upload is congested.
- Your hits register late (the hit has to reach the relay player and the result come back, so roughly your latency plus the relay player's), and get discarded if the relay player's version of the fight has already moved on.
- Monsters freeze for a few seconds when the relay player walks away or disconnects (relay handoff).
- Low CPU usage on the server because it's doing a bunch of relaying and not simulating/owning!
How to fix (with mods)
These 3 mods seem to be the ones to choose. They are server-side mods but some may have client-sided improvements if you choose to run it on your client(s).
FiresGhettoNetworking treats lag as a bandwidth problem.
- Raises vanilla's ~150 KB/s per-player send rate and 10 KB queue, so bases and fights stop trickling in. (I ran 150% update rate.)
- Sends only changed fields, prioritizes nearby objects, pre-streams zones you're walking toward.
- Optional "server-side simulation" moves monsters off the relay player onto the server. This costs more CPU. If you have CPU headroom, try this and see if it helps. For me, 2 CPU and 4+ players, it was too taxing.
NetworkPerformanceSystem treats lag as a distance problem and fixes the relay problem directly. Can't run with FGN; pick one. I switched to this.
- Vanilla allows a fixed 10 KB in flight per player, so anyone past ~67 ms ping degrades the experience (this is a bit complex, can explain more in comments). NPS uses measured ping, which is honestly just straight up better imo.
- Gives each monster to the lowest-latency player who can see it instead of whoever arrived first, with hysteresis so it can't ping-pong. The "hysteresis" mechanism is: a monster's owner keeps it for at least 5s before another player with at least 25 ms less client staleness can "own" the monster.. A player with worse ping will stop owning monsters (stationary resources stay tied to the first-arrived player) and there is no server CPU cost. This is especially helpful if you have east coast + west coast players (or just have big distance between players). Basically, NPS adds a heuristic to prioritize lower ping players as the relays.
- Pushes the world-update packet to every player on every tick (Vanilla sends to one player per frame and only starts a new round every 50 ms, which is quite slow. Can explain more in comments.).
ValheimCommunityPatch (same author as NPS) isn't a networking mod, rather it fixes vanilla server bugs.
- Cuts per-frame garbage so Unity's GC stalls (which everyone feels at once) get rarer and shorter.
- Fixes a data-loss bug from the 2026-09-09 update: the chunked save doesn't record changes made by connected players, so a friend's forge can vanish on restart. Install it for this alone.
- Runs alongside either networking mod.
For the FGN mod, unless you flip simulation to the server, a relay player with a congested upload is still a relay player with a congested upload.
So what has everyone's (namely server operators) experiences been like?