Optimising Oblivion v2.0

Ashton Mills | Apr 7, 2006 1:48 PM
Tailor this incredible game to perfectly suit your system, and the way you want to play.


Optimising Oblivion v2.0


NOTE: Part 3 of the guide covering mods, how to use them, and an extensive collection of the best can be found here - Optimising Oblivion v3.0

NOTE: The new 1.1 patch affects the display of new textures and the function of mods. See the Optimising Oblivion v3.0 for important fixes.


The original Optimising Oblivion article received quite a welcome response from gamers lost in the mire of .ini editing. This is a greatly overhauled and updated guide, with new tweaks and advice for getting the most out of The Elder Scrolls IV: Oblivion. Reading also makes you impeccably attractive to the opposite sex.

All of these tweaks have been tested at length, so you can be sure they work. Tweaks that didn’t show a good result or caused problems have been removed. If you read the original guide, it's recommended to run through this one from the start, as there are new and improved tweaks herein!

First

This guide is broken down into three sections:

Part 1: Looks and feel

Part 2: Performance tuning

Part 3: Mod enhancements

Despite mods having their own section, where possible if mods will make a difference to looks or performance they will be referenced here. Additionally, a more extensive list of gameplay enhancing mods are covered in Part 3.

Second

Handy stuff we want you to know:

Disclaimer: This guide isn't a silver bullet (or arrow, as the case may be). Everyone's machine is different. Your mileage may vary compared to what we've seen, so be sure to try each of these out in and if you don't like the result, simply switch back. What we can say is that all of these tweaks and mods gave a positive result for us.

Credit where credit is due: this guide is the culmination of our own research and testing, and the research and testing of the Oblivion community at www.elderscrolls.com/forums  This guide is by and for the entire Oblivion community.

A note on HDR: Oddly the fading grass effect and, it would seem, the ability to take screenshots only work while HDR mode is enabled. If you use AA+Bloom and neither work, you know why!

Caffeinated beverages: go really well with Oblivion to keep you playing long into the night, and on into the morning. *yawn*

Third

It's best to start with a clean Oblivion.ini file, especially if you previously applied the tweaks from this guide.

1) Browse to your C:\Documents and Settings\Administrator\My Documents\My Games\Oblivion directory.
2) Make a backup of your Oblivion.ini file, and then delete Oblivion.ini
3) Start the game from the launcher, and set up your graphics options.
4) Load the game and go into the Video and Sound properties, then setup the game as to suit your preferences. Make sure 'Shadows on grass' and 'Shadow filtering' are off. Quit the game.
5) Open up the newly created Oblivion.ini in your favourite text editor, ready to make changes.
6) Take a swig of your favourite caffeinated beverage.

Now, onto Part 1!

Part 1: Looks and feel

Oblivion is gorgeous, but not quite gorgeous enough. For better or for worse, its visuals seem to be tailored to the XBOX 360. Pah to the console, this is a PC game. Think of Patrick Stewart, and make it so!

1) Level of detail
Low resolution distant texturing looks like 'soup'. To fix download and install these mods (extract them to your Oblivion\data directory):

Landscape LOD texture replacement   (download | mirror)
LOD normal map replacement   (see thread | download)
Jarrod's landscape texture replacements  (see thread | download | patch)

The first is a collection of higher resolution 2048x2048 textures over the default Bethesda 1024x1024 low-resolution ones for distant lanscapes. The second replaces the blocky normal map shadows on distant textures with smoother ones. The third provides common landscape textures (near and far) with higher quality, higher resolution replacements. These all will use more texture memory on your card, but 256M cards will handle this fine. If you've got a 512M card, you can go to insaneo levels and use 4096x4096 distant texture replacements:

4096lodtextures   (see thread | mirror1 | mirror2)

If you have a medium to high-end system, apply the old 'fix' for removing soup as well as the above texture replacements and get the best of both worlds. Note the values don't need to be as high as before, which results in better visuals and better performance:

uGridsToLoad=7   (default 5)
iPreloadSizeLimit=104857600   (default 26214400)
bUseWaterDepth=0   (default 1)
uNumDepthGrids=6   (default 3)

Note: Upping iPreloadSizeLimit is required to prevent crashing with the extra grids in memory. The last two lines all but fix water reflection corruption. Note load times *will* increase, but it's well worth it.
Note: A value called uExteriorCellBuffer will adjust automatically to a minimum 64. This setting and iPreloadSizeLimit also affect performance, see Part 2.
Note: If you use the 4096x4096 texutres, or have a 2G machine, try a value of 209715200 or more for iPreloadSizeLimit.

