v8.2.4
v8.2.3
v8.2.2
v8.2.1
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
Improved
[7.3.15] - 2026-08-28
Fixed
- Self-analysis conflict mode
Changed
[7.3.14] - 2026-08-27
Fixed
[7.3.13] - 2026-08-27
Fixed
[7.3.12] - 2026-08-27
Added
[7.3.11] - 2026-08-26
Changed
[7.3.10] - 2026-08-26
Changed
[7.3.9] - 2026-08-26
Changed
[1.0] - 2026-08-26
Added
- Initial project release
- Core mod features
1.0 update