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.
RunicWorldEngine
Monitor aggregate world and network activity while smoothing asynchronous saves to reduce avoidable save-related frame and server spikes.
By Chazman
| Date uploaded | 3 days ago |
| Version | 1.1.1 |
| Download link | Chazman-RunicWorldEngine-1.1.1.zip |
| Downloads | 187 |
| Dependency string | Chazman-RunicWorldEngine-1.1.1 |
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
Runic World Engine 1.1.0
A Valheim world is constantly synchronizing objects, changing state, communicating with peers, and saving to disk. When those systems collide with an expensive frame or overlapping save work, everyone can feel the hitch even though nobody did anything wrong.
Runic World Engine watches that infrastructure and smooths asynchronous saves. It provides bounded aggregate diagnostics while coordinating save preparation to reduce avoidable spikes.
Major features
- Observe aggregate ZDO population, peer counts, traffic, and lifecycle rates.
- Measure save and load call duration without scanning world contents.
- Coalesce overlapping asynchronous periodic save requests.
- Briefly defer save preparation after an already-expensive frame.
- Offer optional, rate-limited diagnostic summaries.
How it feels in-game
There is no new gameplay interface demanding attention. The world continues to save normally, but avoidable overlapping work and poorly timed preparation are reduced so persistence announces itself less dramatically.
Safety and compatibility
Valheim remains responsible for snapshot preparation and disk writing. Synchronous shutdown saves are never deferred, and periodic deferral has a hard maximum. World Engine never deletes, rewrites, compacts, reprioritizes, or force-sends world data; unknown mod data is preserved. It has no client UI or custom protocol and runs on dedicated servers with the same small footprint.
Authority and performance bounds
World-data handling remains conservative:
- it never deletes, rewrites, compacts, quarantines, reprioritizes, or force-sends a ZDO;
- unknown third-party data is always preserved;
- it creates no persistent world keys of its own;
- it publishes no registry, capability, protocol, ownership declaration, or cross-mod service;
- it has no client UI or asset load, so dedicated servers use the same small runtime;
- optional summaries are off by default and rate-limited to 5–600 seconds.
The observatory uses constant-time collection counts and event counters. It does not perform a base scan, sector walk, prefab enumeration, heat-map build, or save clone on the game thread. Save/load completion cannot force an extra sample through the one-second ceiling. A failed sample is discarded without changing world state or blocking any gameplay mod.
Save smoothing
Asynchronous periodic saves are coalesced while an earlier save is still active and their main-thread preparation is deferred briefly when the previous frame exceeded the configured frame budget. The deferral is bounded (five seconds by default), so a persistently busy server still saves. Synchronous shutdown saves are never deferred. The smoother never touches Unity objects from a worker thread; Valheim retains ownership of both snapshot preparation and its normal disk writer. This reduces avoidable save-time spikes, but no mod can promise a literally zero-frame hitch for every world size and storage device.
Configuration
| Setting | Default | Meaning |
|---|---|---|
General.Enabled |
true |
Enables aggregate observation; false creates no patches or observatory state. |
Diagnostics.LogPeriodicSummary |
false |
Writes bounded aggregate summaries. |
Diagnostics.SummaryIntervalSeconds |
30 |
Summary cadence, clamped to 5–600 seconds. |
Save Smoothing.Enabled |
true |
Coalesces overlapping asynchronous save requests and waits for a stable frame. |
Save Smoothing.FrameBudgetMilliseconds |
24 |
Preferred maximum previous-frame duration before save preparation starts. |
Save Smoothing.MaximumDeferralSeconds |
5 |
Hard maximum delay before a pending save must start. |
Planned later work—world heat maps, compaction, and synchronization scheduling experiments—is not claimed by 1.1.0 and remains disabled until separately designed and tested.
CHANGELOG
Changelog
1.1.1 - 2026-09-05
- Reworked the Thunderstore description and README opening to lead with the player problem, the mod's core benefit, major features, in-game feel, and then safety and compatibility details.
- Description-only package update. The plugin DLL and gameplay behavior are byte-for-byte unchanged from 1.1.0.
1.1.0 - 2026-08-31
- Added bounded main-thread save preparation smoothing for asynchronous periodic saves.
- Coalesces overlapping requests, never defers synchronous shutdown saves, and never accesses Unity objects from a background worker.
1.0.0
- Kept constant-time aggregate ZDO observability and interval event counters.
- Kept installed-Valheim-verified save/load timing hooks with exception-preserving finalizers.
- Made
Enabled = falsestartup-inert and deferred Harmony construction until after the setting gate. - Verified exact installed field shapes and kept load completion within the one-second sample ceiling.
- Removed the Core registry, capability, protocol, service, and world-data ownership declaration architecture; BepInExPack Valheim is the only runtime dependency.
- Preserved all unknown data and retained no deletion, compaction, or sync-scheduling path.