2) Better water
Make water sexier by reflecting more of the environment, while making it easier to see in while swimming. Download and install the following mod:

Better imperfect water   (download)

Remember to start the Oblivion launcher, select Data Files, and tick to load the mod. Note: In ver 1.0 of this guide we recommended the Better water mod (download), choose whichever takes your fancy. Next make the following changes to your .ini file:

bUseWaterReflectionsMisc=1   (default 0)
bUseWaterReflectionsStatics=1   (default 0)
bUseWaterReflectionsTrees=1   (default 0)
bUseWaterReflectionsActors=1   (default 0)
uSurfaceFPS=15   (default 12)

Keep 'Misc' and 'Actors' at 0 if you want to just enable landmass reflections without impacting performance too much,

3) Better interface
Why does the interface looks like it's been designed for 4 year olds? Make it PC-centric by installing BTmod:

BTmod   (download)

Read the README for installation instructions.

 

4) More blood
Blood disappears way too quickly. Don’t they know blood stains? Make the following changes to your .ini file:

fDecalLifetime=1200.0000   (default 10)
iMaxDecalsPerFrame=500   (default 10)

Sets blood decal lifetime from 10 seconds to 20 minutes, and sets the limit of decals in game from 10 to 50.

 

5) Better shadows
You can tailor how sharp the canopy shadows are with:

ICanopyShadowScale=512

A value of 256 will show more leaf detail, while 1024 will smooth them out. If you want a little extra detail, set it to 256. Additionally, if you have a mid to high-end machine you can set the range at which shadows on creatures and NPCs occur to be further out, so they don't suddenly appear at close range:

fShadowLOD2=2500.0000   (default 400)
fShadowLOD1=2000.0000   (default 200)
fLightLOD2=2500.0000   (default 1500)
fLightLOD1=2000.0000   (default 1000)

ShadowLOD extends how far away shadows are cast, but needs LightLOD to extend at least far in order to operate. Natrually, the following determine how many shadows are drawn internally and externally respectively, set to taste:

IActorShadowCountInt=5
iActorShadowCountExt=2

6) Better trees
This is actually a tweak we didn’t see any noticeable improvement in our testing, but have included for completeness because others on the official forums are positive it makes a difference.

bForceFullLOD=1   (default 0)

Forces higher level of detail on trees, may have small performance impact. Also note the following settings:

fLODTreeMipMapLODBias=-0.7500
fLocalTreeMipMapLODBias=-0.2500

These take advantage of negative LOD biases to also improve the image quality of trees. Note that NVIDIA drivers by default prevent negative LOD ranges. To change this set 'Negative LOD bias' from ‘Clamp’ to ‘Allow’. You can find this option under Performance & Quality Settings --> Global driver settings --> View: Advanced settings in the NVIDIA driver properties. Again, on our 7800GTX system this made no measurable difference to image quality, but your mileage may vary.

 

7) Anti-zoom conversations
It’s a matter if preference but if you prefer not to see up someone’s nostrils while talking set the following:

DlgFocus=4.0000   (default 2.1000)

Or suit to taste, settings from 2 to 5 work well.

8) Bypassing intro movies
Tired of pressing Esc when launching game? Set the following line to be blank like so:

SIntroSequence=


9) Removing annoying prompts
Do you *really* need to know that your game is ‘Loading…’ ? Install the following mod:

Remove annoying text prompts   (download)

 

10) Reducing HDR exposure
HDR is sweet, but a little overpowering inside. Set the following under [BlurShaderHDRInterior] only:

fBlurRadius=6.0000   (default 7.0000)
fBrightScale=1.7500   (default 2.2500)

11) Tailoring dialog distances
If you find the face to face dialogs too quiet, or too loud, while all other sounds are pefect you can alter the volume here:

fDBVoiceAttenuationIn2D=10.0000   (default 0.0000)

Similarly, if you find conversations at a distace trail off too soon, play with these settings:

fDialogAttenuationMax=35.0000
fDialogAttenuationMin=7.75000

We experimented with different near and far values, and find the defaults best. It really depends on your sound subsytem, and your ears. Note that tweaking the 'max' distance can effectively be a cheat.

 

12) Field of view
The field of view really is a matter of taste. Some people prefer the default 75, others 90, and others still somewhere in between. Oblivion allows you to change the FOV in game, but it resets after any trasnition (having a conversation, entering a door etc). It can be forced in the ini file, but when the game starts menus are misaligned and the game is unplayable.

