You are viewing a potentially older version of this package. View all versions.
Swmarly-SwmarlyValheimNetworking-0.1.22 icon

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-5.4.2350 icon
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.2350

README

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_networkVersion and network version 40.
  • Validate the verified bool ZDOMan.SendZDOs(ZDOPeer, bool) signature.
  • Keep client-only ZSyncTransform.SyncPosition IL 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.