Skarif-ValheimPerformanceOverhaul icon

ValheimPerformanceOverhaul

Comprehensive performance optimization mod. Reduces CPU/GPU load via light culling, LOD system, AI throttling, distance culling, piece sleep management and more. Designed for large bases and busy servers.

Last updated 10 hours ago
Total downloads 150
Total rating 1 
Categories Mods Misc Server-side Client-side Utility Ashlands Update Bog Witch Update
Dependency string Skarif-ValheimPerformanceOverhaul-2.6.1
Dependants 1 other package depends on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2202 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2202

README

Valheim Performance Overhaul

A comprehensive performance optimization mod focused on reducing CPU and GPU load β€” especially on large bases, busy servers, and zones with many light sources.


Installation

Install via r2modman or Thunderstore Mod Manager (recommended) β€” everything is placed automatically.

Manual install:

  1. Install BepInExPack Valheim first.
  2. Copy ValheimPerformanceOverhaul.dll into BepInEx/plugins/.
  3. Launch the game β€” a config file is generated automatically at BepInEx/config/com.Skarif.ValheimPerformanceOverhaul.cfg.

What it does

πŸ”¦ Light Culling (biggest FPS impact)

  • Limits active light sources to a configurable maximum (default: 15).
  • Disables shadow casting beyond a set distance.
  • Light LOD system: transitions lights through Full β†’ No Shadows β†’ Emissive β†’ Billboard β†’ Disabled as distance increases.

πŸ’€ Distance Culler

  • Puts distant creatures and building pieces to "sleep" β€” pauses their Update logic.
  • Physics culling for Rigidbodies beyond a set range.
  • Configurable exclusions (e.g. portals, tombstones are never culled).

πŸ—οΈ Piece Optimization

  • WearNTear.GetSupport() results are cached with a configurable TTL.
  • Distant pieces skip their Update cycle entirely.
  • Asynchronous WearNTear initialization β€” spreads load over multiple frames on scene load.

πŸ€– AI Throttling

  • Monsters beyond 60 m update AI only every 5 seconds instead of every frame.
  • LOS (line-of-sight) checks are cached per-target with a 0.5 s timeout.
  • Idle tamed animals inside player bases enter a low-power mode.

🎨 Graphics Settings

  • Configurable shadow distance, resolution, and cascade count.
  • Bloom and screen-space reflections toggle.
  • Terrain quality multiplier.

🌿 Vegetation

  • Grass render distance and density control.
  • Detail object distance and density.

🎡 Audio Pooling

  • Reuses AudioSource components instead of creating new ones per sound effect.

♻️ Object Pooling

  • Reuses ItemDrop GameObjects to reduce instantiation overhead when loot spawns.

🧠 GC Control

  • Prevents Unity's garbage collection from firing during combat or movement.

⚑ JIT Warm-up

  • Pre-compiles critical game methods on spawn to eliminate the first-use stutter.

πŸ—ΊοΈ Minimap Optimization

  • Configurable texture resolution and update frequency.

Configuration

All settings are available in BepInEx/config/com.Skarif.ValheimPerformanceOverhaul.cfg.

If you have BepInEx Configuration Manager installed, press F1 in-game to adjust all settings with a GUI in real time.

Key settings

Setting Default Description
Max Active Lights 15 Max simultaneous light sources
Light Cull Distance 60 m Beyond this distance lights turn off
Creature Cull Distance 80 m Creatures sleep beyond this distance
Piece Cull Distance 100 m Building pieces sleep beyond this distance
Support Cache Duration 5 s How long structural support values are cached
Grass Density Multiplier 0.7 1.0 = vanilla, lower = fewer grass
Shadow Distance 50 m Maximum shadow render distance

Performance expectations

Results depend heavily on scene complexity. Typical gains:

Scenario Expected FPS gain
Open world, few structures ~5–10%
Medium base (50–100 pieces) ~10–20%
Large base (300+ pieces, 10+ light sources) ~20–40%
Busy server with many players/mobs ~15–30%

Compatibility

  • βœ… Works standalone β€” no other mods required.
  • βœ… Compatible with most content mods (Epic Loot, Jotunn-based mods, etc.).
  • ⚠️ If Object Pooling conflicts with a loot mod, disable it in config (4. Object Pooling β†’ Enabled = false).
  • ⚠️ The mod was created in collaboration with AI. Despite the fact that I conducted test runs in various situations, the mod is in BETA. Although the mod technically cannot break the world, it is advisable to make backups.
  • ❌ Does not support crossplay (Steam + Game Pass mixed sessions). Pure Steam servers are fine.

Changelog

2.6.0

  • Removed NetworkManager (ZSteamSocket-only, broke crossplay)
  • Removed ZDOOptimizer (potential desync risk on servers)
  • Fixed LightLODManager: removed duplicate ScanForLights() on Start
  • Fixed AdvancedLightManager: removed periodic FindObjectsByType scan every 5s (caused micro-freezes)
  • DistanceCuller refactored: all cullers now managed by one central Update loop instead of one Update() per object
  • PiecePatches: replaced ConcurrentDictionary with Dictionary (main thread only, 3–5x faster)
  • AsyncWearInit: added early exit when queue is empty

2.5.1

  • Initial public release