oblivion: memory optimization & perfomance





Disclaimer: this article is written based on my personal, subjective experience of testing various settings and modifications. With that said, my tests are usually "clean" and detailed & I only publish something I use myself.

If you want to try this guide and you already have generated and\or tweaked Oblivion.ini and saves (.ess files), please make a backup.



  1. Oblivion.ini

I will not write anything regarding Oblivion.ini tweaking because almost everything I've tried either doesn't affect performance, has bad side-effects or has no effect whatsoever. Also because I only can load the game on more or less modern PC, and I don't have an older PC or notebook to check if any .ini tweaks have a positive effect on an older configurations. So, in my case (and in case of the majority "modern" configurations) I don't recommend making tweaks.

Advice: re-generate your .ini with highest graphics settings. Turn off v-sync. Don't use programs like BethINI or GBRs Tweaker. Don't touch Oblivion.ini at all if there's no need.

--------------------------------

  1. Download OBSE: http://obse.silverlock.org/download/obse_0021.zip

Unpack the archive. Copy the "obse_0021" folder contents to "Oblivion" folder (where you can find Oblivion.exe). If you have a Steam version of the game, it will be located Steam\steamapps\common\Oblivion.


  1. Download 4Gb Ram Patcher: https://www.nexusmods.com/oblivion/mods/45576?

In the "Oblivion Ram Opimization" folder you'll find 4gb patch.exe file. It's a simple program that should allow Oblivion to use up to 4Gb of RAM like any other 32-bit app. It automatically creates a .BACKUP file so you can always restore your original .exe by simply renaming the .BACKUP files to .exe. Make sure you've got "File name extensions" checked in your File Explorer.


Load the program and locate the Oblivion\Oblivion.exe file:


Click "open".







Click "Another File" and do the same for Oblivion\obse_loader.exe. Done.​


  1. Alternative - CFF Explorer: http://www.ntcore.com/exsuite.php

Does the same as 4Gb Ram Patcher, but manually:









Download Oblivion Stutter Remover, version 4-1-37 and "ComponentDLLs" from "Optional files":

https://www.nexusmods.com/oblivion/mods/23208/


Inside the archive you'll find "Data" and "src" folders. There folders should be put into Oblivion folder (where you can find Oblivion.exe). If you have a Steam version of the game, it will be located Steam\steamapps\common\Oblivion.


Locate the Oblivion\Data\OBSE\Plugins folder. If you have Steam version of the game, the path will be Steam\steamapps\common\Oblivion\Data\OBSE\Plugins.

There you'll find a file "sr_Oblivion_Stutter_Remover.ini". Don't touch it yet. Create a new folder and name it "ComponentDLLs". It should look like this:





Open the "ComponentDLLs-23208-1.zip" archive. Inside, you'll find the following files:


BorlndMM.dll ;

debugMM.dll ;

libtcmalloc_minimal.dll ;

tbbmalloc.dll ;


As you may have quessed, you need to place these files in your newly created Oblivion\Data\OBSE\Plugins\ComponentDLLs folder. It should look like this:





Now you can tweak sr_Oblivion_Stutter_Remover.ini:


bManageFPS = 1 ; turns on (1) and off (0) FPS control.


fMaximumFPS = 80 ; high FPS cap +- 5 FPS. "0" removes the cap. How it works: for example, you use "60", you'll make 60 FPS cap +- few FPS. I don't recommend making the number higher than "85", since very few PCs can actually maintain 85+ FPS; this is a software & optimization problem, not a hardware problem. Some locations in Oblivion are very badly optimized & keeping a high FPS cap will not help. OSR will try to maintain "average" FPS in your game based on the values you put, so it can result in unnecessary heating.

The point of OSR is a stable game, and the bigger your min-max gap is, the more unstable your game is. For the same reasons you shouldn't use values like "30", since this is a maximum number and OSR will make your average FPS around 20-25 FPS. Also don't forget that installing mods with heavy scripts and\or graphics will also decrease your average FPS, and in that case decreasing the max cap for too much will severely crop your perfomance.


fMinimumFPS = 15 ; This is a minimal FPS cap, OSR controlled. The value "15" means that when your FPS will hit 15 FPS and below, OSR will slow down (literally) your game to maintain 15 FPS. That way, if your FPS is 1, but the game will run as smooth as possible, on 10% speed game speed. When your FPS recovers, the game speed will go back to normal as well.


Try running the game and look at your low, medium and maximum FPS values. Tip: measure FPS is easiest in Leyawin, on the main street (for low FPS values) and at the exit of The Imperial Prison Sewers (medium and high FPS values). This is not the most accurate method, but all points are available for teleport on the map from the start of the game. Adjust the values to suit your FPS: the fewer lags, the better.


