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.
SwmarlyValheimNetworking
Unified Valheim networking and dedicated-server performance mod combining adaptive transport, dirty-set synchronization, compression, server tuning, and optional client smoothing.
| Date uploaded | 2 weeks ago |
| Version | 0.1.22 |
| Download link | Swmarly-SwmarlyValheimNetworking-0.1.22.zip |
| Downloads | 44 |
| Dependency string | Swmarly-SwmarlyValheimNetworking-0.1.22 |
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.2350README
Swmarly Valheim Networking
Server-first BepInEx 5 networking and performance support for Valheim.
Features
- Fair per-peer ZDO scheduling and bounded bulk send budgets.
- Queue back-pressure and per-peer transport diagnostics.
- Optional negotiated Zstandard compression with vanilla-peer fallback.
- Dirty-set synchronization for ordinary rounds with full-scan recovery.
- TargetPortal 1.2.6 compatibility: dirty synchronization remains active between event-driven, destination-centered vanilla travel windows.
- Server frame, save, GC, object-creation, ownership, and support-physics safeguards.
- PeerTelemetry, Telemetry, and persistent StatsLog diagnostics.
Compatibility
Version 0.1.22 targets Valheim 1.0.7/network 39 and Valheim 1.0.12/network 40 with BepInEx 5.4.2350; its base runtime contract is the verified 0.1.13 surface. Unknown or structurally changed builds remain vanilla until reviewed and added to the allow-list.
TargetPortal is a soft dependency. When it is present, the client sends a travel notice before Player.TeleportTo, and the server uses a destination-centered vanilla CreateSyncList window only for that peer. Vanilla old-area invalidation runs before dirty synchronization resumes. A peer without the client capability remains on the complete vanilla path. The other networking, queue, compression, and performance modules remain enabled. Set Sync/TargetPortalAwareSync=false for the diagnostic full-vanilla mode.
TargetPortal diagnostics use the [TargetPortalBridge] prefix and log state changes only: hook/RPC setup, connection-gated hello send/acknowledgement, peer readiness, vanilla sync fallback, travel notice received, window open/arrival, timeout reconciliation, and window close. Normal sync rounds are not logged.
Installation
Install the package contents into BepInEx/plugins/SwmarlyValheimNetworking/. Do not run overlapping networking/map mods beside it; foreign Harmony owners are intentionally refused.
The generated config is BepInEx/config/Swmarly.ValheimNetworking.cfg.
Diagnostics
StatsLog writes stats-YYYY-MM-DD.jsonl and events-YYYY-MM-DD.jsonl under BepInEx/config/smoothserver/stats/ by default. Use the repository's tools/analyze.py to correlate frame spikes, peer queues, budgets, saves, GC, and ZDO rates.
CHANGELOG
Changelog — Swmarly Valheim Networking
0.1.9 — forward-compatible runtime validation
- Compatible Valheim hotfixes and minor updates can remain active when the validated runtime surface is unchanged.
- Fundamental method, field, signature, Steam API, or asserted-IL changes still fail closed.
- KnownGoodBuilds remains an explicit verification record rather than the only activation gate.
0.1.8 — Valheim 1.0.12 runtime compatibility
- Recognize Valheim 1.0.12
Version.c_networkVersionand network version 40. - Validate the verified
bool ZDOMan.SendZDOs(ZDOPeer, bool)signature. - Keep client-only
ZSyncTransform.SyncPositionIL checks out of dedicated-server preflight. - Preserve the explicit known-build allow-list and fail-closed behavior.
0.1.7 — release version correction
- Corrected the plugin, project, and Thunderstore package version to 0.1.7.
- No networking behavior or compatibility policy changed in this version.
0.1.4 — TargetPortal compatibility
- Automatically keeps vanilla ZDO sync-list handling when TargetPortal is loaded, preserving TargetPortal's forced portal advertisements and correct player removal after portal travel.
- The remaining networking, queue, compression, and performance modules stay enabled.
0.1.3 — portal sync fix
- Preserve vanilla invalid-sector removal when dirty-set synchronization drops a known ZDO outside a peer's active area, preventing players from remaining visible at their old portal.
0.1.2 — safer defaults
- Shared server-side map synchronization is now disabled by default.
- The optional map self-test is also disabled by default.
0.1.1 — compatibility and safety pass
- Fail closed on unknown game builds and detected overlapping networking/map mods.
- Added live module enable/disable lifecycle handling.
- Hardened compression handshakes, malformed-frame handling, shared-map validation, and map saves.
- Fixed package license notices and updated the BepInEx dependency to 5.4.2350.
0.1.0 — Valheim 1.0.7 / network version 39
- Initial unified release for Valheim 1.0.7.
- One BepInEx plugin identity combining the compatible transport, synchronization, server-performance, and client-smoothing features selected from SmoothServer, ValheimTune, and FiresGhettoNetworking.
- Safe compatibility gate: unsupported game builds leave replacement patches inactive instead of continuing against unknown method layouts.
- Vanilla clients remain supported by default; shared compression activates only after a safe per-peer handshake.