In the version 1.0 of this guide we said to keep an eye on the forums for updates on getting this working. Sure enough Scanti's thread details how to set a FOV of 90, and make it stick. It's a little convoluted, but the summary is:

a) Leave fDefaultFOV in your .ini set to 75.
b) Write protect the .ini file (right click on it --> Properties, click 'Read only').
c) Launch Oblivion and load your save game
d) Bring down the console with '`' (more on this later) and type:

SetINI "fDefaultFOV:Display" 90.00

Note this has a different effect than just the command fov 90.
e) Save your game.

Thereafter when you launch Oblivion the menus will be aligned, starting with a FOV of 75. When you load your game, the FOV setting of 90 is initilised, and because the .ini is read only Oblivion can't 'reset' the value between transitions. Or something. It's crazy like that.

With the .ini being read-only, it should go without saying this is the very last tweak you will want to make!

Part 2: Performance tuning

This has become somewhat of an art for Oblivion. It’s hard to argue that the game was well optimised on release. From low end to high end machines, it seems everyone has seen benefits with the following tweaks.

1) Raise the preload size limit
For 1G or less machines, use the following:

iPreloadSizeLimit=104857600   (default 26214400)

This raises the preload limit from 25M to 100M. For 2G or less machines, use the following:

iPreloadSizeLimit=262144000   (default 26214400)

Which does, of course, set the limit to 250M. You can go higher, but whether you will see further improvement is debatable. Observations on the preload limit: if set high enough, transitions between indoor and outdoor can become near instant for previously visited cells. I.e, entering and then leaving a shop or dungeon.

 

2) Raise the cell buffer
Setting the following keeps more cells in the preload cache:

uExterior Cell Buffer=100   (default 36)

Note: that this will raise automatically if using raising uGridsToLoad as per the level of detail tweak in Part 1. However, raising it higher can provide further benefit.
Note: this requires you to raise the iPreloadSizeLimit as in the above tweak, otherwise you may experience stutters or crashing.

 

3) Cut the grass
Grass is swank, but it’s also a huge performance drain. Reduce its frequency a big performance boost with little change in visuals:

MinGrassSize=130   (default 80)
fGrassEndDistance=8000.0000   (default 3000)
fGrassStartFadeDistance=7000.0000   (default 2000)

If you have a medium to high end machine, knock the distance values up to 10000 and 8000 respectively. For lower end machines, try a value of 150 or 200 for the minimum grass size.

 

4) Threads
The following tweaks appear to have a positive impact, but they are by their nature dependent on your hardware. While the theory goes that dual-core machines will benefit most, single core CPUs also spend a merry time running multiple threads, and these tweaks have helped single-core users too.

But remember, just because these tweaks allow Oblivion to better use your processor's resources, they don't necessarily mean the game will run faster. In fact, the benefit of these tweaks appears to deal more with preventing or reducing pauses and slowdowns than improving your framerate. Which is still a Very Good Thing.

bUseThreadedBlood=1   (default 0)
bUseThreadedMorpher=1   (default 0)
bUseThreadedTempEffects=1   (default 0)
bUseThreadedParticleSystem=1   (default 0)
bBackgroundLoadLipFiles=1   (default 0)
bLoadBackgroundFaceGen=1   (default 0)
bCloneModelsInBackground=1   (default 0)
bBackgroundPathing=1   (default 0)
iNumHavokThreads=3   (default 1)

Keep in mind that threads aren't magical cookies of blazing speed. The more threads you run, the more resources are required to run them. This actually leads us to the [OpenMP] section of your .ini file. Set the following:

iThreads=20   (default 3)
iOpenMPLevel=10   (default 10)

OpenMP is a specification for a multi-platform shared-memory multithreading API. It helps make it easy for developers to integrate parallel processing in their programs, and has the nifty ability of being able self manage threading resources -- threads are activated for parallel processing from a pool as required, so it's possible for an application to branch out from a single thread into multiple threads and then return to a single thread.

What this means to our understanding of Oblivion is not particularly a lot -- except perhaps to say that the iThreads setting is likely a limit to the maximum number of threads in the pool, and not the number of threads that will run continuously. You don't suddenly get Uber Performance by setting a high value here, you only allow Oblivion to use more threads if they will be of benefit. So how many threads can Oblivion make use of at its peak? Great question. If you know the answer, drop me a line at amills@atomicmpc.com.au

For the record iOpenMPLevel presumably sets the priority of the threads, for which 10 is 'Above normal' in Windows. It's probably best not to touch this -- too low and you'll hinder the performance of the threads, too high and you'll hinder the performance of everything else. It's worth noting that the previous sentence is somewhat of a total and utter guess, but it sounds good to us.

