BioShock Tweak Guide

[Page 7] Advanced Tweaking



Bioshock is based on the Unreal Engine 3.0, which fortunately has a range of advanced options you can configure outside the main in-game settings. These allow you to change both visual quality and performance parameters, as well as customizing the game in other ways. To access these settings, go to your \Documents and Settings\[Username]\Application Data\Bioshock directory (in Windows XP) or \Users\[Username]\AppData\Roaming\Bioshock (in Windows Vista). Note that to see these directories you need to go to Control Panel>Folder Options>View and select 'Show hidden files and folders'. Now look for the files Bioshock.ini and User.ini - these are the main files we will be editing. You can view and edit the contents of these files using a text editor like Windows Notepad, but I recommend that you back them up before making any changes. However if something does go wrong and you don't have a backup, you can delete these two files and new ones will be created with default settings, removing all your customizations. Any time BioShock crashes, these files will also be reset to the defaults.


Under the game's main directory you will also find Default.ini and DefUser.ini. These files hold the game's default configuration, and they're used as a template when the game needs to create new copies of Bioshock.ini or User.ini. Editing the Default.ini or DefUser.ini files results in permanently losing the default settings. It is generally not recommended, however if you wish to prevent your settings being lost then edit these files instead of Bioshock.ini and User.ini, but make sure to back them up first before doing so. In the first instance though I would strongly recommend making changes to Bioshock.ini and User.ini until you're sure your changes are stable and desirable.



Click to enlarge

There are a large number of sections and commands within Bioshock.ini and User.ini which have absolutely no impact whatsoever on BioShock. They are either parts of the UE3.0 engine which have not been implemented in BioShock, legacy parts of the engine no longer used, parts used for debugging/testing purposes, or which apply to platforms other than the PC. For example all Xenon-related sections in the .ini files relate only to the XBox 360 version of BioShock. These will obviously not be covered here, nor will settings you can change completely within the in-game options, or commands which have no impact. I've tested all the settings in these two .ini files, and only the major working settings are provided below:



Bioshock.ini


The main purpose of Bioshock.ini is to hold graphics, audio, and gameplay settings.


[Engine.Engine]


RenderDevice=D3DDrv.D3DRenderDevice


This setting determines which API the game uses for graphics, and the only choices are DX9 (D3DDrv.D3DRenderDevice) or DX10 (D3DDrv10.D3DRenderDevice10). You can already select these within the game if they're available for your hardware. You cannot force DX10 mode in XP, nor if you don't have a DX10 graphics card in Vista. You also cannot force OpenGL (OpenGLDrv.OpenGLRenderDevice) mode as this is not supported by the game. Depending on which API is shown as being used here, you should check the relevant section further below as to which rendering settings will apply to the game.


AudioDevice=FMODAudio.FMODAudioSubsystem


This setting determines which Audio API is used. By default the game uses the proprietary FMOD audio engine, and you cannot successfully alter BioShock's audio system to another one, such as the generic OpenAL sound renderer (ALAudio.ALAudioSubsystem). This is because the game's main audio found under the \Program Files\2K Games\BioShock\Content\Sounds_Windows directory comes in FMOD's proprietary streaming .fsb format and so can only be played back by the FMOD engine. So altering the audio renderer will only result in sound playback in the game's main menu and duirng .bik movie files, but not in the game itself. If you're having sound issues with FMOD see the Audio Options under the In-Game Settings section for details of solutions.



[Engine.GameEngine]


CacheSizeMegs=32


This value represents the amount of System RAM set aside for temporarily caching game information. This setting is not designed to impact on FPS as such, it is more for reducing loading pauses in-game. You can try a cache size of 64 or 128, however I don't suggest increasing this value any higher since the cache is not where the entire game can load into. In general given that BioShock is relatively smooth, altering this value will likely have no major impact on stuttering, but try raising it if you do notice stuttering.



[WinDrv.WindowsClient]


WindowedViewportX=1024
WindowedViewportY=768


These settings control the resolution of the game when run in Windowed mode. In case something prevents you from changing them in-game after a crash for example, alter them here.


FullscreenViewportX=1280
FullscreenViewportY=1024


These settings control the resolution of the game when run in fullscreen mode, and can be adjusted within the game. However if you want to try a custom resolution change the X (width) and Y (height) values above accordingly.


Brightness=0.500000
Contrast=0.500000
Gamma=1.000000


You can already adjust the Brightness using the in-game settings, however here you can also adjust the Contrast and overall Gamma of the picture using these settings, giving you finer control. Note however that altering these settings may temporarily override your Windows Desktop brightness, contrast and gamma settings as well after you exit the game. Rebooting or reversing any changes here will fix that.


CaptureMouse=True


This setting controls the way mouse movement is recorded by the game, and in general you won't gain anything by altering it. However for people who experience mouse lag, setting this option to False may help. See the In-Game Settings section for a discussion of mouse lag and fixes.


MouseYMultiplier=0.000000
MouseXMultiplier=0.000000


