Saturday, March 19, 2011

Changing the FOV in Mass Effect 2

See also: Changing the FOV in Mass Effect 3

By default, Mass Effect 2 has a narrow field-of-view, and you may find that the lowest mouse sensitivity setting (apparently called "Camera Sensitivity" in the game) is too high for many mice. Tweaking these settings requires that you change a file called Coalesced.ini. If you installed Mass Effect 2 via Steam, this file will probably be located at one of these two paths:

C:\Program Files (x86)\Steam\steamapps\common\mass effect 2\BioGame\Config\PC\Cooked
C:\Program Files\Steam\steamapps\common\mass effect 2\BioGame\Config\PC\Cooked

This strange file is a binary file that contains numerous text files embedded within it. The file must not be edited with Notepad (which corrupts it if you save changes). It can be edited with Notepad2 (an excellent replacement for Notepad), but there are reports that doing so will cause Mass Effect 2 to crash on startup (I didn't actually verify this, I just assume the reports are true). I don't mean that you shouldn't edit it with Notepad2, just that if you do, then you need to run a special utility that "fixes" the file after you edit it. Apparently the "binary" part of the file needs to be updated whenever the "text" part is updated. It's not possible to do this manually, so you need a special program to do the job for you.

Before changing Coalesced.ini, make a backup, in case you don't like your changes, make a serious mistake, or you can't figure out how to do the "fixing" process.

There are at least three programs that can fix Coalesced.ini: a C++ program, a Ruby program which is, apparently, no longer on the web, and a program called ME2CoalescedEditor. The last one is the one I use. ME2CoalescedEditor is actually intended to help you view, search and edit the various parts of Coalesced.ini, but its user interface is somewhat confusing.

Therefore, you may wish to edit Coalesced.ini with Notepad2 instead, and only use ME2CoalescedEditor to "fix" the file so that Mass Effect 2 can load it correctly without crashing. If you choose this approach,
  1. edit and save Coalesced.ini with Notepad2
  2. Start ME2CoalescedEditor, click the Commands menu, and choose Rebuild Coalesced.
  3. Exit ME2CoalescedEditor (and perhaps start ME2 to test your changes.)

There is actually a fourth option for editing Coalesced.ini, the "Coalesced Compiler", but it comes with its own special "split" version of Coalesced.ini, so apparently it does not let you edit your own original copy of Coalesced.ini.

Changing the field-of-view

My best friend and I play ME2 on a very big screen and we can't stand the default FOV. We need more peripheral vision... a lot more. The default actually 70 degrees; we use 100 or even 110 degrees instead. There is a line in Coalesced.ini that says FOVAngle=90, but apparently this line has no effect.

I found a command that does change the FOV; it's called simply FOV. This command, apparently, must be part of a key binding (Command="....FOV 100...."). Unfortunately, this command overrides the FOV permanently, instead of just changing the default FOV. When you right-click to aim, your view is supposed to zoom in, but if you have already issued an FOV command then it sticks, and your view does not zoom in at all! My solution to this problem is to issue a FOV command when you right-click, and another FOV command when you release the right mouse button.

My solution involves changing the Shared_Aim binding under BIOInput's [SFXGame.SFXGameModeBase] section. It looks like this originally:

Bindings=( Name="Shared_Aim", Command="SwapWeaponIfEmpty | TightAim | OnRelease StopTightAim" )

Change it as follows (change FOV 50 and FOV 100 to match your personal preference):

Bindings=( Name="Shared_Aim", Command="FOV 0 | SwapWeaponIfEmpty | TightAim | OnRelease StopTightAim | OnRelease FOV 100" )

The "FOV 0" command allows the game to revert to its normal FOV.

During cutscenes the FOV will not work correctly correctly. In order to change the field-of-view whenever you want, I suggest binding some FOV commands to an unused key or to the number pad. Under the BIOInput heading [SFXGame.SFXGameModeBase], add lines such as the following:

Bindings=( Name="NumPadOne", Command="FOV 30")
Bindings=( Name="NumPadTwo", Command="FOV 40")
Bindings=( Name="NumPadThree", Command="FOV 50")
Bindings=( Name="NumPadFour", Command="FOV 60")
Bindings=( Name="NumPadFive", Command="FOV 70")
Bindings=( Name="NumPadSix", Command="FOV 80")
Bindings=( Name="NumPadSeven", Command="FOV 90")
Bindings=( Name="NumPadEight", Command="FOV 100")
Bindings=( Name="NumPadNine", Command="FOV 110")
Bindings=( Name="NumPadZero", Command="FOV 0")

Now you should be able to zoom in or out whenever you want by pressing a button on your keyboard's number pad... higher numbers give you more peripheral vision. Particularly important is the num-pad zero key, which releases your FOV override so that the game can choose the FOV. Actually, you'll want to push this key every time you start dialogue with someone, and every time a cutscene starts, so you might want to bind "FOV 0" to a more convenient key... I leave that as an exercise to the reader.

In our apartment we have no need of the lower FOV settings, so we use these fun commands instead:

Bindings=( Name="NumPadOne", Command="Ghost" )
Bindings=( Name="NumPadTwo", Command="Walk" )
Bindings=( Name="NumPadThree", Command="shot")

The "Ghost" command lets you float in any direction, even through walls; "Walk" restores normal walking ability; and "shot" supposedly takes a screen-shot, although I haven't tried it yet. I got stuck in two places in Mass Effect 2, and Ghost allowed me to get un-stuck.

Changing the mouse sensitivity

To make the mouse less sensitive in-game, find the MouseSensitivity line under [SFXGame.BioPlayerInput]:


Change this to a lower number. For me,


worked best.