5a) Just for NVIDIA users
If you're not already using it, install Coolbits (download) and in your driver properties navigate to Performance & Quality Settings --> Additional Direct3D Settings, then set Frames to render ahead from '3' to '0'.

Note: dual-core users may be better off setting this to '1'. It's a bit of an anomaly, but there was a report on the forums about '0' causing the game to load on only one core. Well we tested it out and, indeed, this appears to be the case – but not always. It seems to be a somewhat random as to wether the load is spread across one core or two, but sure enough setting render ahead frames to '1' ensured that both cores were used at all times.

5b) Just for ATI users
Thanks to A. Gardiner who reminded us that ATI users also can reduce the number of frames rendered ahead and thus also take advantage of reduced mouse lag and smoother gameplay. Simply download and install ATI Tray Tools (download), then adjust 'Flip queue size' anywhere from '0' to '3'. Again, a setting of '0' may do more harm than good, so experiment with '1' or '2' first.

 

6) Optional: Disable higher visuals
This is recommended for low to mid range machines. There are two visual effects that can cause a big drain – specular and refraction lighting. You’ll encounter performance problems with the former most often with ‘mists’ in dungeons and the lighting in some buildings. The latter is limited to Oblivion gates and events like the assassins at the start of the game. Generally, they’re nice to have but you can live without them:

bDoSpecularPass=0   (default 1)
bUseRefractionShader=0   (default 1)

Also, ensure shadow filtering is disabled. It looks nice, but the difference is subtle and it can have a moderate performance impact:

bShadowFilter=0   (default 1)

 

7) Optional: Stuttering fights
Fighting seems to show up performance problems more than most, especially on systems with on-board or older sound cards. If you’re experiencing stuttering fights, these tweaks should help. First. disable music with the following:

bMusicEnabled=1   (default 1)

This is even a tip recommended in the official README file included with the game. Additionally, a talented modder has found that a sound event is played for each foot of an animal as it hits the floor – and since this problem seems to show up more with four-legged creatures like wolves, the following mod resolves this:

Quiet feet   (download)

 

8) Optional: Low memory machines
These aren't magical, unfortunately, but they should help a tad on memory limited machines:

bPreemptivelyUnloadCells=1   (default 0)
bSelectivePurgeUnusedOnFastTravel=1   (default 0)

 

9) Miscellaneous tweaks
These are tweaks for which we weren’t able to directly quantify an impact. They may or may not be of benefit to you.

You’d hope setting this makes a difference for SM3.0 capable cards:

Allow30Shaders=1   (default 0)

But it doesn’t appear to. Not using a joystick (who does?), set:

bUse Joystick=0   (default 1)

And finally, make sure the following is set:

bUseBackgroundFileLoader=0   (default 0)

The original guide had this set to ‘1’ as a ‘maybe’ tweak we suspected was beneficial but unstable. We can report, thanks to our readers, that it does indeed cause problems! So make sure it’s disabled.

 

10) General performance
We don’t need to tell you to install latest drivers installed for your video card and sound card, because you’ve already got them installed right? This includes using NVIDIA's latest 'Oblivion compatible' driver (download).

That just leaves defragmenting. Yes it takes a while, especially if you haven’t done it before, but it’s well worth it. Especially if you’re using mods and tweaks to load more into memory. Defragging your drive will reduce load times.

New to defragmenting? You can use the Windows defragger, but this is about as useful as sticking badgers down your pants, so we recommend going with a third party defragger such as Perfect Disk (download) or O&O (download). The trial versions will give you an idea as to how well they work.

Finally, although not an option in Oblivion's launcher or the .ini file, you can still enable Ansiotropic filtering regardless if you're using HDR or AA+Bloom, simply force it in your drivers. The performance hit is minimal, and it does a great job smoothing out the transition of textures directly in front of you, giving an overall better image.

 

Taking screenshots
A common question, a simple answer. Set the following:

bAllowScreenShot=1   (default 0)

And use the PrtScrn key to take screenshots. Note the game uses a rising index number for each screenshot so that, naturally, you don't overwrite previous screenshots. Also note that this incremental value is stored in the .ini file here:

iScreenShotIndex=1

If you restore a backup .ini file or create a new one, be aware this number may be reset, and you could end up over-writing previous screenshots. Similarly, if you use the FOV tweak, the screenshot index won't be able to increase and again you'll overwrite screenshots.

 

