BioShock Tweak Guide

[Page 8] Advanced Tweaking (Pt.2)



[D3DDrv10.D3DRenderDevice10]


This render device is only used when running Windows Vista with a DX10-capable graphics card. In all other respects the settings in this section have the same functionality as that under the regular DX9 renderer above. There is however one additional setting:


UseHighDetailShadowMaps=True


When DX10 mode is being used, this option is set to True by default. Shadows in the game will be even sharper and more detailed. You can however specifically disable this particular aspect of DX10 rendering if you wish to gain an improvement in FPS, by setting this option to False.


There are two other DirectX 10-specific options which you can find under the [Engine.RenderConfig] section further below: UseRippleSystem and UseHighDetailSoftParticles.



[Engine.LevelInfo]


PhysicsDetailLevel=PDL_Medium


BioShock uses the Havok Physics engine, and so this line which seems to be a legacy of the rival Karma Physics engine should have no impact even if you change it to PDL_High for example.



[Havok]


HavokNumThreads=2


BioShock benefits significantly from running on a multi-core CPU (See Conclusion section). This setting controls the maximum number of separate 'threads' on which the Havok physics engine may run. For example if you have a dual core CPU, this should be set to 2; if you have a quad core CPU try setting this to 4. However you cannot force the physics engine to run more threads than you have physical cores.



[Engine.RenderConfig]


UseSoftwareAntiAliasing=True


In theory this setting should affect whether a blurry form of Antialiasing is used to smooth jagged edges; in practice it seems to have no impact at all on image quality or performance whether enabled or disabled. It is likely only for the XBox 360, as are the EdgeDetectCutoff and EdgeBlurSize settings. To enable real antialiasing in BioShock check Antialiasing under the In-Game Settings section of the guide.


UseRippleSystem=True


When DX10 mode is being used, this option controls the additional ripple physics effects used on water. For example if you're wading through water, the ripples from your wake will be realistic, whereas in DX9 mode you will just see generic a splash. You can individually disable this aspect of DX10 by setting this to False for an FPS improvement in water areas.


UseHighDetailSoftParticles=True


As with UseHighDetailShadowMaps and UseRippleSystem, this variable controls one of the additional features which DX10 mode offers over DX9 mode - soft particles. You can see this effect when looking at things like fire; when soft particles are used fire blends with its surroundings more smoothly, there is no noticeable 'clipping' between the fire and other objects. However once again if you wish to disable this option individually, you can set it to False to gain FPS in areas where such effects are used.


UseSpecCubeMap=True


This setting appears to determine whether cube mapping is used on certain specular (shiny) surfaces. Setting it to false can cause some graphical glitches (e.g. on melting ice), so it is not recommended.


UseMultithreading=True


Should be set to True for optimal performance if you have a multi-core system. See the Conclusion section for more details of multithreading.



[ShockGame.ShockUserSettings]


MouseSensitivity=3.000000


This option is the same as the in-game Mouse Sensitivity option available under Customize Controls (See In-Game Settings section). However here you can adjust it more finely if you wish, and also set it above the in-game maximum of 9.


AutoAim=True


By default the game makes sure that you automatically hit enemy targets with things like electro-bolts as long as the target is anywhere within your red circular aiming reticule. Setting this option to False removes this auto-aim tendency for Plasmids, and means that your shot goes exactly where the middle of the aiming reticule is currently pointed. This makes the game slightly harder for those who want a challenge.



Click to enlarge

User.ini


The main purpose of User.ini is to hold key bindings and user interface settings. For the most part you shouldn't need to alter the settings in this file as you can customize your key bindings by using the options under Customize Controls in the in-game settings. However for those who want to get involved with customizing the commands or troubleshooting control difficulties, editing User.ini is necessary.



[Engine.Input]


This section of User.ini lists aliases, which are like macros - you can bind multiple commands to a particular alias, and then assign the alias to a particular key. The game engine has a set of predefined engine commands, and although you can assign these commands directly to keys (See the Default section further below), the aliases can translate those commands into something more workable for binding to keys. For example look at the following line:


Aliases[29]=(Command="DuckKeyPressed | onRelease DuckKeyReleased",Alias=Duck)


It contains two commands bound to one alias called Duck, each command separated by the pipe symbol (the | symbol). When this alias is bound to a key - which in Bioshock is C by default (for Crouch) - using that key will execute both commands. In this case when you press C the engine will execute the DuckKeyPressed command, which results in the character crouching. When you let go of C, the DuckKeyReleased command is executed, which in this case leaves the character ducked, until you press C again.


One of the reason aliases are used is so that if you want to change the way a command works, you can alter the alias in this section, and everywhere that the alias is used in User.ini the action will also change. For example at the moment the Crouch key works as a toggle; that is if you press it once you're crouched, and you need to press it again to stand up. But say you want to make the Crouch key behave such that you crouch only for as long as you hold down the key, and as soon as you let go you stand up again. You would alter the above Alias line to:


Aliases[29]=(Command="DuckKeyPressed | onRelease DuckKeyPressed",Alias=Duck)


The changed portion is bolded, and basically the new alias says that when the Crouch key is pressed and held down, it's counted as being pressed as normal, but the onRelease function has been changed so that when you release the key it runs the DuckKeyPressed function again, which in effect makes the character stand up.


