Valheim

v8.3.5

  • nothing

v8.3.4 - 2026-10-21

Fixed

  • 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.

Removed

  • Terrain mesh cache module, LRU cache, cache invalidation hooks, cached heightmap mesh data, and cache memory-limit configuration.
  • Legacy terrain-cache references from Plugin, RuntimeConfigDispatcher, AutoOptimizationProfile, ModConflictGuard, and generated combined output.
  • Player animation mode switching that could affect combat states; replaced with combat-safe movement-only compensation.

[8.1.0] - 2026-09-17

Added

  • Improved chunk pregeneration flow for better zone spawning stability
  • Server/host validation before world pregeneration starts
  • Retry logic for zone generation using ghost spawn mode to avoid unstable generation attempts
  • Additional safeguards to prevent invalid LOD generation for terrain and system prefabs
  • Local player animator synchronization for pause and attack states when unscaled animation mode is enabled
  • Startup intro/logo skip logic for smoother menu navigation
  • Legacy config cleanup support with one-time purge flags

Changed

  • Reduced chunk generation delay and tuned FPS thresholds for better low-end compatibility
  • Switched pregeneration queue from Vector2i to Vector2s to match the game zone system
  • Updated reflection targets from PokeLocalZone to SpawnZone with IsZoneGenerated verification
  • Increased heavy frame skip threshold and refined frame budget safety margins
  • Adjusted throttling values to reduce false positives on weak but stable PCs
  • Disabled spherical layer culling to prevent landscape disappearance near screen edges
  • Restricted GPU instancing to compatible shaders only
  • Improved LOD layer inheritance and shadow behavior for generated meshes
  • Updated render optimizer to target the dedicated small-props layer instead of the default layer
  • Refined compatibility and spawn validation logic for terrain and world-generation systems

Fixed

  • Zone generation failures caused by outdated reflection targets and invalid game API usage
  • Early LOD disappearance and conflicts with terrain/render systems
  • Animator desync during pause and attack sequences
  • False-positive performance throttling under normal low-FPS conditions
  • Terrain, water, and particle shader compatibility issues in GPU instancing
  • Intro/startup scene issues that could delay the main menu

Improved

  • Stability of world pregeneration and zone creation
  • Overall compatibility with lower-end hardware
  • LOD filtering for terrain and system prefabs
  • Render reliability in large-world scenes and camera culling scenarios

Removed

  • Deprecated reflection-based generation paths replaced by safer runtime checks
  • Old config cleanup patterns in favor of the new non-invasive runtime handling

[8.0.0] - 2026-09-16

Added

  • Framework identifier system to exclude system libraries (Jötunn, BepInEx, Harmony, MonoMod, ServerSync, etc.)
  • IsIgnoredFramework() method for filtering system frameworks
  • DisableModuleInMemory() method for safe in-memory module disabling without config file modification
  • UnpatchClass() method to physically remove installed Harmony hooks from memory
  • GetPatchTargetTypes() method to extract real game type targets
  • IsEligibleForStaticBatch() validation system with multi-level checks
  • Prefab batch eligibility cache (s_PrefabBatchEligibilityCache) to prevent repeated GetComponent calls
  • Alternative biome support (AltBiome) with parent biome linking and vegetation blocking
  • Vegetation surround check system for intelligent spawn point selection
  • Collider refresh after network object scale changes
  • LegacyConfigCleaner for automatic cleanup of old config files on first launch
  • PlayerPrefs flag system for one-time cleanup (VPO_Legacy_Configs_Purged_v1)

Changed

  • Conflict detection logic now point-based - checks specific methods (UpdateAI, PlaceVegetation, SaveWorld, etc.) instead of substring search
  • Replaced string-based _disabledTargetTypeNames with type-based _disabledTargetTypes
  • AsyncSaveModule simplified - now relies on built-in ZNet.IsSaving() and m_saveThread
  • NetworkOptimizer migrated from Reflection to Steam API (SteamNetworkingUtils.SetConfigValue())
  • Smoke fade timer logic reordered for proper state transitions
  • Batch eligibility validation now includes checks for:
    • Moving systems (doors, containers, ships, wagons)
    • Collectible resources (plants, trees, ore)
    • Animated objects and cloth simulation
    • Valid mesh presence
  • Vector2i _zoneID changed to Vector2s _zoneID in vegetation spawning
  • Harmony patch application moved from ZSteamSocket constructor to RegisterGlobalCallbacks()
  • Plugin GUID: "com.Skarif.ValheimPerformanceOverhaul_NEW" → "com.Skarif.ValheimPerformanceOverhaul_WATER"

Fixed

  • Heightmap _setDirty method signature: Action<Heightmap, bool> → Action<Heightmap, int>
  • Heightmap Poke() method signature with new int parameter before bool
  • Smoke fade timer duplicate state transition logic
  • Biome-aware vegetation spawning with AltBiome parent validation
  • Data rate configuration in network module using proper pinned memory handling

Removed

  • SetConfigValue() and DisableModuleAndConfig() methods - replaced with non-invasive DisableModuleInMemory()
  • Async file operations from AsyncSaveModule (SaveStreamAsync, full synchronization control)
  • Patches on GetSaveClone() and PlayerProfile.Save()
  • Reflection-based access to private ZSteamSocket fields
  • Experimental StructuralBatcher class (ENGINE/.cs)

[7.3.16] - 2026-09-09

Added

  • Configuration parameters (2 new params)

Fixed

  • Lox idle behavior

Improved

  • Batching system

[7.3.15] - 2026-08-28

Fixed

  • Self-analysis conflict mode

Changed

  • Template system updates

[7.3.14] - 2026-08-27

Fixed

  • Teleport terrain loading

[7.3.13] - 2026-08-27

Fixed

  • Self-analysis module

[7.3.12] - 2026-08-27

Added

  • Batching functionality

[7.3.11] - 2026-08-26

Changed

  • Pre-release preparations

[7.3.10] - 2026-08-26

Changed

  • Pre-release preparations

[7.3.9] - 2026-08-26

Changed

  • Pre-release preparations

[1.0] - 2026-08-26

Added

  • Initial project release
  • Core mod features

1.0 update

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.