Fallout 3 Tweak Guide

[Page 10] Advanced Tweaking (Pt.3)

Grass

iMinGrassSize=80 - This setting controls the density of grass clumps. The higher the value, the less tightly packed grassy areas will be; the lower the value, the more grass there will be. In other words, lowering this value will significantly reduce FPS in most outdoor areas, but can make the game world seem more lush and overgrown. For example, try a value of 10 and it will radically alter what the wasteland looks like. Alternatively if you're after a performance boost or just want less grass for visual reasons, raise it to a value such as 140 to greatly thin out the grass (Fallout.ini).

bForceFullLOD=0 - If set to =1, this variable increases the visible number of bushes, especially in the distance. The performance impact is minor, so if you want a bit of additional foliage in the game world, enable this setting (Fallout.ini).

fGrassStartFadeDistance=7000 - This variable controls the spread of grass into the distance, and is normally controlled via the Grass Fade Launcher option (See In-Game Settings section). Here you can adjust the grass range beyond the limits possible in the Launcher menu (FalloutPrefs.ini).

bDrawShaderGrass=1 - If set to 0 removes all grass from the wasteland, which obviously improves FPS in outdoor areas at the cost of realism (Fallout.ini).

fGrassWindMagnitudeMax=125.0000

fGrassWindMagnitudeMin=5.0000

These settings determine the extent to which wind affects grass swaying. For example, if you set both variables to =0, this will eliminate all grass swaying, which can improve FPS to some degree but reduces realism. Alternatively, you can raise both variables to make grass sway much more (Fallout.ini).

Water

iWaterReflectWidth=1024

iWaterReflectHeight=1024

The above variables control the width and height (i.e. the resolution) of water reflections. The higher the value for each, the more crisp and detailed reflections will be; the lower the value, the lower the detail. For example setting both of these to =256 will greatly reduce reflection detail in return for a boost in FPS around water areas. Conversely, you can raise these values to something like =2048 for an increase in reflection quality above the maximum normally possible using the in-game settings, however there will be a very sharp drop in performance around water (FalloutPrefs.ini).

Audio

fMainMenuMusicVolume=0.6000 - The volume of the music which plays in the background when in the game's main menu can't be adjusted anywhere in the game, except by using the Master Volume slider, which then in turn affects all sound and music. To alter just the menu music volume independently, change the value of this variable. Note that if you try to disable the main menu music altogether using the sTitleMusic=MainTitle variable, it will likely result in a crash, so instead just set this variable to =0.0000 to effectively disable the menu music (Fallout.ini).

bEnableAudioCache=1

iAudioCacheSize=2048

iMaxSizeForCachedSound=256

bEnableAudioCache=1 - The audio cache should be enabled to ensure a reduction in stuttering, however you can fine tune how much memory the game uses to cache audio with the iAudioCacheSize=2048 variable. The cache size is in KB, so a value of 2048 = 2MB for caching audio data. You can experiment with raising this value, e.g. double it to 4MB (=4096) to see if it further improves stuttering and audio performance in the game. You can also alter the iMaxSizeForCachedSound=256 value to change how many sounds are cached; higher values should mean more sounds are cached. Note however that the audio system in Fallout 3 seems very sensitive, and raising these variables too high, or indeed changing other audio-related variables can result in crashes at startup or exit (Fallout.ini).

Memory, Loading & Multi-threading

uInterior Cell Buffer=3

uExterior Cell Buffer=36

The above values determine how many cells (for interior or exterior areas as relevant) are buffered into RAM. Altering these values may help make performance smoother. For example, for 1GB of RAM you can try doubling the values (6 and 72 respectively). For 2GB of RAM, try 16 and 102 respectively. For higher amounts of RAM, try raising them higher, however note that you should also raise the iPreloadSizeLimit value below (Fallout.ini).

iPreloadSizeLimit=26214400 - This setting appears to determine the maximum amount (in bytes) of RAM allowed for preloading game data. Raising the value may reduce stuttering. The default value equates to around 25MB (divide the value of this variable by 1024 to get KB, then by 1024 again to get MB). For those with 1GB of system RAM, try doubling the variable to 52428800. For those with 2GB, try double again at 104857600 (100MB). You can raise these values even further to experiment, however note that raising this to a large amount doesn't force all the game data to sit in RAM, and can actually cause crashes. I suggest the maximum anyone should set this to should be around 262144000 (250MB), even for 4GB of RAM or more. Also make sure to raise your Cell Buffer values accordingly (see above) (Fallout.ini).

bPreemptivelyUnloadCells=0 - If set to 1, this variable attempts to unload cell data it thinks you won't need. This may help those with only 1GB of RAM, however for those with more RAM I recommend leaving it at =0 for greatly reduced stuttering. Setting this variable to =1 can also work against the benefits brought about by the other buffering/preload tweaks in this section, so again, it is not recommended (Fallout.ini).

