Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
| Date uploaded | 2 days ago |
| Version | 8.2.4 |
| Download link | Skarif-ValheimPerformanceOverhaul-8.2.4.zip |
| Downloads | 2849 |
| Dependency string | Skarif-ValheimPerformanceOverhaul-8.2.4 |
This mod requires the following mods to function
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.2333README
⚡ Valheim Performance Overhaul (VPO)
Valheim Performance Overhaul (VPO) — an ultimate low-level Unity engine optimization suite for Valheim. The mod completely reworks the game's internal systems: memory, PhysX, garbage collection (GC), terrain mesh generation, base batching, AI calculations, GPU buffering, and hardware light culling.
Includes a built-in in-game settings menu (F6), static building batching (F7), one-click optimization profiles, and an automatic compatibility shield that disables conflicts with other mods on the fly.
🎮 Quick Start and Hotkeys
| Key | Function | Description |
|---|---|---|
| F6 | Settings Menu | Opens the mod's visual configuration window with instant application of changes (Hot-Reload). |
| F7 | Base Batching Point | Saves or toggles the automatic mesh merging anchor at the current world position. |
🚀 One-Click Optimization Profiles
Choose the appropriate preset directly from the menu (F6) without restarting the game:
- 🥔 Potato (Max FPS): For low-end PCs, laptops with integrated graphics, and handheld consoles (Steam Deck). Maximum AI tick compression, physical LOD for mobs, fire and smoke particle optimization, and strict frame budget control.
- ⚖️ Normal (Basic Balance): Recommended for most configurations. 25–45% FPS increase, elimination of micro-stutters, and smooth frame-time distribution without noticeable visual quality loss.
- 💎 High (Vanilla+): For powerful systems. Preserves original graphics quality while enabling asynchronous world saves, JIT warm-up, and memory leak protection.
🛠️ Detailed Mod Features Overview
⚡ Engine Core and Multithreading (Engine & I/O)
- Async GPU Upload: Expands the default texture and mesh upload buffer from 4 MB to 16–512 MB, increasing the time slice from 2–33 ms. Eliminates stuttering when moving quickly between biomes.
- Valheim.exe Process Priority: Automatically sets the process priority at the operating system level (High or Above Normal).
- Main Thread Priority: Raises the system priority of the main rendering thread to prevent micro-delays when background Windows programs are under load.
- Fine-Tuned PhysX: Optimizes solver iteration counts and rigidbody sleep thresholds (Sleep Threshold), reducing CPU load from the physics of falling debris and branches.
- Skip Intro Logos: Launches the game directly into the main menu without intro splash screens.
🧠 Memory, Smart Garbage Collection (GC), and Asynchronous Saves
- Async World Save: Completely eliminates game freezes during autosaves. Data is cloned in memory and written in a background thread to
.vpotemp→.old→ the target world file. - Smart GC Low-Latency Mode: Switches the .NET garbage collector to
GCLatencyMode.LowLatencywhile running, jumping, swimming, fighting, and teleporting. Full memory cleanup calls andResources.UnloadUnusedAssets()are blocked until the player is safe. - JIT (Just-In-Time) Warm-up: Compiles heavy combat, inventory, damage, and GUI methods in advance during startup, eliminating the first freeze when attacking or opening the map.
- Safe Periodic Cleanup: Runs gentle background unloading of unused assets and garbage collection every 10 minutes, preventing memory leaks during multi-hour sessions.
⏱️ Frame-Time Protection and Physics Stabilization
- Frame Budget Guard: Continuously measures rare frame-rate drops (1% Low). When a severe drop occurs, it dynamically clamps
Time.maximumDeltaTime, preventing the physics engine from entering a "slow-motion effect" and triggering a chain reaction of lag. - Independent Player Animations: Switches the character animation component to
AnimatorUpdateMode.UnscaledTime— movement and character responsiveness remain smooth even when overall FPS drops. - Task Queue Time-Slicing (ISliceableTask): Allows heavy mod modules to execute tasks in batches within a strictly defined millisecond-per-frame limit.
🌲 Vegetation and Terrain RAM Cache
- LRU Terrain Mesh Cache (RAM): Stores generated height meshes, ocean depth maps, biome data, and ground paint masks in RAM (configurable size: 8–256 MB). Re-entering an area is instant, without repeated mathematical calculations.
- Dynamic Invalidation: Fully compatible with pickaxes, cultivators, and terrain modification mods (
TerrainComp). Modified sectors are automatically recalculated and updated. - Smooth Vegetation Spawning (Vegetation Slicing): Spawning trees, stumps, and bushes no longer freezes the game when entering a new sector — it is distributed across small batches per frame while preserving the deterministic world seed.
- Clutter Optimization: Optimizes the rendering distance and density of procedural grass and rocks.
🏰 Static Batching of Bases and Mega-Builds
- Sector-Based Geometry Merging: Merges static base building elements into unified optimized Unity meshes (
StaticBatchingUtility) within 64x64 m zones. Reduces Draw Calls on large bases from several thousand to just a few dozen. - Base and Bed Anchors (F7): Automatically detects sleeping places or saves positions when pressing F7. When returning home, it starts merging after a stabilization delay following construction.
- Intelligent Blacklist: Never merges chests, doors, workbenches, portals, beds, campfires, signs, boats, or carts.
- Building Load Throttling: Reduces the frequency of continuous
WearNTearsupport checks for completed static buildings.
🎨 Graphics, Textures, and Background LOD Models
- Background LOD Generation: A multithreaded level-of-detail generator (QEM Decimation) analyzes heavy models without original LODs and creates lightweight LOD1 and LOD2 variants directly during gameplay.
- Disk Model Caching: Completed LOD meshes are saved to
BepInEx/cache/VPO/, so each object's calculations are performed only once. - Native GPU Instancing: Forces the Instancing flag on compatible world materials for batch rendering objects in a single GPU pass.
- Hardware Light Culling (CullingGroup): Uses Unity's hardware visibility sphere API to completely disable light sources hidden behind walls or outside the screen, as well as torch flickering scripts.
- Texture Mipmap Streaming: Dynamically manages texture mip levels based on camera distance and allocated VRAM budget. A manual downscaling multiplier is provided for low-end graphics cards.
- Optimized Camera Cache: Caches the reference to
Camera.mainand the frustum planes (Frustum Planes) once per frame, eliminating thousands of slow internal engine calls.
🐺 Creature AI, Physics LOD, and Pet Sleep
- Distant AI Throttling: Reduces the update frequency of target-search and orientation logic for creatures outside the player's active combat area.
- Pathfinding Scheduler: Limits simultaneous navigation mesh calculations to a specified per-frame budget, eliminating lag caused by crowds of mobs.
- Character Physics LOD: Distant creatures skip
FixedUpdateticks, slope calculations on uneven terrain, and water-depth checks when standing still. - Energy-Saving Pet Sleep: Tamed animals (boars, wolves, loxes) inside a protected base perimeter enter deep sleep mode: AI ticks, animators, physics bodies, and collisions are disabled. Animals wake up instantly when the player approaches or they take any damage.
💨 Particle, Torch, and Smoke Optimization
- Lightweight Smoke Aerodynamics: Completely reworks the physics of campfire smoke plumes: reduces mass, adjusts air resistance, removes heavy smoke-to-smoke collision calculations, and sets a global particle limit.
- Fire and Torch Optimization: Disables excess sparks, embers, and glowing points from wall torches, chandeliers, and braziers, reducing flame lifetime to lower GPU load.
- Object Pooling: Arrow hit effects (
vfx_arrowhit), impact effects, and sparks are no longer created and destroyed through expensiveInstantiate/Destroycalls, but are instantly reused from a memory pool. - Distance Emitter Culling: Automatically reduces emission or disables distant particles, with reliable protection for portals and key story objects.
🌐 Networking, Minimap, and World Pre-Generator (Chunky)
- Increased Bandwidth: Raises the
ZSteamSocketsocket send limit to 512 KB/s, eliminating desynchronization on populated servers. - Smart ZDO Packet Prioritization: Network packets for players, ships, and active portals are always sent first.
- Map Marker Throttling: Optimizes the update frequency of dynamic minimap pins (once every 4 frames).
- Chunky Background World Pre-Generator: A console tool for smooth, advance world generation around the player in a spiral pattern.
⌨️ Chunky Console Commands (Console F5):
vpo_chunky_start <radius> - Start spiral world pre-generation (e.g. vpo_chunky_start 10, max. 40)
vpo_chunky_stop - Force-stop the current pre-generation
vpo_chunky_status - Show status, current zone, progress, and average FPS
Note: Chunky automatically pauses if the current FPS drops below your configured threshold.
🛡️ Dynamic Compatibility Shield (Mod Conflict Guard)
VPO is designed for stable operation in modpacks containing hundreds of mods. The compatibility guard operates on two levels:
-
Deep Dynamic Harmony Audit: Directly queries the game's runtime registry. If a third-party mod intercepts a method through a Prefix or Transpiler (for example, completely replacing AI or terrain systems), VPO automatically isolates and disables the corresponding submodule, preventing logic breakage or crashes.
-
Built-in Rules Database:
- Expand World: Automatically disables VPO's terrain cache and vegetation spawn optimization, giving full control to Expand World.
- Creature Level and Loot Control (CLLC): Hands over spawning, abilities, and attack logic to CLLC modules.
- ValheimRAFT: Disables static mesh merging and physics LOD near floating bases.
- PlanBuild: Disables batching of blueprints and semi-transparent ghost buildings.
📥 Installation
Through a Mod Manager (Recommended)
- Install r2modman or Thunderstore Mod Manager.
- Search for Valheim Performance Overhaul by author Skarif.
- Click Download with Dependencies and launch the game.
Manual
- Make sure BepInExPack Valheim is installed.
- Download the mod archive and extract its contents into:
Valheim/BepInEx/plugins/. - Launch the game and press F6 to verify it works!
⚙️ Configuration
The configuration file is automatically created at:
Valheim/BepInEx/config/com.Skarif.ValheimPerformanceOverhaul_WATER.cfg
Any parameters can be changed on the fly directly in-game through the F6 menu without restarting the client.
💬 Developer Contact and Support
Discord: skarif_q
Steam: Skarif_W
⚡ Valheim Performance Overhaul (VPO)
Valheim Performance Overhaul (VPO) — ультимативный комплекс низкоуровневой оптимизации движка Unity для Valheim. Мод полностью перерабатывает внутренние узлы игры: память, PhysX, сборщик мусора (GC), генерацию мешей ландшафта, батчинг баз, расчеты ИИ, буферизацию GPU и аппаратное отсечение света.
Включает встроенное внутриигровое меню настроек (F6), статическое объединение построек (F7), профили оптимизации в один клик и автоматический щит совместимости, отключающий конфликты с другими модами на лету.
🎮 Быстрый старт и горячие клавиши
| Клавиша | Функция | Описание |
|---|---|---|
| F6 | Меню настроек | Открывает визуальное окно конфигурации мода с мгновенным применением изменений (Hot-Reload). |
| F7 | Точка батчинга базы | Сохраняет или переключает якорь автоматического объединения мешей в текущей точке мира. |
🚀 Профили оптимизации в один клик
Выбирайте подходящий шаблон прямо в меню (F6) без перезапуска игры:
- 🥔 Potato (Макс. FPS): Для слабых ПК, ноутбуков со встроенной графикой и портативных консолей (Steam Deck). Максимальное сжатие тиков ИИ, физический LOD мобов, оптимизация частиц огня и дыма, жесткий контроль бюджета кадров.
- ⚖️ Normal (Базовый баланс): Рекомендуется для большинства конфигураций. Прирост 25–45% FPS, устранение микрофризов и плавное распределение времени кадра без заметных глазу визуальных потерь.
- 💎 High (Vanilla+): Для мощных систем. Сохраняет оригинальное качество графики, подключая асинхронные сохранения мира, прогрев JIT и защиту от утечек памяти.
🛠️ Подробный обзор возможностей мода
⚡ Ядро движка и многопоточность (Engine & I/O)
- Асинхронный буфер GPU (Async Upload): Расширяет базовый буфер передачи текстур и мешей в видеопамять с дефолтных 4 МБ до 16–512 МБ, увеличивая тайм-срез до 2–33 мс. Устраняет заикания при быстром перемещении между биомами.
- Приоритет процесса Valheim.exe: Автоматически выставляет приоритет процесса на уровне операционной системы (High или Above Normal).
- Приоритет главного потока: Повышает системный приоритет основного потока рендеринга для предотвращения микро-задержек при нагрузке фоновыми программами Windows.
- Тонкая настройка PhysX: Оптимизирует число итераций солвера и пороги засыпания твердых тел (Sleep Threshold), разгружая процессор от физики падающего мусора и веток.
- Пропуск вступительных логотипов: Мгновенный запуск игры прямо в главное меню без вступительных заставок.
🧠 Память, умный сборщик мусора (GC) и асинхронные сохранения
- Асинхронные сохранения мира (Async World Save): Полностью убирает зависание игры во время автосохранений. Данные клонируются в памяти и записываются в фоновом потоке в файлы
.vpotemp→.old→ целевой файл мира. - Умный режим низкой задержки GC: Переключает сборщик мусора .NET в
GCLatencyMode.LowLatencyво время бега, прыжков, плавания, боя и телепортации. Вызовы полной очистки памяти иResources.UnloadUnusedAssets()блокируются до момента, пока игрок не окажется в безопасности. - Прогрев JIT (Just-In-Time Warm-up): Компилирует тяжелые методы боя, инвентаря, урона и GUI заранее во время запуска, исключая первый фриз при нанесении удара или открытии карты.
- Безопасная периодическая очистка: Запускает бережную фоновую выгрузку неиспользуемых ассетов и сборку мусора раз в 10 минут, предотвращая утечки памяти при многочасовой игре.
⏱️ Защита времени кадра и стабилизация физики
- Frame Budget Guard: Непрерывно замеряет редкие события падения частоты (1% Low). При возникновении тяжелой просадки динамически сжимает
Time.maximumDeltaTime, не позволяя физическому движку уйти в «эффект замедленной съемки» и вызывая цепную волну лагов. - Независимые анимации игрока: Переводит компонент анимаций персонажа в
AnimatorUpdateMode.UnscaledTime— движения и отклик персонажа остаются плавными даже при падении общего FPS. - Тайм-слайсинг очередей (ISliceableTask): Позволяет тяжелым модулям мода выполнять задачи порциями в рамках строго заданного лимита миллисекунд за кадр.
🌲 Растительность и оперативный кэш ландшафта
- LRU-кэш мешей ландшафта (RAM): Сохраняет сгенерированные меши высот, карту глубин океана, данные биомов и маски покраски земли в оперативной памяти (размер настраивается: 8–256 МБ). Повторный вход в зону происходит мгновенно без повторных математических расчетов.
- Динамическая инвалидация: Кэш полностью совместим с кирками, мотыгами и модами на терраформинг (
TerrainComp). Измененные секторы автоматически пересчитываются и обновляются. - Плавный спавн флоры (Vegetation Slicing): Спавн деревьев, пней и кустов больше не вешает игру при входе в новый сектор — он распределяется небольшими порциями по кадрам с сохранением детерминированного сида мира.
- Оптимизация Clutter: Оптимизирует дистанцию и плотность отрисовки процедурной травы и камней.
🏰 Статический батчинг баз и мега-построек
- Объединение геометрии по секторам: Объединяет статичные элементы построек базы в единые оптимизированные сетки Unity (
StaticBatchingUtility) внутри зон 64x64 м. Снижает количество Draw Calls на крупных базах с нескольких тысяч до считанных десятков. - Якоря баз и кроватей (F7): Автоматически определяет спальные места или сохраняет позиции по нажатию F7. При возвращении домой запускает объединение с задержкой стабилизации после стройки.
- Интеллектуальный черный список: Никогда не объединяет сундуки, двери, верстаки, порталы, кровати, костры, вывески, лодки и повозки.
- Троттлинг нагрузки построек: Снижает частоту постоянных проверок опоры
WearNTearдля статичных завершенных зданий.
🎨 Графика, текстуры и фоновые LOD-модели
- Фоновая генерация LOD: Многопоточный генератор уровней детализации (QEM Decimation) анализирует тяжелые модели без оригинальных LOD-ов и создает легковесные варианты LOD1 и LOD2 прямо во время игры.
- Кэширование моделей на диске: Готовые LOD-меши сохраняются в папку
BepInEx/cache/VPO/, благодаря чему расчет для каждого объекта происходит только один раз. - Нативный GPU Instancing: Принудительно включает флаг Instancing на совместимых материалах мира для пакетного рендеринга объектов в один проход видеокарты.
- Аппаратный куллинг света (CullingGroup): Использует аппаратный API сфер видимости движка Unity для полного отключения скрытых за стенами или находящихся вне экрана источников света и скриптов мерцания факелов.
- Mipmap Streaming текстур: Динамически управляет мип-уровнями текстур в зависимости от дистанции до камеры и выделенного бюджета VRAM. Предусмотрен ручной множитель даунскейла для слабых видеокарт.
- Оптимизированный кэш камеры: Запоминает ссылку на
Camera.mainи плоскости усечения (Frustum Planes) один раз за кадр, исключая тысячи медленных внутренних вызовов движка.
🐺 ИИ существ, физический LOD и сон питомцев
- Замедление далекого ИИ: Снижает частоту обновления логики поиска целей и ориентации для существ, находящихся вне зоны активного боя с игроком.
- Планировщик поиска путей (Pathfinding Scheduler): Ограничивает одновременные расчеты навигационной сетки до заданного лимита за кадр, устраняя лаги от толп мобов.
- LOD физики персонажей: Далекие существа пропускают тики
FixedUpdate, расчеты наклона на неровностях и проверку глубины воды, если стоят на месте. - Энергосберегающий сон питомцев: Прирученные животные (кабаны, волки, локсы) внутри защищенного периметра базы переходят в режим глубокого покоя: у них отключаются тики ИИ, аниматоры, физические тела и коллизии. Животные мгновенно просыпаются при приближении игрока или получении любого урона.
💨 Оптимизация частиц, факелов и дыма
- Легкая аэродинамика дыма: Полностью переработана физика дымовых клубов костров: уменьшена масса, скорректировано сопротивление воздуха, убраны тяжелые просчеты столкновения дыма с дымом и установлен глобальный лимит частиц.
- Оптимизация огня и факелов: Отключает вылет лишних искр, углей и светящихся точек у настенных факелов, люстр и жаровен, сокращая время жизни пламени для разгрузки видеокарты.
- Пул объектов (Object Pooling): Эффекты попадания стрел (
vfx_arrowhit), ударов и искр больше не создаются и не уничтожаются через тяжелыеInstantiate/Destroy, а мгновенно переиспользуются из пула памяти. - Дистанционный куллинг эмиттеров: Автоматически снижает эмиссию или отключает далекие партиклы (с надежной защитой телепортов и ключевых сюжетных объектов).
🌐 Сеть, миникарта и предгенератор мира (Chunky)
- Повышенная пропускная способность: Расширяет лимит отправки сокетов
ZSteamSocketдо 512 КБ/с, устраняя рассинхронизацию на заселенных серверах. - Умная приоритезация пакетов ZDO: Сетевые пакеты игроков, кораблей и активных порталов всегда отсылаются в первую очередь.
- Троттлинг меток карты: Оптимизирует частоту обновления динамических пинов миникарты (раз в 4 кадра).
- Фоновый предгенератор мира Chunky: Консольный инструмент для заблаговременной плавной генерации мира вокруг игрока по спирали.
⌨️ Команды консоли Chunky (Консоль F5):
vpo_chunky_start <радиус> - Начать предгенерацию мира по спирали (например: vpo_chunky_start 10, макс. 40)
vpo_chunky_stop - Принудительно остановить текущую предгенерацию
vpo_chunky_status - Показать статус, текущую зону, прогресс и средний FPS
Примечание: Chunky автоматически становится на паузу, если текущий FPS падает ниже установленного вами порога.
🛡️ Динамический щит совместимости (Mod Conflict Guard)
VPO разработан с прицелом на стабильную работу в сборках из сотен модов. Защитник совместимости работает на двух уровнях:
- Глубокий динамический аудит Harmony: Напрямую опрашивает рантайм-реестр игры. Если сторонний мод перехватывает метод через Prefix или Transpiler (например, полностью подменяя ИИ или ландшафт), VPO автоматически изолирует и отключает соответствующий подмодуль, предотвращая поломку логики или краш.
- База встроенных правил:
- Expand World: Автоматически отключает кэш ландшафта и оптимизацию спавна растений VPO, передавая полный контроль Expand World.
- Creature Level and Loot Control (CLLC): Передает управление спавном, способностями и логикой атак модулям CLLC.
- ValheimRAFT: Отключает объединение статических сеток и физический LOD рядом с плавучими базами.
- PlanBuild: Отключает батчинг чертежей и полупрозрачных призрачных построек.
📥 Установка
Через менеджер модов (Рекомендуется)
- Установите r2modman или Thunderstore Mod Manager.
- Найдите в поиске Valheim Performance Overhaul от автора Skarif.
- Нажмите Download with Dependencies и запускайте игру.
Вручную
- Убедитесь, что у вас установлен BepInExPack Valheim.
- Скачайте архив мода и распакуйте содержимое в папку: Valheim/BepInEx/plugins/.
- Запустите игру и нажмите F6 для проверки работы!
⚙️ Конфигурация
Файл настроек создается автоматически по пути: Valheim/BepInEx/config/com.Skarif.ValheimPerformanceOverhaul_WATER.cfg
Любые параметры можно менять на лету прямо в игре через меню на клавишу F6 без перезапуска клиента.
💬 Контакты и поддержка разработчика
Discord: skarif_q
Steam: Skarif_W
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
InsideClearAreadelegate. - 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
Vector2itoVector2sto match the game zone system - Updated reflection targets from
PokeLocalZonetoSpawnZonewithIsZoneGeneratedverification - 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 frameworksDisableModuleInMemory()method for safe in-memory module disabling without config file modificationUnpatchClass()method to physically remove installed Harmony hooks from memoryGetPatchTargetTypes()method to extract real game type targetsIsEligibleForStaticBatch()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
LegacyConfigCleanerfor 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
_disabledTargetTypeNameswith type-based_disabledTargetTypes - AsyncSaveModule simplified - now relies on built-in
ZNet.IsSaving()andm_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 _zoneIDchanged toVector2s _zoneIDin vegetation spawning- Harmony patch application moved from ZSteamSocket constructor to
RegisterGlobalCallbacks() - Plugin GUID:
"com.Skarif.ValheimPerformanceOverhaul_NEW"→"com.Skarif.ValheimPerformanceOverhaul_WATER"
Fixed
- Heightmap
_setDirtymethod 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()andDisableModuleAndConfig()methods - replaced with non-invasiveDisableModuleInMemory()- Async file operations from AsyncSaveModule (SaveStreamAsync, full synchronization control)
- Patches on
GetSaveClone()andPlayerProfile.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