Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
NoodlesMcDoodles
Take the desync out of Valheim. Your dedicated server runs the world instead of whichever player got there first, and far-away players get the bandwidth they need. Less rubber-banding, same vanilla game. Works with vanilla clients.
| Last updated | a week ago |
| Total downloads | 121 |
| Total rating | 0 |
| Categories | Mods Tools Server-side Client-side Utility AI Generated Deep North Update |
| Dependency string | Wubarrk-NoodlesMcDoodles-1.0.12 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2351README
π NoodlesMcDoodles
π₯οΈ Dedicated servers Β Β·Β π₯ Works with vanilla clients Β Β·Β π§© BepInEx 5 Β Β·Β π MIT Β Β·Β π·οΈ v1.0.12
Take the desync out of Valheim: the server runs the world, not whoever loaded in first.
In vanilla Valheim, a zone belongs to whichever connected player is nearest it β and it stays theirs for as long as they're there. If that player's own connection is the slowest one on the server, their upload and their latency quietly become everyone else's lag, for every zone they happen to be standing in. Raising send rates alone doesn't fix that; it just lets a bad connection flood the pipe faster.
NoodlesMcDoodles fixes the cause. The dedicated server runs the world around every player (creatures, buildings, production, doors, terrain) instead of leaving it to whichever player loaded the area first; players keep only what they handle directly, like chests, carts and their own character. The server also paces its sending per player, so distant players get steady updates instead of vanilla's bursty ones. Every feature has its own config switch, and the whole mod reverts to stock vanilla instantly if you flip its kill switch β see Safety below.
βοΈ Features
πΊοΈ Server-run zones
In vanilla, the first player to load an area runs it for everyone: their game simulates the creatures,
buildings, doors and smelters there, and everyone else sees that world second-hand through their connection.
NoodlesMcDoodles gives that job to the dedicated server. With the default OwnershipAuthority.Mode = FarOrShared, the server runs creatures and tames, buildings, production (smelters, kilns, windmills, crafting
stations), trees and rocks, doors and terrain, both in empty areas and in the areas players are standing in.
Players keep what they handle directly: their own character, chests, carts, item and armor stands, turrets,
signs, items on the ground, ships, and anything harvestable within reach. Moving an object to the server only
changes which machine sends its updates; nothing a player sees happen to it changes.
Where several players share an area, the objects players keep go to whichever of them has the best round-trip
time to the server, not to whoever arrived first. An experimental extension (O10) lets the server hold such
an object itself when every player near it is far from the server. It's marked EXPERIMENTAL in its own
config description (that exact case, several far players at once, hasn't been exercised in a long live session
yet), and it can be switched off on its own.
π§ Empty-area preservation
The server also keeps running areas nobody is standing in β which in vanilla is exactly when things start decaying, despawning, or losing durability with nobody around to notice. A dedicated guard freezes those specific destructive vanilla code paths (weather/structural decay, dropped-item despawn, wild-creature-vs-tame and wild-creature-vs-piece combat) only inside that empty, server-held band. Nothing changes for a zone a player is actually standing in β normal combat and damage there behave exactly as vanilla.
π‘ Steadier networking
Raises the per-connection send-rate ceiling and lets it adapt upward per player as their connection proves it can take it, instead of pinning everyone to one fixed number. The old vanilla send-queue gate only ever allowed about one round trip's worth of data in flight, which quietly punished distant players the most; the queue now grows with a connection's own measured round-trip time, so a far player can approach the same effective throughput as a nearby one instead of being structurally capped lower.
π§© Optional client-side extras
Installing the same DLL on your own game client (not just the server) unlocks these client-side improvements, plus the F6 status panel below: your own uploads get the identical rate/queue treatment the server gives itself, so other players see fresher updates from you; and a shortened dead-reckoning window means a creature, player, or object you don't own stops sliding on stale movement data sooner after a network hiccup, instead of coasting for vanilla's full two seconds and snapping back. A second, more aggressive smoothing mode (buffered interpolation) also ships but stays off by default β measured testing found it smoother in ordinary play but worse than vanilla in the worst case, so it's left in as an experiment rather than a default.
π Status panel (F6)
Press F6 in game for a small black-and-gold panel with two tabs. Basic shows who runs the world around you, as a share of the objects loaded near you (Server owns, You own, Other players own, Unowned), your ping, upload and download, your upload and download limits, and whether the server runs NoodlesMcDoodles. Detailed splits your connection into Upload (you to the server: your set limit against the one in use, your send queue against its allowance, with the peak over the last minute) and Download (the server's own numbers for you: its limit, what it actually sends and its queue for you, since your download is the server's upload and only the server sets it). It also shows who controls each of the nine zones around you, by name, which players own objects near you, and this client's own features. Drag the title to move the panel, drag its corner to resize it; text wraps and the content scrolls, and the panel remembers where you left it. F6 cycles Basic β Detailed β hidden. It works on any server, modded or vanilla (download numbers need a NoodlesMcDoodles 1.0.3+ server), and only reads what your game already has: the only file it writes is its own position and size.
ποΈ ZDO compression between modded peers
When both ends of a connection are running NoodlesMcDoodles, object-update traffic between them is compressed before it's sent. This is negotiated automatically per connection β a vanilla peer, or an older/incompatible build of this mod, is simply never offered it and sees no difference at all.
π₯ Installation
Dedicated server (this is where the real work happens)
- Install BepInExPack Valheim on the server.
- Drop
NoodlesMcDoodles.dllinto the server'sBepInEx/plugins/. - Start the server once to generate
BepInEx/config/wubarrk.noodlesmcdoodles.cfg, then adjust settings if you want (see Configuration below β the defaults are already tuned, not just "safe"). - Restart. That's it β fully vanilla clients can connect right away and everything above still applies to them. No client-side install is required for any of it.
Optional client install
Adds the extras from "Optional client-side extras" above, including the F6 status panel. Install BepInExPack and drop the
same NoodlesMcDoodles.dll into your own BepInEx/plugins/. It negotiates automatically with a modded server,
and works standalone (its client-local pieces only) against a completely vanilla one too.
Mixed servers
Some players with the mod, some without, is completely fine β nothing here requires every player to match. Players without the client install simply don't get the optional upload/smoothing extras for their own character; everything server-side still applies to them normally.
π§― Safety
This mod touches object ownership and network pacing on a live world, so it's built with a hard "zero data loss" rule:
- Nothing destructive happens where it can't be undone. In-use ships, carts, chests, and crafting stations are never reclaimed out from under the player using them; the server-held empty band actively preserves instead of decaying. The two counters that would prove otherwise (an object claimed by two owners at once, or a persistent object destroyed by the empty-band logic) are designed to always read zero.
- Auto stand-down. The mod watches its own exception rate and will automatically switch itself fully off β logging exactly why β if something starts throwing errors faster than expected. It never re-enables itself; an admin has to do that on purpose once the cause is fixed.
- Mode quarantine. If another mod keeps refusing the server's ownership claims, the mod drops to the
conservative
SharedFarmode (the server runs only areas nobody is standing in) until an admin runsnoodles clear ModeQuarantine. - Admin kill switch. Any admin on the server's own admin list can type
noodles status,noodles enable, ornoodles disableinto Valheim's built-in developer console (F5 by default) from inside the game, or the server operator can type the same commands directly into the server's own console.disablereverts every hook this mod adds to exact vanilla behaviour immediately β no restart needed β and safely hands back anything the mod was holding. - Clean rollback. Nothing here changes the world save format or writes data a stock game can't read. If you
ever want it gone entirely, just remove
NoodlesMcDoodles.dllfromBepInEx/plugins/and restart β that's the whole uninstall.
Built and tested against Valheim 1.0.
βοΈ Configuration
(Run the game or server once to generate BepInEx/config/wubarrk.noodlesmcdoodles.cfg. "Side" says which
install a setting matters on: the server's, a player's client, or both. Features.ZdoCompression.Active is the
one setting a modded server pushes to connected modded clients.)
Safety & kill switch
| Setting | Default | Side | Description |
|---|---|---|---|
Core.Enabled |
true |
both | Master switch. Off = exactly vanilla behaviour everywhere. |
Core.AutoStandDown.Enabled |
true |
both | Let the mod switch Core.Enabled off by itself when its error rate spikes. |
Core.AutoStandDown.ExceptionBurstLimit |
5 |
both | Caught errors per rolling 60 s before auto stand-down trips. |
OwnershipAuthority.ModeQuarantine.VetoBurstLimit |
50 |
server | Claims refused by another mod, per 60 s, before ownership drops to SharedFar. |
Networking
| Setting | Default | Side | Description |
|---|---|---|---|
Transport.T1_GlobalRateBps |
262144 (256 KiB/s) |
both | Per-connection send-rate ceiling (vanilla: 150 KiB/s). |
Transport.T9_ServerTotalBps |
10485760 (10 MiB/s) |
server | Server-wide sending total before rate increases pause. |
Transport.T2_JoinBurstBps |
2097152 (2 MiB/s) |
server | Temporary higher ceiling for a player who is still joining. |
Transport.Q10_Enabled |
true |
client | Apply the same rate/queue improvements to a modded client's own upload. |
Server-run zones
| Setting | Default | Side | Description |
|---|---|---|---|
OwnershipAuthority.Active |
true |
server | Master switch for server-run zones. |
OwnershipAuthority.Mode |
FarOrShared |
server | SharedFar: only areas nobody is standing in. FarOrShared: everything except what players handle directly. All: chests, carts, stands and ground items too. |
O9.Active |
true |
server | Give the objects players keep to whichever nearby player has the best ping. |
O10.Active |
true (EXPERIMENTAL) |
server | Let the server itself own an object when every nearby player is far. |
Features.ServerZoneSim.Active |
true |
server | Gives the server real terrain and objects around every player, so it has something to run. |
Features.HeldBandPreservationGuard.Active |
true |
server | Freezes decay/despawn inside the server's own empty held zones. |
Gameplay correctness
| Setting | Default | Side | Description |
|---|---|---|---|
Features.VehicleContainerHandover.Active |
true |
server | Never reclaim a ship, cart, or container while a player is using it. |
Features.ProductionHandoverGuard.Active |
true |
server | Same protection for smelters, kilns, and similar production buildings. |
Features.DoorAutoClose.Active |
true |
server | Closes player-placed doors left open for 5 minutes (keyed and dungeon doors excluded). |
Features.UpdateIsolation.Active |
true |
server | If one object throws an error during its update, every other object keeps running. Without this, a single error freezes every creature on the server for that frame. |
Compression & smoothing
| Setting | Default | Side | Description |
|---|---|---|---|
Features.ZdoCompression.Active |
true |
both | Compress object-update traffic between two modded peers (the server's value is pushed to clients). |
ClientSmoothing.ShortExtrapolation.Active |
true |
client | Shortens vanilla's 2 s stale-movement window to 500 ms. |
ClientSmoothing.Active |
false (EXPERIMENTAL) |
client | Optional buffered-interpolation smoothing; off by default (see Features above). |
Status panel
| Setting | Default | Side | Description |
|---|---|---|---|
Overlay.ToggleKey |
F6 |
client | Cycles the panel: hidden β Basic β Detailed β hidden. Remap it if another mod uses F6. |
Overlay.ShowOnStart |
false |
client | Open the Basic tab at the start of each session without pressing the key. |
Overlay.Opacity |
0.7 |
client | Panel background darkness, from 0.1 to 1. |
The panel's position, size, tab and open state are saved automatically in wubarrk.noodlesmcdoodles.overlay.cfg.
Every feature above ships on by default except the experimental buffered-interpolation smoothing mode, which ships off. Each has its own switch: turning one off returns just that piece to vanilla behaviour.
Bug reports and suggestions are genuinely wanted β Discord is the fastest way to reach me.
License: MIT β use, modify, and redistribute freely, including commercially; just keep the copyright notice. See
LICENSE.md for the full text.