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.
TerramizerServer
Dedicated-server performance companion for Terramizer with multi-peer coverage, prioritized ZDO streaming, ownership recovery, sleep tuning, and diagnostics.
By Terramizer
| Date uploaded | 3 weeks ago |
| Version | 0.5.0 |
| Download link | Terramizer-TerramizerServer-0.5.0.zip |
| Downloads | 55 |
| Dependency string | Terramizer-TerramizerServer-0.5.0 |
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.2333README
TerramizerServer
TerramizerServer is a dedicated-server performance companion for Terramizer. It improves world-state delivery and server-side object coverage for split-up players without requiring a client mod.
Compatibility
- Works with Terramizer
0.8.2, vanilla clients, or a mixture of both. - Uses no custom network protocol, handshake, or synchronized client configuration.
- Terramizer remains optional and client-side; TerramizerServer remains dedicated-server-only.
- Built against Valheim
0.221.12, Unity6000.0.61f1, and BepInEx5.4.23.3.
What it does
- Combines active object coverage for every ready peer.
- Predicts movement so server-side loading can prepare in the direction of travel.
- Prioritizes player, terrain, solid, explicitly prioritized, and nearby ZDO state.
- Applies socket backpressure and dense-area pauses to proactive zone-entry boosts.
- Deduplicates outgoing sync lists.
- Repairs narrowly validated stale ownership routes for removable build pieces and nearby item drops.
- Tunes sleep fast-forward while preserving the normal world-save policy by default.
- Skips unnecessary visual and audio initialization in headless mode.
- Reports synchronization, queue, streaming, ownership-repair, and stale-instance diagnostics.
Version 0.5.0 cleanup
Retired full peer-zone instantiation and mass persistent-ZDO ownership code has been removed, along with its obsolete settings and patches. Existing configs automatically drop those retired entries. The still-active coordination interval is now named StreamingUpdateIntervalSeconds under the Streaming section.
Installation
Install this package on the Valheim dedicated server only. The package places the DLL at:
BepInEx/plugins/TerramizerServer/TerramizerServer.dll
The generated config is:
BepInEx/config/r4v9n1.terramizerserver.cfg
Keep SkipSleepWorldSave = false unless you knowingly accept reduced save durability. Change one setting at a time and retain the BepInEx log when reporting performance or multiplayer interaction problems.
Created and maintained by R4V9N1.
CHANGELOG
Changelog
1.0.2
- Ported TerramizerServer to the current Valheim 1.0 dedicated-server API.
- Replaced the obsolete
Vector2izone model with Valheim 1.0Vector2s. - Replaced the removed
ZoneSystem.m_activeArea/m_activeDistantAreamodel withSimulationDistance. - Updated
ZDOMan.FindSectorObjectsfor the current Valheim 1.0 signature. - Updated ownership handoff logic for Valheim 1.0 world-position active-area checks.
- Updated ownership checks to use
ZDOMan.IsInPeerActiveArea. - Fixed the Valheim 1.0 sleep-save compatibility patch while preserving normal autosaves.
- Dedicated-server compatibility is now validated against the actual Linux server
assembly_valheim.dll. - Clean configuration required: delete
BepInEx/config/r4v9n1.terramizerserver.cfgbefore starting this version. - The previous TerramizerServer release contained Valheim 1.0 compatibility bugs and should not be used.
1.0.1
- Updated
Game.SleepStopcompatibility for the current Valheim 1.0 player-profile save API. - Leaves Valheim's own player-profile save completely untouched instead of depending on a specific
SavePlayerProfileoverload. - Continues to skip only the extra sleep-triggered world save while preserving the normal autosave timer.
- Rebuilt and repackaged against the current Valheim 1.0 dedicated-server assemblies.
1.0.0
- Rebuilt against the current Valheim 1.0 dedicated-server assemblies.
- Preserves bounded zone-entry prefetch, static-piece ownership, terrain handshake, fast sleep, and no extra sleep-triggered world save behavior.
0.6.9
-
Restores bounded server-side zone-entry ZDO prefetch for ready peers, prioritizing already-existing nearby objects so area and dungeon contents arrive sooner without creating peer zones or instantiating server-side scenes.
-
Enables Unity collision-callback reuse by default to reduce physics-heavy dedicated-server GC without changing simulation frequency; the setting is opt-out for compatibility.
-
Adds allocation-free
BinarySearchDictionary.SetValuehandling for hot value-type update paths, reducing avoidable server GC work without changing simulation or network authority. -
Caches the active ZDO integer table during
VisEquipmentupdates, reducing repeated server lookup work without changing equipment synchronization. -
Prefilters event-driven ownership probes by cached prefab eligibility, avoiding unnecessary component-tree walks for non-structure ZDO views during zone loading.
-
Writes nested
ZPackagedata directly from its existing buffer, reducing dedicated-server serialization allocations while preserving the exact length-prefixed wire format. -
Optimizes the periodic ZDO ownership handoff scan without changing active-area or ownership decisions; unexpected internal failures fall back to vanilla behavior.
-
Extend the final
TerrainComp.ApplyToHeightmap±8 m clamp so dedicated-server terrain changes consistently honor the configured 16 m raise and dig limits. -
Adds additive terrain capability metadata and a versioned six-field companion response while preserving the legacy three-field RPC for older clients.
-
Advertises unchanged server-synced companion metadata once per live
ZNetinstance instead of rewriting it on a timer, reducing needless dedicated-server update work while preserving late-joining client compatibility. -
Makes normal static-piece ownership event-driven; the legacy whole-world ZDO audit is disabled by default to protect dedicated-server frame time and network responsiveness.
-
Disables the periodic ownership-summary loop while the optional broad audit is disabled, removing needless normal-operation log work.
-
Prevents normal operation from loading or maintaining the ownership cache unless the audit is explicitly enabled.
-
Preserves dedicated-server fast sleep and the no-sleep-world-save policy.
-
Restores the terrain compatibility patch with 16 m raise and dig limits.
-
Applies the 16 m limit to both negative and positive terrain clamp operands, including direct
TerrainComp.RaiseTerraindigging. -
Removes retired server streaming and ownership-repair settings on load while preserving the new bounded streaming controls.
0.6.8
- Adds observed client/server test notes to the Thunderstore details, including freshly discovered dungeon load timings around 1.5-3.0 ms during the measured test pass.
- Documents that the server remained in ownership maintenance mode without TerramizerServer exceptions while dungeon discovery was tested.
- No runtime behavior changes intended relative to 0.6.7.
0.6.7
- Moves the human/AI development disclosure to the top of the Thunderstore details text so it is visible immediately.
- Documents AI-assisted code analysis and verification while retaining project-directed implementation and release decisions.
- No runtime behavior changes intended relative to 0.6.6.
0.6.6
- Adds a two-stage broad ZDO scanner: fast warm-up until the first full pass completes, then lower-cost maintenance scanning.
- Persists completed broad-scan pass count in the ownership cache so restarts can return to maintenance mode after warm-start when appropriate.
- Adds maintenance scan config for interval, claim limit, and ZDO records per pass.
- Extends compact ownership summaries with scan mode, pass count, interval, record budget, and claim limit.
0.6.5
- Adds an explicit Terramizer companion RPC response so clients can detect the server companion reliably.
- Keeps server-synced player-data metadata as a fallback for older Terramizer clients.
- Stops re-logging broad ZDO scan resume messages during normal in-session scanner progress.
- Changes watched per-object claim logging to off by default; the 30-second ownership summary remains the main view.
- Adds companion RPC reply counts to the compact ownership summary.
0.6.4
- Refreshes TerramizerServer companion metadata every 10 seconds instead of advertising only once.
- Persists broad ZDO scan progress in the ownership cache with scan index, object count, and timestamp metadata.
- Resumes the broad eligibility scanner from the cached scan index after restart when the cache is fresh.
- Adds the current
zdoScanIndexto compact ownership summaries for restart verification.
0.6.3
- Advertises TerramizerServer version, static-ownership state, and ownership-cache state through Valheim server-synced player data.
- Allows Terramizer clients to auto-detect the server companion and enable their companion smoothing profile without a custom RPC or required handshake.
0.6.2
- Added an ownership cache stored as
r4v9n1.terramizerserver.ownership-cache.tsvbeside the BepInEx config. - Records known eligible claimed ZDO ids with prefab hash, creator id, prefab name, and timestamp.
- On restart, warm-starts by direct cached ZDOID lookup and applies the new server session id to remembered pieces.
- Adds cache age, cache records per pass, and max restores per pass config.
- Extends the 30-second summary with cache restored, cache checked, cache entries, and cache removed counters.
0.6.1
- Changed claim logging defaults so every claimed piece is no longer logged on established worlds.
- Added watched-claim logging for sensitive interactive prefabs such as beds, chests, portals, fires, stations, signs, item stands, wards, doors, and gates.
- Changed the periodic dev summary to a compact 30-second view with interval claims, total claims, watched claims, skipped count, checked ZDO count, and attempts.
0.6.0
- Added an experimental static-piece server-ownership module for fresh-world dedicated server testing.
- Enabled the experiment by default and disabled dry-run mode by default for this test build.
- Preserves Valheim's player
creatorfield while changing ZDO network ownership to the server for eligible loaded pieces. - Limits claims to persistent, player-created pieces with
WearNTear. - Skips dynamic/physics-heavy objects such as ships, carts, dropped items, creatures, and floating objects.
- Added development claim logs and compact periodic ownership summaries.
- Added direct ZDO database scanning for dedicated-server testing when server-side
Piececomponents are not instantiated. - Keeps
WearNTear, terrain, world saves, object creation/removal, and active-area handling intact.
0.5.1
- Simplified the dedicated-server companion to a non-invasive Unity runtime optimization.
- Disabled Unity's development-only job debugger in batch mode without changing simulation behavior.
- Restored vanilla ZDO synchronization, object handling, active-area checks, ownership, structural support, terrain, sleep, and world-save behavior.
- Removed Harmony and Valheim game-assembly references from the server build.
- Automatically removes obsolete networking, streaming, world-object, ownership, sleep, and diagnostics config entries; the config does not need to be deleted.
- Retained compatibility with vanilla clients and Terramizer clients without a handshake or matching version.