You are viewing a potentially older version of this package. View all versions.
Skarif-ValheimPerformanceOverhaul-7.3.11 icon

ValheimPerformanceOverhaul

Fps mod for Valheim.

Date uploaded 2 weeks ago
Version 7.3.11
Download link Skarif-ValheimPerformanceOverhaul-7.3.11.zip
Downloads 961
Dependency string Skarif-ValheimPerformanceOverhaul-7.3.11

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 icon
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.2333

README

⚡ Valheim Performance Overhaul (VPO)

FPS mod for Valheim.

CHANGELOG

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