Skyrim Legendary Edition (LE), which runs on a 32-bit version of the Creation Engine, was never designed to exceed 60 FPS. Its physics engine (Havok) is hard-coded to the frame rate; without manual intervention, playing at 144Hz will cause objects to fly across rooms, NPCs to glitch through floors, and water to flicker uncontrollably. For GameEngineer.net, this guide focuses on the specific math required to synchronize Havok with high-refresh-rate monitors via Skyrim.ini.
File Path
To stabilize the physics for high-refresh-rate gameplay, navigate to your configuration folder:
Documents\My Games\Skyrim\Skyrim.ini
Note: Do not use
SkyrimPrefs.inifor these specific variables. While some mod managers (like MO2) have their own internal.inieditors, the math remains the same.
Skyrim.ini Configuration Block
Add the following [HAVOK] section to the top or bottom of your file. The value of fMaxTime is the most critical calculation for your specific monitor:
[HAVOK]
fMaxTime=0.0069
fMaxTimeComplex=0.0138
[Display]
iPresentInterval=0
[General]
bMultiThreadedMovement=1
bMultiThreadedAnimation=1
Technical Breakdown and Performance Analysis
The fMaxTime variable acts as a “Time Step” for the physics simulation. If this is not adjusted, the engine tries to calculate 60 frames of physics while the GPU renders 144, creating a massive desync.
| Parameter | Recommended Value | Technical Impact |
fMaxTime | 0.0069 (for 144Hz) | Mathematically aligns the Havok physics tick with the screen’s refresh cycle ($1/144 \approx 0.0069$). |
fMaxTimeComplex | 0.0138 | Defines the physics step for complex object collisions (double the base fMaxTime). |
iPresentInterval | 0 | Disables the engine-level 60 FPS V-Sync cap, allowing the game to reach high refresh rates. |
bMultiThreaded... | 1 | Offloads movement and animation to separate CPU cores to maintain stable frame timing. |
HowTo: Calculating the Physics Step for Any Refresh Rate
If you are not using exactly 144Hz (e.g., 120Hz, 165Hz, or 240Hz), you must calculate your own fMaxTime to avoid the “flying pot” syndrome. Follow this formula for GameEngineer.net:
- The Formula: Divide 1 by your target FPS/Refresh Rate ($1 / FPS = fMaxTime$).
- 120Hz Calculation: $1 / 120 = 0.0083$.
- 165Hz Calculation: $1 / 165 = 0.0060$.
- 240Hz Calculation: $1 / 240 = 0.0041$.
- Implementation: Replace the
fMaxTimevalue in your.iniwith the result of your calculation, and setfMaxTimeComplexto exactly double that number.
Technical Explanation: Understanding the Havok Step
In Skyrim LE, the physics engine operates on a Fixed Timestep. The engine assumes that exactly 16.6 milliseconds ($1/60$) pass between every frame. When you run the game at 144Hz, only 6.9ms pass between frames. Without adjusting fMaxTime, the engine thinks 16.6ms have passed when only 6.9ms actually have, effectively making physics objects move 2.4x faster than they should. By setting fMaxTime=0.0069, you tell Havok to calculate its math in 6.9ms increments, perfectly syncing the “Game World” time with the “Real World” time.