
SteadyFrame
Smoother Valheim without changing how it looks or plays: fewer hitches around large bases, less work every frame, fast portal travel.SteadyFrame
SteadyFrame makes Valheim smoother on the CPU side: fewer hitches while you run around large bases, less work every frame, and fast portal travel.
Its benefits are shorter transitions, fewer streaming hitches and a lighter per-frame grass and mist pass. Average FPS depends on what limits the scene: measured with grass drawn to 200 m, about 5.5% higher at a Mistlands base and 2-4.5% at Meadows bases, no measurable change at a mountain base with little grass. Saving time in streaming and rebuilds gives little extra FPS when regular updates and rendering dominate.
The visual world, terrain and building support use the game's own objects and calculations. Shortcuts either check against the game's own answer or leave that work to the game.
What it does
Portals and dungeons
- Prepares the destination's terrain as you walk up to a portal and loads it first during the transition.
- Creates the destination faster while the loading screen is up; distant trees and bushes fill in afterwards.
- Removes fixed waits (the 8-second floor on portal travel; 2 seconds between teleports becomes 0.5), with the game's area and floor checks kept.
- Optional short fade into and out of dungeons.
- Multiplayer: with SteadyFrame on the host, the destination's buildings are sent while you walk to the portal, and you arrive once the host confirms they are all with you.
Smoother play around large bases
- Skips the game's object create/remove pass while nothing it looks at has changed, and finds objects to unload by zone instead of checking every loaded object.
- Places the rooms of a dungeon that loads near you over a few frames instead of one long frame.
- Rebuilds grass after the ground changes within a few milliseconds a frame, nearest first, instead of all at once (up to a second at long grass distances). Behind a loading screen it still rebuilds at once.
- Keeps ground meshes when a building streaming in or out asks for a rebuild that would change no height.
- The terrain builder no longer pauses 10 ms after each zone while more are waiting, so new ground appears sooner when flying, sailing or running into new land.
- A building piece that arrived over the network is not checked for support (or worn by weather) while objects around it are still being created, so it cannot fall for a floor that is merely not there yet. The game itself waits 30 seconds after a piece appears; this waits at most 120. Pieces you place are checked at once, as in the game.
- Draws grass without asking the engine for the camera and each patch's transform thousands of times a frame.
- Draws grass from the graphics card's memory: the card works out which grass is in view and how far it fades, and each kind of grass is one draw. The same grass; 1-2 ms of main thread less a frame at a base with grass to 200 m. Needs compute shaders; without them grass is drawn the game's way.
- Mistlands mist reads each mist area's position once per update instead of once per particle.
- Less garbage from collisions and world-object data.
Fixes
- A loading screen that never lifted after an object near the destination was destroyed without the game knowing.
- An error when a tar pit that had not finished loading was removed; log lines written every frame or on every chest open.
Requirements
- Valheim with BepInEx 5 on Windows.
Install
- Close Valheim.
- Extract this archive into the Valheim game directory. The DLL should end up at
Valheim/BepInEx/plugins/SteadyFrame.dll.
Settings
Valheim/BepInEx/config/ru.ivest.steadyframe.cfg, changeable with Configuration Manager except section 9:
- 1 - General: Enabled. Turning it off stops everything that can stop at once and the rest after a restart; started with it off, SteadyFrame patches nothing (the game runs as without it), and turning it on takes effect after a restart.
- 2 - Modules: Transitions, Object streaming, Terrain, Structures, Grass, Housekeeping (restart required); Reuse collision data, Mist emission lookups.
- 3 - Transitions: Dungeon fade, Teleport cooldown, Narrow range while loading, Defer distant nature.
- 4 - Multiplayer: Early object delivery, Send boost.
- 5 - Object streaming: Skip idle passes, Unload by zone, Dungeon spawn budget (milliseconds a frame; 0 places dungeon rooms the game's way, all at once).
- 6 - Grass: Rebuild budget (milliseconds a frame; 0 rebuilds grass the game's way, all at once); Draw on the GPU; Lean draw pass; Reuse grass arrays.
- 8 - Terrain: Keep unchanged ground meshes.
- 9 - Verification (in the file only, hidden from Configuration Manager): diagnostics for the shortcuts that replace a computation of the game (idle pass, unload by zone, unchanged ground meshes, grass draw pass, GPU grass, mist lookups, dungeon spawn). With one on, the game's own result is used, any difference is logged, and totals are written every 30 seconds. Off for play. Loading-screen shortcuts (narrowed range, view order, arrival checks) have no such mode: they change when things happen, not what is computed.
Compatibility
- If ValheimCommunityPatch or Valheim Performance Optimizations change the same game code, the overlapping part of SteadyFrame stands down and says so in the log; the rest keeps working.
- With ValheimCommunityPatch 0.35 or later, SteadyFrame uses VCP's API: where both do the same job (object creation and unloading, dungeon placement), SteadyFrame's version runs and VCP's is turned off for the session, and the log says so. This is decided per job at start: with SteadyFrame's setting for a job off (or its version not applicable to this game version), VCP's fix does that job for the session instead, and changing the setting takes effect after a restart. With VCP's idle-pass skip doing the job, objects far out may fill in up to a second after arriving through a portal. VCP keeps its terrain builder (SteadyFrame's Terrain module stands down); SteadyFrame's destination terrain priority, terrain cache and ghost-zone pause go through VCP's API, the pause only while no other player is connected. Housekeeping stands down with VCP, which carries its own version of each of those fixes. With an older VCP, the overlapping parts of SteadyFrame stand down as before.
- SteadyFrame checks for overlapping mods once, at start; a mod that patches the same code later is not noticed.
- Logged: errors, stand-downs and VCP handovers, a line when GPU grass drawing starts, and anything a verification check (section 9) finds.