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.
RustyHeathensServerSync
Rusty Heathens network diagnostics with dedicated-server Steam connection statistics and optional bounded scheduling. Valheim 1.0.20 / network 41.
| Date uploaded | 2 weeks ago |
| Version | 1.0.3 |
| Download link | RustyLaserGaming-RustyHeathensServerSync-1.0.3.zip |
| Downloads | 35 |
| Dependency string | RustyLaserGaming-RustyHeathensServerSync-1.0.3 |
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
Rusty Heathens ServerSync 1.0.3
Network diagnostics and guarded optional scheduling for Rusty Heathens servers.
What changed
Dedicated servers now query Steam's game-server networking API for ping, local/remote connection quality and traffic rates. Clients and listen hosts query the client API. The previous client-only getter could throw Steamworks is not initialized on a working dedicated server.
Summary lines include stats_source=steam-gameserver or steam-client, transport_stats_available and stats_status. A successful connected query reports actual measurements, including valid zeros. Missing, failed or unsupported readings show n/a, rather than fabricated zeros or stale values. Failed queries retry after 30 seconds and do not disable queue diagnostics or scheduling. Steam must already be initialized by the game; this mod never initializes it or opens extra connections. Non-Steam transports retain queue/frame diagnostics without claiming Steam statistics.
This release changes diagnostics only. Network packet formats, queue limits, peer order, object ownership, inventories and saves are unchanged. Runtime method fingerprinting remains absent.
Installation
Stop the server and close the game before replacing RustyHeathensServerSync.dll. Keep only one active copy under BepInEx/plugins. Install this version on the server for the dedicated-server statistics fix; clients can update to receive the clearer diagnostic output. Existing 1.0.2 clients use the same network protocol.
Keep BepInEx/config/com.rustylasergaming.serversync.cfg. No new config setting or plugin GUID is required. Existing mode and budgets carry over. Enable diagnostics to see measurements.
Modes and compatibility
Observe is the default for new configs and adds no send work. BoundedScheduler is an experimental dedicated-server option, bounded by call count, elapsed time, frame time and save cooldown. Clients stay observation-only. This update does not change scheduling behavior or automatically switch modes.
Reviewed game/network pairs remain 1.0.16/40, 1.0.17/40 and 1.0.20/41. Exact version and required member signatures are checked before installing scheduling hooks; unknown builds fail closed. Harmony-overlap checks remain active. Signature checks do not detect every same-version method-body change.
Build dependency: BepInExPack Valheim 5.4.2351. The plugin references the game's existing Steamworks.NET assembly; do not install or redistribute a replacement Steamworks DLL.
Validation
Compiled against supplied Valheim 1.0.20 references. Offline validation passed 32 scheduling/version tests, 11 binding tests and 23 transport tests. Transport tests use the production reader and formatting code with simulated API responses; they do not make native Steam calls. 20 compiled metadata checks also verified the API bindings, unchanged scheduling methods/hooks and absence of runtime fingerprinting (86 offline checks total).
The new native statistics query still needs live dedicated-server verification. After restart and a player joins, look for transport_stats_available=True stats_source=steam-gameserver stats_status=ok with numeric ping and rates. If unavailable, keep the stats_status value and send the log for diagnosis. Live latency improvement and Thunderstore approval are not established by these checks.
Source/build files are provided separately in RustyHeathensServerSync_1.0.3_SOURCE.zip. The install ZIP contains no source, tests, build tools, game DLLs or private server policy.
CHANGELOG
1.0.4
- Reviewed and enabled Valheim 1.0.21 / network 41.
- Retained version/signature checks and unknown-version rejection.
- No scheduling, transport or config behavior changes.
1.0.3
- Use SteamGameServerNetworkingSockets for dedicated-server connection statistics and SteamNetworkingSockets for clients/listen hosts.
- Report the statistics source and result; render unavailable values as n/a and preserve legitimate zeros.
- Isolate optional transport failures and retry unavailable statistics after 30 seconds without disabling the scheduler.
- Keep scheduling, version/signature guards and all existing settings unchanged.
- No runtime method fingerprinting or additional networking hooks.
Changelog
1.0.2 - 2026-10-15
- Remove runtime method fingerprinting, IL inspection and method hashes from the plugin DLL.
- Replace that check with exact supported game/network pairs and strict native method/field signatures.
- Reject missing or mismatched members before installing hooks. Retain scheduling limits and Harmony overlap handling.
- Preserve existing config modes and the Observe default.
- Keep install files and source in separate ZIPs.
1.0.1 - 2026-10-15
- Admit the reviewed Valheim 1.0.20 / network 41 pair.
- Retain method fingerprints, fail-closed handling for unknown versions, and all scheduling limits.
- Preserve existing config and the Observe default; no automatic switch to experimental scheduling.
- Rebuild against the supplied 1.0.20 assemblies and refresh reference hashes.
- Ship source separately from the install ZIP.
1.0.0 - 2026-10-07
- Add reviewed Valheim 1.0.17 / network version 40 compatibility while preserving 1.0.16/40 support.
- Replace the old single-version gate with a narrow game+network compatibility gate.
- Preserve runtime method-fingerprint guards for
ZDOMan.SendZDOToPeers2andZDOMan.SendZDOs; bounded scheduling disables itself if reviewed methods differ. - Keep future game/network versions fail-closed instead of forcing native hooks.
- Preserve Observe as the safe default for new configs and preserve existing BoundedScheduler configs on upgrade.
- No packet format, queue-limit, ownership, inventory, chest, world, or save-format changes.
0.1.2
- Dedicated-server Steam transport quality probing degrades gracefully when unavailable.
- Harmony patch invocation build fix.