A really quick introduction to the console
If you press ‘`’ in game you’ll get access to Oblivion’s console mode, providing the following option is set (and it is by default):

bAllowConsole=1   (default 1)

The console allows you to execute commands within the game. The most common use at the moment is to display in-game FPS. Simply bring down the console and type the following commands:

setdebugtext 12
tdt

Nice. But there’s more to play with. Two extra commands we recommend you use while experimenting with .ini file tweaks and mods are as follows:

setdebugtext 13

This displays a swag of information including the total size of texture memory in use. It’s worth noting that if this is larger than the size of your video card’s onboard memory, you going to run into performance problems. As a result it’s worth checking whenever you install mods that add textures to the game. For example, some basic figures of texture memory use while in the wilderness after installing the enhanced textures mods and uGridsToLoad tweak:

Default Oblivion + uGridsToLoad=7: ~230M
2048x2048 textures + uGridsToLoad=7: ~303M
4096x4096 textures + uGridsToLoad=7: ~430M

So it’s worth noting that if you have a 256M video card, and you use the higher resolution replacement textures, you’ll probably want to leave uGridsToLoad at its default ‘5’ setting. Grids, being a multiple of cells, take a chunk of memory each.

setdebugtext 5

This setting shows the CPU time allocated to the processing of scripts. By default, on our X2 4400+ system, the stock scripts use no more than about 0.2% of CPU power. In other words, negligible.

If you’re quick with the console key to pause the display you’ll see the total number of scripts being executed, and how many of these are quest related. All quests are scripts, continually running to check if your progress triggers the next event.

But here’s why this command is good to know: modders can and do use scripts to implement some of the wondrous new features their mods bring to the game. For the most part these scripts are, like the original Oblivion ones, so quick to run in the engine that they have no impact at all on CPU usage (something that couldn't be said for Morrowind!) For example, the author of this guide is currently running some 30 mods and none of them have measurably increased the level of processing for scripts.

But unfortunately this won’t always be the case. By way of example an excellent, brilliant mod idea called Dejunai's Harvest (see Part 3: Mods) removes alchemical plants from the world after you’ve picked them. It works perfectly, but in order for this to work a script has to run to continually check the status of these plants (they ‘grow back’ after a set number of days, too).

After noting what appeared to be an ever so slight slowdown in the game setdebugtext 5 revealed that the script in this mod alone was using 2% of the CPU, ten times more than all the other scripts combined. And though only 2%, it was enough to cause slight stuttering in game.

So if performance is sluggish, check that one of your mods isn’t slowing you down. If it is, ask yourself if you can live without it.

Update: Dejunai's Harvest mod has since been much improved and no longer causes a performance drain. Fantastic work! Get the new version here (download).

A really quick introduction to levelled lists
(cover your eyes if you don’t want the magic to be broken)

The official Oblivion forums are a hot bed of discussion regarding one of the key design elements of the game: how the world increases in difficulty as the game progresses in order to maintain a challenge. Understand there are three issues at play here:

= How the player levels up
= How the world's creatures level with the player
= How the world's items and loot level with the player

Some of this information is stored in the game mechanics as 'lists' of data, linked into the player's level, that dictate what appears in the game and when. For better or for worse the default in Oblivion is to have creatures and items gain in level as the player does, in accordance with their level. In other words, the world adapts to the player. Generally, this is considered a Bad Thing for these reasons:

= Items have little or no value – even the most potent items in the game can be found on low level creatures such as bandits as the player gains levels. This has the effect of making rare items valueless, and powerful items diluted. This is a factor of item and loot level lists.
= Encounters level to match the player – little sense of accomplishment is attained, for the player is never really any better than the foes he meets. This is a factor of creature level lists and item level lists.
= Encounters become monotonous – some medium and low level creatures are filtered out as the player levels, disappearing from the world altogether, resulting in the player combating the same creatures over and over. This is a factor of creature level lists.

The discussion goes like this: to create a more enjoyable game and engender a greater sense of accomplishment is to change these lists so the player adapts to the world, rather than the other way around. It's an interesting debate, and the reason for this summary – if you choose to look for and install a mod that fixes or improves on Oblivion's default levelled lists be sure to:

= Understand which levelled list the mod changes. Some will change more than one.
= If you use multiple mods, be sure they work well together!

We recommend, in Part 3, a set of mods to improve your game this way if you so choose, but note these are not essential. Oblivion is still a highly enjoyable game as it stands, but the option is there if you long for a more in-depth and rewarding style of play.

Next, Part 3: Mod enhancements.