These settings control how magnified your mouse movements are. The MouseYMultiplier setting controls your mouse's up and down movements, the MouseXMultiplier setting controls the left and right ones. The larger the number you enter for these, the more exaggerated will be the translation of your physical mouse movements into in-game and in-menu movements on screen.



[FMODAudio.FMODAudioSubsystem]


As noted above, BioShock uses the FMOD audio engine, and not the generic OpenAL (ALAudio.ALAudioSubsystem) engine. Therefore only the settings under this section and audio-related options under the ShockGame.ShockUserSetting section further below affect the audio in the game.


MaxChannels=128


This option controls the maximum number of individual audio channels used for sound in BioShock. Almost all modern sound cards support at least 32 channels; Audigy series cards can support up to 64; X-Fi cards support up to 128. If you're having audio problems set this maximum to the maximum channels supported by your audio device, or a lower value such as 32 or even 16 if all else fails. This can reduce audio glitches and may improve performance, but if set too low will result in missing sound effects.


MaxStreams=8


BioShock uses a streaming audio system, and this setting appears to determine the maximum number of concurrent streams of audio which are possible at any time. Experimentation with this setting didn't show any real benefit, but if you find you're getting a lot of stuttering you might want to try lowering this value (e.g. to 4).


StreamBufferSize=256


This option determines the buffer size in KB for each audio stream. Buffering the audio before playback prevents skips and stutters. The default seems optimal, but if you find you have audio stuttering or skipping, or audio delays, try lowering this value this value, e.g. to 128, especially on systems with only 1GB of RAM.



[D3DDrv.D3DRenderDevice]


HighDetailActors=True
SuperHighDetailActors=True


It is worth noting that the above settings in combination are the same as the in-game Actor Detail setting (See In-Game Settings section). When both are False this is the same as Low Actor Detail; when both are True this is the same as High; and when only the first is True this is equal to Medium.


UsePrecaching=True


If set to True this allows the game to precache (load in advance) a range of graphics data. This helps reduce loading pauses, choppiness and hitches in the game (see also AvoidHitches below). Only set this to False if troubleshooting a problem, such as crashes during game loads, or if you want to try to reduce loading level loading times in return for more in-game stuttering. In general there should be no real reason to ever disable precaching in BioShock.


UseTrilinear=True


If set to False this option disables Trilinear Filtering and uses basic Bilinear Filtering for textures instead. The results are a slight decline in the crispness of textures in return for potentially improved performance, but in practice the performance and image quality impact is minimal. The image quality impact is most visible if you've also lowered the default Anisotropic Filtering (See LevelofAnisotropy below).


ReduceMouseLag=True


This option is clearly designed to reduce mouse lag, however unfortunately it can also reduce FPS as well. I recommend setting this option to False (along with the one below), and then check Customize Controls under the In-Game Settings section for more details of why mouse lag occurs and the main solutions for reducing it.


DoubleBufferMouseLag=True


Another option designed to fix mouse lag, likely specifically for lag caused when VSync is On and Triple Buffering is not enabled. Ideally you should disable VSync, or use Triple Buffering if you have VSync On. I recommend setting this to False and again refer to the In-Game Settings section for more details of VSync, Triple Buffering and mouse lag.


DesiredRefreshRate=60


If you have VSync enabled (See In-Game Settings section) then your Refresh Rate will be limited to whatever this setting is. You should set this value to the highest refresh rate supported by your monitor at your desired resolution. For example, your monitor may support a maximum refresh rate of 85Hz at 1280x1024, so you would alter this setting to =85. Note that this setting has no impact if you have VSync disabled.


LevelOfAnisotropy=4


This setting controls the level of Anisotropic Filtering used in BioShock. For more details of Anisotropic Filtering see this page. The minimum value is 1 which turns off AF. A value of 2 provides 2x AF, 4 is 4x AF and so forth. Note that you can also force Anisotropic Filtering through your graphics card's control panel - for optimal performance choose one method or the other of applying AF to BioShock, not both.


OverrideDesktopRefreshRate=False


If set to True, this setting allows you to exceed any refresh rate limitations Windows imposes. Set to True just to be safe, but if you already use a refresh rate fix or override then such as Refresh Force, changing this setting will have no effect.


AvoidHitches=False


Hitches are small pauses/stutters, caused by your system pausing to load new data. If set to True, this setting may help reduce the occurrence of substantial hitches in the game, but it can also reduce average framerates, so leave this option at False unless you have very serious stuttering issues.


Use8bitBackBuffer=False


If this option is set to True, it uses a lower precision back buffer which can save graphics memory but results in a very noticeable reduction in image quality. In particular color banding - a clear gradation between colors - and purplish tinges will become visible. Some advanced special effects may also not be visible. In return performance will also improve noticeably, so only use this option if you're genuinely struggling for FPS or getting serious stuttering.


Use8bitOpacity=False


If set to True, this option uses 8-bit opacity for transparent surfaces. I'm not completely certain as testing showed no real difference in image quality or performance, but this option may provide slightly improved image quality, especially when any Transparency Antialiasing is used.



The next page continues the Bioshock.ini settings, and also looks at User.ini