Confirm with your password

TerramizerServer

Dedicated-server Valheim ownership/cache experiment. Human-directed, with AI-assisted code analysis and verification support.

Server-only

Stars
0
Downloads
1
Version
0.6.8
Updated
Author
Terramizer
Virus scan
✓ Scan successful
Runs on
Server-only

Description

TerramizerServer

TerramizerServer 0.6.8 is an experimental dedicated-server performance companion for Valheim.

It keeps the Unity job-debugger optimization and adds a fresh-world test feature that lets the server claim loaded static player-built structure pieces while preserving Valheim's creator field. WearNTear is not removed, and dynamic physics objects are skipped.

Development note

This mod is human-directed and built from human structure, concepts, ideas, client/server testing, and gameplay improvement goals. AI is used as an assisting tool for code analysis, optimization review, implementation refinement, and verification support, while final decisions, packaging, and in-game validation remain under human direction.

Created and maintained by R4V9N1.

Observed test results

During R4V9N1 fresh-world dedicated-server testing on 2026-08-22, the ownership cache and maintenance scan path produced the following measured behavior:

  • Newly discovered dungeon entries were observed loading on the client in roughly 1.5-3.0 ms across repeated tests.
  • Sample client timings included 41 rooms in 1.5241 ms, 35 rooms in 1.5031 ms, 36 rooms in 1.7994 ms, and 33 rooms in 2.0053 ms.
  • The slowest observed freshly tested dungeon load in that pass was still only about 3.0071 ms for 33 rooms.
  • The server stayed in maintenance mode during dungeon discovery, using a 30-second interval, 5,000 ZDO record budget, and 100 claim limit.
  • Server summaries remained stable while the client moved through newly discovered locations, with no TerramizerServer exceptions seen in the test logs.
  • Client shutdown was clean, and the server continued ownership maintenance afterward with companion replies dropping to 0 once no Terramizer client was connected.
  • The intended benefit is lower ZDO ownership churn and less client-side contention during active world/location streaming, especially after the first broad scan and cache warm-start have completed.

These numbers are real measurements from the test setup, not a universal guarantee. Results will vary with world size, mod list, hardware, loaded areas, and server configuration.

Version 0.6.8

  • Adds measured test-result notes to the Thunderstore details so server owners can understand the observed dungeon-load and maintenance-scan benefits.
  • No runtime behavior changes intended relative to 0.6.7.

Version 0.6.7

  • Adds the experimental static piece server-ownership module.
  • Enables the experiment by default for test-server use.
  • Preserves player creator metadata separately from ZDO network ownership.
  • Skips dynamic/physics-heavy objects such as carts, ships, dropped items, creatures, and floating objects.
  • Logs every ownership claim only when explicitly enabled.
  • Keeps per-object watched ownership claim logs off by default for large-world testing; they can still be enabled for focused debugging.
  • Adds a compact periodic ownership summary with 30-second claim totals.
  • Stores a restart ownership cache for known eligible claimed ZDOs.
  • Warm-starts restarts by direct cached ZDOID lookup, then assigns the current server session id without repeating the slow full eligibility scan for already known pieces.
  • Switches from fast warm-up scanning to lower-cost maintenance scanning after the first full broad ZDO pass.
  • Answers a lightweight companion RPC for reliable Terramizer client auto-detection.
  • Refreshes Valheim server-synced player-data metadata as a fallback for older Terramizer clients.
  • Persists the broad ZDO scan cursor in the ownership cache so large-world scanning can resume after restart.
  • Adds direct server ZDO database scanning so dedicated-server records can be tested even when Unity Piece objects are not instantiated server-side.
  • Keeps WearNTear intact.
  • Accepts vanilla clients, Terramizer clients, or a mixture of both.
  • Requires no matching client version. Vanilla clients can connect normally; the optional companion RPC is only used by Terramizer clients for auto-detection.

Install this package on the dedicated server only. The config file is:

BepInEx/config/r4v9n1.terramizerserver.cfg

You do not need to delete the config when updating.

Important config:

[ExperimentalOwnership]
EnableStaticPieceServerOwnership = true
DryRunStaticPieceServerOwnership = false
OwnershipScanIntervalSeconds = 5
MaxClaimsPerScan = 250
ZdoRecordsPerScan = 25000
MaintenanceOwnershipScanIntervalSeconds = 30
MaintenanceMaxClaimsPerScan = 100
MaintenanceZdoRecordsPerScan = 5000

[OwnershipCache]
EnableOwnershipCache = true
OwnershipCacheMaxAgeHours = 168
OwnershipCacheRecordsPerScan = 200000
MaxCacheRestoresPerScan = 5000
ResumeZdoScanFromCache = true

[DevLogs]
LogOwnershipClaims = false
LogWatchedOwnershipClaims = false
LogOwnershipSkips = false

Changelog

0.6.8 Latest
  • 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.
  • Adds a concise human-directed, AI-assisted development note to the package manifest description.
  • 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 zdoScanIndex to 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.tsv beside 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 creator field 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 Piece components 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.

Full version history & older downloads →

Manual installation instructions
1

Install BepInExPack Valheim

BepInExPack Valheim is required to run mods in Valheim.

Download BepInExPack Valheim 5.4.2333 · View mod page

Check out the mod page for detailed installation instructions.

2

Install TerramizerServer

This mod only needs to be installed on the server.

Download TerramizerServer 0.6.8

Extract the ZIP and place the file(s) into the BepInEx/plugins/ folder inside your Valheim game folder.