bSelectivePurgeUnusedOnFastTravel=0 - If set to 1, this option removes a range of unnecessary data when you Fast Travel to another location. This can help keep memory usage down for those with less RAM, so it is recommended such people set this to =1, otherwise leave it at =0 for optimal performance on most systems (Fallout.ini).

bUseHardDriveCache=1 - Although Windows should already be using your hard drive cache by default for all drive operations, setting this variable to =1 should ensure it does. Note that some people report that enabling this setting can increase stuttering, so experiment to see if it helps or makes things worse for you. If in doubt, leave it at =0 (Fallout.ini).

bBackgroundLoadLipFiles=1

bLoadBackgroundFaceGen=1

bBackgroundCellLoads=1

bLoadHelmetsInBackground=1

iBackgroundLoadLoading=1

bBackgroundPathing=1

bBackgroundNavmeshUpdate=1

bCloneModelsInBackground=1

All of the above options relate to background loading to attempt to smooth FPS and reduce stutter. I recommend setting them all to =1 if they aren't already. At worst this will do no harm, and at best it may reduce stuttering and improve performance (Fallout.ini).

bUseThreadedBlood=1

bUseThreadedMorpher=1

bUseThreadedTempEffects=1

bUseThreadedParticleSystem=1

bUseThreadedAI=1

bUseMultiThreadedFaceGen=1

bUseMultiThreadedTrees=1

bMultiThreadAudio=0

iNumHavokThreads=5

All of the above variables relate to the use of the GameBryo engine's multithreading capabilities. Multithreading splits tasks into 'threads' where possible, and runs them in parallel across the cores of multi-core CPUs to potentially improve performance. Fallout 3 is already multi-threaded by default, however by enabling all these options you may gain additional performance if you run a multi-core CPU. In my testing I didn't see a dramatic improvement in CPU usage across both cores by enabling these options, nor an increase in FPS, but by the same token it can't hurt to enable them in case they provide marginal improvement. Note however that I found that setting bMultiThreadAudio=1 would cause a freeze upon exiting the game every time, so you may wish to keep this variable disabled for that reason. Indeed if you find you're having any other new problems after applying the above tweaks then revert them all to their original values as part of your troubleshooting (Fallout.ini).

bUseBackgroundFileLoader=0 - This variable may improve stuttering performance on some machines if set to =1, but in the past in games like Oblivion, it was known to cause issues on some machines. In my testing in Fallout 3 it seems to have no negative impacts, however experiment with it first and if in doubt, leave it at =0 (Fallout.ini).

Update: Some dual core and quad core CPU users have said that by inserting a new command iNumHWThreads=2 under the General section of Fallout.ini, and setting it to a value of 1, 2 or 4 (typically 2), this prevents freezing at certain points in the game. In practice this setting should not be required, as it appears to restrict the number of threads used by the game, however you can experiment with different values depending on how many cores of your CPU you want the game to use.

Update 2: In recent times many people have written to me and/or have also posted around the Internet that the tweaks in the [Memory, Loading & Multi-threading] section of the guide are either useless or harmful. I have clearly noted from day one that that these tweaks may have no impact, and having tested them myself to ensure that they aren't harmful, I mention that you can experiment with them if you wish, and reset them if you run into any problems. The reason they are still listed here is for the sake of completeness, so I don't receive hundreds of emails telling me that my guide is 'incomplete' because I don't cover these famous tweaks.

That covers the list of the most useful .ini variables I have found. Remember that I have tested all of the main variables in both .ini files, and in most cases the variables either do nothing useful, or nothing at all. That's why there are many seemingly important variables missing from the list above. If you know of any important .ini tweaks not listed above which do something useful, and importantly, you have actually tested them properly yourself (i.e. direct screenshot and FPS comparisons), then please Email Me and I will consider including them. Again, some of the popular Fallout 3 tweaks doing the rounds right now don't actually do anything at all - people have simply taken a guess at what an option in the .ini file does based on its name and then neglect to actually test the tweak under a consistent reproducible environment.

Also note that many people want 'pre-tweaked' .ini files which supposedly contain all the major customizations and optimizations. As always, my advice to such requests is that this is totally inappropriate; using other peoples' .ini files and settings will only lead to instability and/or graphical anomalies, since many of the entries are designed specifically for each system's capabilities, and/or the .ini file author hasn't tested the .ini file out on various systems, and/or they are simply not well aware of what all the .ini settings actually do and are just guessing on the impacts based on the names of the settings. Smart tweakers who want good image quality, performance along with system stability will familiarize themselves with the variables in this section and only apply the relevant tweaks after testing them on their system. There is no 'one size fits all' or automated approach to tweaking.

The next section covers the Console Commands available for use in Fallout 3.