To really understand and take advantage of aliases, you will need to experiment and try various things as it can be quite complex. For example try changing your default movement speed. By default aliases 2, 3, 4 and 5 set your moveforward, moveback and move side to side (strafe) speeds. So to alter the default move forward speed of your character, edit this alias:


Aliases[2]=(Command="Axis aBaseY SpeedBase=1.0 Speed=+1200.0|HACK_TriggerEffectEvent PlayerMoved|onRelease HACK_UnTriggerEffectEvent PlayerMoved",Alias=MoveForward)


Remove SpeedBase=1.0, and change the Speed=+1200.0 value to whatever you wish, e.g. Speed=+800.0 to move forward at a slower speed.



[Default]


Whether using an alias defined above, or inputting a command directly, it can be bound to a key function in this section, which is the main area for the standard PC keyboard and mouse bindings used in Bioshock. To further use the example above, the alias Duck has been bound to the C key by default in this section, as seen by the line:


C=Duck


You can find all the individual keyboard keys, including function and numeric keys, in this section. You can alter them relatively easily by adding, deleting or moving the binding from one key to another. For example to move Quicksave from the Function 8 key, go to F8=QuickSave and delete the word Quicksave. You can now make any other free key =Quicksave if you wish. Obviously for normal key bindings it's much wiser to do this from within the in-game settings.


There are also various other sections under User.ini which have key bindings, but these are bindings for particular interfaces in the game, such as when using a vending machine. Sometimes these different interfaces have a different use for a particular key which is defined in the default area, but only when using that interface.


Once again experiment to see which bindings will suit your taste.


Mouse Acceleration: Note that for those having problems with mouse acceleration in BioShock, you might be interested in changing the following bindings in this section:


MouseX=IF_MOUSE_LOOK_ENABLED Count bXAxis | IF_MOUSE_LOOK_ENABLED Axis aMouseX Speed=2500.0

MouseY=IF_MOUSE_LOOK_ENABLED Count bYAxis | IF_MOUSE_LOOK_ENABLED Axis aMouseY Speed=2500.0


The lines above control the speed of the mouse along the X and Y axes, and if you change the Speed= value of each to something lower you can reduce the feeling of acceleration in the game. You should go to the [Engine.Input] section above and disable (put a ; in front of each) the lines for Aliases 6 - 9, and Aliases 20 - 23.



Console Commands


Although BioShock doesn't have a proper in-game console you can open, there is a way you can use a range of common Unreal Engine console commands: you can bind them to specific keys in User.ini above, and then use the keys in the game to invoke the command. For example you can bind the command FLY to the Function 11 key by editing User.ini under the [Default] section to show F11=FLY. When you press F11 in the game your character will be able to fly around, and to disable it you'll need to bind another key to use the WALK command (e.g. F12=WALK).


Some of the confirmed working commands you can bind are as follows:


God - Invincibility

Fly - Allows you to fly around

Walk - Disables fly and ghost mode

Ghost - Allows you to move through solid objects

Suicide - Kills your character

Killpawns - Kills all enemy on the level

ToggleshowAIs - Toggles the presence of enemy On/Off

Givehealth - Refills your Health bar

Givebioammo - Refills your Eve bar

IGBigbucks - Gives you $500

HideHUD - Disables the on-screen HUD elements

ShowHUD - Enables the on-screen HUD elements

ToggleHUD - Toggles the on-screen HUD elements On/Off

Slomo - Slows everything down

Freezeframe - Freezes the game

Shot - Takes a screenshot in BMP format and places it in the same folder as BioShock.ini

Togglesoundeffects - Turns sound effects (but not music or ambient sounds) On/Off

SetFOV [degrees] - Sets your Field of View to the specified degrees, e.g. SetFOV 90

ResetFOV - Resets Field of View to default

GEP [Plasmid/Tonic name] - Gives you a specific tonic or plasmid, e.g. GEP ElectricBoltThree

Note: A full list of all plasmid and tonic names can be downloaded from here.


Thanks to Jonas Beckman and Burning Fish from the TweakGuides Forums for the heads-up on this method and some of the commands. Thanks in particular to Veegun for a large number of additional working commands and the tonic and plasmid names. You can view a more detailed list of console commands here.



More Tweaks


I've tested all the applicable settings in both Bioshock.ini and User.ini thoroughly, and unfortunately many of them, although they have tempting titles, are non-functional. This is common in many games, because they are built on third party game engines, and the developers of the game do not use particular portions of the engine so the generic variables in the .ini file may remain, but the functionality is superceded or not implemented. I've only tried to document all the major working commands in this section, excluding those which can already be completely altered using in-game settings.


However I'm sure there may be other tweaks of value, so if you find something which you genuinely believe is working (and have evidence of it making a difference), please Email Me so I can include it in the guide for others to use. Again, please no guesses or speculation about what something does, unfortunately there are already many invalid/non-functional BioShock tweaks being distributed and promoted on various forums. I only want to document actual working tweaks of significance.


Also note that there are several command line switches for BioShock, including the -dx9 and -nointro ones noted in other sections of this guide. The -log switch is not of great use to people so it's been excluded. If you have any other working command line switches worth sharing, please submit them for inclusion as well.



The next page brings the guide to a conclusion with some important information.