At the top of this article you can find links for my .ini-s.​





  1. Download ENBoost: http://enbdev.com/patch_oblivion_enboost_v0259.htm

Inside the archive you'll find the following files:





Copy these files to "Oblivion" folder (where you can find Oblivion.exe). If you have a Steam version of the game, it will be located Steam\steamapps\common\Oblivion. Done. You've installed it. Now you need to tweak the enblocal.ini:


First and foremost, you need to determine your VideoMemorySizeMb= value.


To do so, download VRamSizeTest:

http://enbdev.com/download_vramsizetest.htm


Inside the archive you'll find VRamSizeDX9.exe. Oblivion is a DirectX9 game, so copy VRamSizeDX9.exe to "Oblivion" folder and load the .exe.


Memorize the number you've got from the VRamSizeDX9.exe subtract the following values:

170 - if you have Windows 7,

350 - if you have Windows 10,

and subtract nothing if you have Windows 8\8.1.


The number you get is a VideoMemorySizeMb value. Example:

You use Windows 7 and VRamSizeDX9.exe gives you 7872.

7872 - 170 = 7702 (MB) and that is the value you copy in your enblocal.ini.


[MEMORY]

VideoMemorySizeMb=7702 ; change it to:

[MEMORY]

VideoMemorySizeMb=yourvalue ;


next, you need to tweak ReservedMemorySizeMb. To determine this value you need to keep in mind two things: the amount of VRAM and stuttering in your game. For example, you have 1GB of VRAM. Start with 128 value:


[MEMORY] VideoMemorySizeMb=128 ; increase that value (128, 256, 512, 1024), until the stuttering is gone or are minimal at the smallest VideoMemorySizeMb value. The biggest possible value is 1024.


Meaning: the smaller the value, the better, but there should be no stuttering. High VideoMemorySizeMb values lead to crashes.


If you want to use ENB, you'll have to use d3d9.dll from ENB archive as an additional library. Just rename your ENB d3d9.dll to other_d3d9.dll. In enblocal.ini change the following lines:


EnableProxyLibrary=true ;

InitProxyFunctions=true ;

That's it.


If you're too lazy to tweak any of these, you can use my ENBoost+ENB+FXAA Injector preset:







  1. (optional) download Streamline: https://sharemods.com/49dr4u3puw9r/STREAMLINE_3.1_patched.7z.html
  2. nexus original: https://www.nexusmods.com/oblivion/mods/10400?

Streamline dynamically adjusts the drawing distance based on your FPS. It has a lot of settings. It's partially compatible with Oblivion Reloaded, but then you'll have to give up on [FrameRate] feature in the latter for similar Streamline features. For me personally it was the best solution, since Oblivion Reloaded didn't restore the normal drawing distance, even in new versions that "fixed" that issue.

In general, Streamline turned out ot be much more reliable and stable than [FrameRate] function in OR for my game.


So, how to install Streamline? In the archive you'll find a "Streamline" folder and a .esp file:





Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada faucibus ex nec ultricies. Donec mattis egestas nisi non pretium. Suspendisse nec eros ut erat facilisis maximus. In congue et leo in varius. Vestibulum sit amet felis ornare, commodo orci ut, feugiat lorem.


Copy the "Streamline" folder and .esp to Oblivion\Data.

Streamline was made before OBSE was created, so it uses its own folder for settings. The "Streamline" folder should be in Oblivion\Data.


To make Streamline compatible with OSR you'll have to make a few adjustments. The Streamsmooth function conflits with OSR and decreases performance if the settings are wrong, with with correct settings Streamline can save FPS during heavy gameplay with almost no visual drop.


Find sl.ini, which is Oblivion\Data\Streamline\INI Files\sl.ini:


set SLv.Purging to 1 ; use "0" value if you want to use the [Purger] function from Oblivion Reloaded. If you want to use Streamline one, turn off [Purger] from OR.


set SLv.FPSsmoothing to 1 ; use "0" if you want to turn Streamsmooth off. In that case you don't need to tweak the following lines.


set SLfpsmon.High to 30 ; Highest minimal FPS cap. Meaning: my average FPS is ~50. Low FPS "starts" at 30 and below. This value is the FPS when Streamsmooth will start delicately decrease the drawing distance. Don't use your average FPS value here, use BELOW average value! Use the value that feels slightly uncomfortable for you to play at. For me it's 30.


set SLfpsmon.Low to 20 ; This value is when Streamline will lower the drawing distance to absolute minimum (which can be altered in sl.ini as well).

Use the lowest (10-15, while its still playable) FPS possible, if standalone. If you combine it with OSR, this value should be at least 5 FPS higher than "fMinimumFPS" from OSR. For example, if OSRs "fMinimumFPS" is 15, then Streamlines "SLfpsmon.Low" is 20.