Fixed dedicated-server log spam caused by MissingFieldException: UpscaledFrameBuffer.m_autoTargetResolution in the GPU budget component.
GPU adaptive resolution, shadow budgets and scene renderer batching are now disabled unconditionally in batch mode or when no graphics device is available. Their components are never created on these runtimes, so Mono cannot JIT their client-only update methods. Configuration cannot override this restriction.
Preserved the existing graphics controls on clients with a graphics device.
Validation
Release build completed with no errors or warnings; existing compatibility and optimization checks passed.
Compiled IL checked to confirm both server guards skip creation of the rendering components with no configuration bypass. Live dedicated-server validation is pending.
v8.3.3
nothing
v8.3.2
nothing
v8.3.1
nothing
v8.3.0 - 2026-10-15
Added
Sector scene caching, structure dependency caching and a conservative dungeon-room collision broad phase.
Spatial batching for eligible stationary building renderers with a geometry-memory budget.
Optional native shadow limits and GPU-timed adaptive internal resolution.
The vpo_perf console command, optimization counters and dungeon-generation stage timings.
Fixed
Ukrainian configuration initialization, language-independent setting identifiers and migration of older localized values.
Generic particle, light and LOD optimization interfering with cold kilns and other production objects.
AI registry identifiers, generated LOD activation/transforms, and LOD cache versioning.
Conflicting second-pass ZDO sorting and unsafe ownership of statically batched game objects.
Targeted water MaterialFader compatibility and readable NavMesh geometry fallback.
Changed
Updated Normal terrain distances and frame-budget defaults; previous matching defaults migrate once with a config backup.
Removed global GC/asset-unload suppression, global PhysX solver overrides and skipping of complete character physics/liquid-depth updates.
Disabled deferred vegetation generation to preserve atomic zone completion.
Replaced outdated README claims with current behavior, controls, quality tradeoffs and known limitations.
Packaged the current build as BepInEx/plugins/ValheimPerformanceOverhaul.dll, with plugin/file version 8.3.0.
Validation and limitations
Release build: no errors or warnings; 108 Harmony target/injection checks, 18 field checks and three exact IL redirect checks.
Geometry broad phase checked against independent SAT on 20,000 randomized box pairs; config migration and GPU-resolution policy checks passed.
Dungeon generation remains synchronous. FPS gains, all loading hitches and dedicated-server behavior have not been validated in-game for this release.
v8.2.6
nothing
v8.2.5
nothing
v8.2.4
nothing
v8.2.3
nothing
v8.2.2
nothing
v8.2.1
nothing
Changelog
[8.2.0] - 2026-09-18
Added
Added configurable vegetation spawn time budget per frame (0.5–10.0 ms) with profile-specific values for Potato, Normal, and High presets.
Added distant-terrain LOD improvements with configurable camera far-clip distance and terrain LOD transition multiplier.
Added configurable fog-distance multiplier with environment update integration to reveal distant terrain and islands more clearly.
Added fast, allocation-free clear-area checks for vegetation spawning using cached area bounds instead of per-point reflection calls.
Added safer player animator reset and restoration helpers for runtime configuration changes.
Changed
Replaced the terrain mesh heightmap cache and its LRU memory-management implementation with direct terrain LOD and camera-distance controls; terrain regeneration is no longer intercepted to read/write cached meshes.
Removed terrain-cache configuration entries and replaced them with distant-terrain, camera far-clip, terrain LOD blend, vegetation budget, and fog-distance settings.
Updated runtime configuration synchronization and conflict-guard mappings for the new terrain, fog, and vegetation modules.
Optimized vegetation time-slicing: nearby sectors and initial world loading can use the configured maximum budget, while task processing uses tighter frame-budget thresholds and smaller safety margins.
Improved vegetation spawning lifecycle handling by removing delayed retry-frame termination, preserving task state across slices, and avoiding Ghost-mode object instantiation for networked vegetation.
Updated vegetation clear-area processing to copy private area center/radius data once and perform fast bounds checks during placement.
Added camera far-clip application during camera initialization and refreshed terrain LOD settings when configuration changes.
Tuned automatic optimization profiles: vegetation budgets are set to 1.5/3.5/6.0 ms, camera distances to 2200/3000/3500 m, terrain LOD multipliers to 1.0/1.25/1.5, and fog multipliers to 1.0/1.5/2.0 for Potato/Normal/High profiles.
Tuned frame-budget physics deltas and retained conservative frame-throttling behavior for low-FPS systems.
Updated animation handling so combat, bow drawing, dodging, minor actions, staggering, and blocking are never accelerated or switched into unscaled animation behavior.
Movement animation compensation is now limited to walking, running, and swimming, with a maximum speed adjustment of 1.35; normal animation speed is restored outside those states.
Updated runtime toggles to restore vanilla animator behavior when the frame-budget or unscaled-animation options are disabled.
Adjusted compatibility handling to disable the new terrain mesh patches and manager rather than the removed terrain cache module.
Fixed
Removed the slow-motion effect from player movement animations during frame-time compensation without affecting combat animation timing or combo transitions.
Prevented combat animations from being interrupted or modified by the optional unscaled-animation logic.
Fixed animation state initialization by resetting spawned player animators to Unity's normal update mode and speed.
Improved distant terrain visibility by extending the camera horizon, delaying terrain LOD transitions, and preventing incompatible default-layer culling behavior.
Reduced excessive fog obscuring distant mountains and islands while preserving a safety floor for fog density.
Fixed vegetation spawning checks in clear areas without relying on the removed reflective InsideClearArea delegate.
Fixed networked vegetation handling so Ghost-mode generation does not leave unintended instantiated objects behind.
Improved vegetation task behavior when heightmaps are temporarily unavailable by keeping the task alive until the data becomes available.
Avoided applying GPU instancing to terrain, water, and particle shaders that do not support the standard instancing path.
Improved
Lower runtime memory use and terrain-generation complexity by removing the 717-line terrain mesh cache implementation and its associated mesh-data copies.
Improved camera and terrain rendering consistency in large-world scenes through coordinated far-clip, LOD, layer-culling, and fog settings.
Improved vegetation spawn throughput near the player while retaining frame-time control for distant sectors.
Improved compatibility diagnostics and module isolation for terrain, fog, and vegetation Harmony patches.