
ValheimPerformanceOverhaul
Performance optimizations for large bases, world streaming, rendering and creature updates.Valheim Performance Overhaul — 8.3.0
VPO adds configurable optimizations for large bases, world streaming, dungeon generation, rendering and distant creatures. It includes an in-game settings menu, optimization presets and a compatibility guard for overlapping mod patches.
Performance depends on the scene, hardware and other mods. This release does not promise a fixed FPS increase or the removal of every loading freeze. Rendering options can trade visual quality for performance.
Installation and controls
Install with dependencies through Gale, r2modman or Thunderstore Mod Manager. For manual installation, install denikson-BepInExPack_Valheim and copy BepInEx/plugins/ValheimPerformanceOverhaul.dll from the package into your Valheim installation.
When updating, remove older copies of VPO, including a manually installed ValheimEngineOptimizer.dll. Keep one VPO plugin DLL. Restart the game after replacing the DLL.
| Control | Function |
|---|---|
| F6 | Open the built-in settings menu. |
| F7 | Toggle a batching anchor at the player's position. |
| F1 | Edit settings if a separate Configuration Manager is installed. |
vpo_perf |
Print optimization counters and GPU timing availability to the game console. |
What's new in 8.3.0
- Sector Scene Cache: skips repeated full scene scans while sectors are unchanged. New objects, sector changes and pending loads keep the normal processing path; a periodic audit covers changes without known events.
- Structure Dependency Cache: reuses support results only while observed neighbors, collider geometry, transforms and ownership remain unchanged. Construction, destruction and terrain support invalidation reset the cache. The game's support formula remains in control.
- Dungeon collision broad phase: rejects clearly separated room boxes before the exact physics test. Room ordering and random seeds remain unchanged. Dungeon generation still runs synchronously and can still cause a loading hitch.
- Base renderer batching: batches eligible stationary building renderers in small spatial groups, while retaining their original objects, colliders, active states and individual material overrides. Moving, animated and interactive parts are excluded. A vertex budget limits additional geometry memory.
- Shadow budget: optionally limits shadow distance and the number of point-light shadows through the native lighting system. This reduces shadow quality; it does not turn on cold furnaces or their effects.
- GPU adaptive resolution: uses the native scaled framebuffer when valid GPU timings are available. The default internal scale is 75–100%, with slow adjustments and CPU-bound-frame protection. The UI stays at display resolution. If GPU timings are unavailable, the controller does not reduce resolution.
Fixes and changes
- Fixed incomplete Ukrainian configuration caused by apostrophes in translated BepInEx section names. Persisted identifiers are now English, while the F6 interface and descriptions remain localized. Legacy localized settings are migrated.
- Protected kilns, smelters, blast furnaces, cooking stations and fireplaces from generic particle/LOD optimization. Their production scripts retain control of active effects. Furnace lights are excluded from generic light culling.
- Added a targeted guard for water
_MainTex_STreads inMaterialFaderand a readable-geometry fallback for NavMesh sources. Unsupported mesh formats or unavailable GPU readback retain the vanilla source and produce a diagnostic. - Fixed the AI optimizer registry ID, generated LOD activation/transforms and LOD cache versioning.
- Removed the second ZDO sort that overwrote the game's per-peer ordering and forced-send priorities.
- Removed global interception of
GC.CollectandResources.UnloadUnusedAssets, global PhysX solver changes, and skipping of complete character physics or liquid-depth updates. - Deferred vegetation spawning is disabled. The game completes zone generation atomically to avoid recording partially generated vegetation as finished. This release does not contain the old terrain RAM/LRU cache.
Presets and configuration
| Preset | Intended behavior |
|---|---|
| Potato | Stronger quality/performance compromises for low-end systems. |
| Normal | Balanced optimizations, ordinary terrain distances, shadow limits and GPU adaptive resolution. |
| High | More visual detail; the new shadow cap and adaptive resolution are disabled by the preset. |
Configuration: BepInEx/config/com.Skarif.ValheimPerformanceOverhaul_WATER.cfg.
The new options are in 11. Large Scene Optimizations. On the first upgrade, matching previous Normal defaults are migrated to the revised distances and frame-budget settings. Non-default numeric values and High are preserved. The previous config is backed up with the suffix .pre-8.1.0.bak; that suffix identifies the migration introduced during development.
Most switches apply during gameplay. Changes to already modified prefabs, generated LODs or completed static batches can require a world reload or game restart. Disabling a batching switch stops new batches; it does not rebuild existing ones immediately.
Other modules
VPO also includes configurable GPU upload settings, texture mip streaming, compatible-material instancing, camera caching, distant non-combat AI throttling, path-request limits, visual creature LOD, tamed-animal idle behavior, smoke/torch options, pooling for selected hit effects, minimap throttling and Steam send-rate settings.
The save module respects Valheim's existing background save implementation and preserves synchronous shutdown saves. GC latency mode and JIT warm-up are best-effort runtime features. Raising process priority or upload buffers is not a guaranteed speedup. Texture streaming affects assets prepared for streaming.
The compatibility guard can disable overlapping subsystems and includes rules for Expand World, CLLC, ValheimRAFT and PlanBuild. It reduces known conflicts rather than guaranteeing compatibility with every modpack. Some settings are client-only; host/ownership checks govern world simulation features. Dedicated-server behavior has not been fully validated for this release.
Diagnostics and world pregeneration
Enable Log Large Scene Diagnostics for periodic counters and timing breakdowns of dungeon generations longer than 50 ms. Compare the same base, camera and weather before and after changing options; counters are not FPS measurements.
vpo_perf
vpo_chunky_start <radius> # Host/server only; maximum radius 40
vpo_chunky_stop
vpo_chunky_status
Chunky generates zones in advance and pauses below its configured FPS threshold. Each individual zone/dungeon generation remains synchronous, so pregeneration can itself produce hitches.
Support
Discord: skarif_q · Steam: Skarif_W · Ko-fi
Русское описание
Valheim Performance Overhaul 8.3.0 добавляет настраиваемые оптимизации больших баз, загрузки мира, генерации подземелий, отрисовки и далёких существ. Есть меню F6, профили и защита от известных конфликтов модов. Фиксированный прирост FPS и полное отсутствие фризов не гарантируются: результат зависит от сцены и оборудования, а часть графических настроек снижает качество ради производительности.
Установка и управление
Установите мод с зависимостями через Gale, r2modman или Thunderstore Mod Manager. Вручную: установите BepInExPack Valheim и поместите ValheimPerformanceOverhaul.dll из архива в BepInEx/plugins.
При обновлении удалите прежние копии VPO, включая вручную установленную ValheimEngineOptimizer.dll. Оставьте одну DLL мода и перезапустите игру.
- F6 — встроенное меню.
- F7 — переключение якоря батчинга базы.
- F1 — настройки через отдельно установленный Configuration Manager.
vpo_perf— счётчики оптимизаций и доступность замеров GPU в консоли игры.
Основные изменения
- Кэш секторов сокращает повторные полные обходы неизменившейся сцены, сохраняя обработку новых объектов и незавершённой загрузки.
- Кэш зависимостей опор проверяет соседей, геометрию, трансформации и ownership. Изменения построек/terrain сбрасывают результат; формула прочности остаётся игровой.
- Генератор подземелий отбрасывает заведомо непересекающиеся комнаты перед точной физической проверкой. Генерация всё ещё синхронная и может вызывать фриз.
- Подходящие неподвижные детали базы объединяются небольшими группами с ограничением памяти. Игровые объекты, коллайдеры и индивидуальные состояния сохраняются; подвижные, интерактивные и анимированные части исключаются.
- Бюджет теней ограничивает их дальность и число локальных теневых источников через родную систему. Это уменьшение качества теней.
- Адаптивное внутреннее разрешение использует родной framebuffer и доступные GPU timings. По умолчанию диапазон 75–100%; интерфейс сохраняет разрешение экрана. При недоступных замерах или явном упоре в CPU модуль не снижает разрешение.
- Исправлены украинский конфиг, ID кэша ИИ, активация/координаты LOD и повторная сортировка сетевых объектов. Ключи cfg теперь стабильные английские; F6 и описания локализуются, прежние значения переносятся.
- Печи, плавильни, доменные печи, кухни и камины защищены от общего оптимизатора частиц/LOD; их скрипты управляют рабочими эффектами. Свет печей исключён из общего куллинга.
- Добавлены защита чтения
_MainTex_STводы в MaterialFader и восстановление readable-геометрии NavMesh. Если формат меша или GPU readback не поддерживается, остаётся ванильный источник с диагностикой. - Убраны глобальная подмена PhysX, запреты GC/UnloadUnusedAssets и пропуск полного физического обновления персонажей/глубины жидкости.
- Отложенный спавн растительности отключён: завершение генерации зоны остаётся атомарным. Старого RAM/LRU-кэша terrain в этой версии нет.
Настройки
Файл: BepInEx/config/com.Skarif.ValheimPerformanceOverhaul_WATER.cfg. Новые опции: 11. Large Scene Optimizations.
Potato сильнее снижает качество; Normal использует обычные дистанции terrain, бюджет теней и адаптивное разрешение; High сохраняет больше деталей и отключает новые ограничения теней/разрешения.
При первом обновлении совпадающие прежние штатные значения Normal мигрируют, нестандартные числовые значения и High сохраняются. Перед сохранением создаётся копия cfg с суффиксом .pre-8.1.0.bak — это обозначение миграции, появившейся при разработке обновления.
Для уже изменённых prefab, готовых LOD и статических батчей может понадобиться перезагрузка мира или игры. Выключение батчинга останавливает новые объединения, но не отменяет готовые сразу.
Дополнительно сохранены настройки текстур/GPU upload, кэш камеры, ограничение далёкого небоевого ИИ и запросов путей, визуальный LOD существ, сон приручённых животных, настройки дыма/факелов, пул отдельных VFX, миникарта и сеть. Асинхронное сохранение использует родной поток Valheim и сохраняет синхронный выход. JIT/GC зависят от runtime; приоритет процесса и размер буфера сами по себе не гарантируют ускорения.
Защита совместимости учитывает известные конфликты, но не гарантирует работу любой сборки. Часть функций работает только на клиенте; функции симуляции учитывают host/ownership. Работа этой версии на dedicated server полностью не проверена.
Log Large Scene Diagnostics включает периодические счётчики и замеры этапов генерации подземелий дольше 50 мс. Команды vpo_chunky_start <радиус>, vpo_chunky_stop и vpo_chunky_status управляют предгенерацией на host/server. Предгенерация переносит работу заранее, но отдельная зона всё равно может вызвать фриз.