Far Cry Tweak Guide
[Page 9] Advanced Tweaking (Pt.3)
System.cfg, Game.cfg & Devmode.lua
All of the game's major settings are held in the System.cfg and Game.cfg files in your \Ubisoft\Crytek\Far Cry directory. These files are read, and written to, by Far Cry each time the game launches and also when any of the game's settings are changed in-game, or by the Far Cry Configuration Tool, and sometimes when certain settings are changed in the Console.
However, the personal settings for your Profile are also stored in the \Ubisoft\Crytek\Far Cry\Profiles\Player directory under the filenames [profilename]_system.cfg and [profilename]_game.cfg. Any changes you make to the general .cfg settings while using a particular profile will be transferred to the profile-specific .cfg files as well. Whenever you switch profiles, Far Cry then transfers the settings from the relevant profile's .cfg files to the global System.cfg and Game.cfg files, making the game execute them the next time the game starts up. Keep this in mind, so that when you switch profiles you don't wonder why you've lost some of your tweaks. Try to stick with one profile if you can.
Below are descriptions of the Game.cfg and System.cfg files, and the mysterious Devmode.lua file which together control most of the game's settings.
Game.cfg
The Game.cfg file contains all your control key bindings and some important mouse settings. You should change all your major control bindings in the Control Options screen under the main Options (See In-Game Settings section). You can also edit them here if you wish, however while you can edit the existing settings in the file, if you add any additional lines to the file they will be deleted the next time the game starts. I am currently unaware of how to make additional key bindings "stick" in Far Cry, but I will update the guide when I know how. If you want to use additional keybindings you'll have to use Devmode for now (See Devmode.lua section below).
System.cfg
The System.cfg file contains all your major game settings (aside from key bindings). It includes the types of settings found in the Far Cry Configuration Tool, the major in-game settings, as well a bunch of other video and audio settings. While there are many commands you can change in the System.cfg file, this section only covers the major commands and what they do, and also will not cover again the settings and commands already explained in detail in the In-Game Settings and Far Cry Configuration Tool sections above. If you wish to change those settings, I strongly recommend you use the above methods to do so, and only edit System.cfg to change settings which cannot be accessed in any other way.
Just like the Game.cfg file, putting additional lines in the System.cfg file will not work. However, you can make Far Cry run additional commands by creating a new blank text file and renaming it to Systemcfgoverride.cfg, and placing it in your \Ubisoft\Crytek\Far Cry directory. You can now edit Systemcfgoverride.cfg and insert new commands, such as Console commands or one of the many other commands and variables contained in the consolecommandsandvars.txt file (See Console Commands section for details) and they will be executed each time Far Cry runs without being overwritten.
Below are the major commands which can be edited in System.cfg, and what each will do:
Update: If you've installed the official 1.4 Patch some of these commands may only work in Devmode.
cl_weapon_fx [0,1,2] - 0=Low, 1=Medium, 2=High. Controls the complexity of weapon firing effects. The higher the setting the more realistic weapons fire is, but the lower your FPS when firing or observing weapons fire.
game_GliderBackImpulse = "2.5f"
game_GliderDamping = "0.15f"
game_GliderGravity = "-0.1f"
game_GliderStartGravity = "-0.8f"
Changing the values here alters the glider's flight characteristics. Experiment with various values.
r_DisplayInfo [0,1] - 0=Off, 1=On. The same as the Console command, it displays a range of information including number of polygons drawn and frames per second (FPS) at the top right of screen. Note that this will also show the Shader type used on the bottom line of the information display ('Render Path'), if you're wondering whether SM3.0 has been enabled for example. Also note that changing this setting affects whether the game boots up with this information displayed by default or not.
r_Driver [OpenGL, Direct3D9] - OpenGL=Use OpenGL renderer. Direct3D9=Use default DirectX9.0 renderer. Setting the renderer to OpenGL may resolve problems and improve performance for some users, especially Nvidia graphics card owners. If you experience problems revert back to the default Direct3D9 renderer for optimal stability/compatibility.
r_HDRRendering [0-11] - 0=Off, 1-11=Level of Glare. High Dynamic Range (HDR) Rendering is a rendering method which can present incredibly realistic images by using vivid colors and lighting. By default this setting is disabled, but if your graphics settings are equivalent to 'Very High' and you have a graphics card which supports Shader Model 3.0 - that is the GeForce 6600 series and above or the ATI X1000 series or newer - then you can enable it by assigning a value between 1 and 11 for this setting. The values determine the level of glare from this effect, with suggested values being 7 or 2. Note that enabling HDR Rendering can see a significant drop in FPS. Also note that HDR will not normally work if Antialiasing is enabled, unless you have a GeForce 8 or ATI X1X00 series card or above.
r_HDRBrightOffset = "6.000000"
r_HDRBrightThreshold = "3.000000"
r_HDRLevel = "0.600000"
Changing the above values will affect the way HDR Rendering affects image quality (only if HDRRendering is enabled - see above). Experiment with various values, as they can affect performance and image quality.
r_Height [Pixelheight] - Determines the height of the screen resolution in pixels.
r_Width [Pixelwidth] - Determines the width of the screen resolution in pixels.
Changing these two settings will allow you to run in resolutions of less than 800 width and 600 height (the officially supported minimum resolution for Far Cry). Be very careful to select standard values supported by your monitor such as 640 x 480.
r_Colorbits [8,16,24,32] - Determines the color depth used for Far Cry. Lowering this will improve performance at the cost of image quality. You may experience glitches and problems at color depths below 32, and also if your desktop color depth doesn't match the one you select here for Far Cry.
r_EnhanceImage [0,1] - 0=Off, 1=On. When enabled, allows image post-processing enhancement. This can improve image quality, but reduce performance. Disable for an FPS boost if you don't mind the image quality degredation.
r_EnhanceImageAmount [0.0-1.0] - Determines the amount of image enhancement, if EnhanceImage is enabled (see above). The higher the value the better the quality of image processing used, but the less your FPS.
r_FSAA_samples [1-8] - Determines the level of Full Screen Anti Aliasing (FSAA) used, if FSAA is enabled. The higher the level of FSAA, the cleaner and less jagged the image but the significantly lower your FPS. Higher modes of FSAA may not be supported on all graphics cards, so be careful. For example setting this to 8 on an ATI card will result in a crash.
r_SelfShadow [0,1] - 0=Off, 1=On. When turned on enables per-pixel shadows depth comparing. This should mean that when turned on, vehicles and characters will also cast shadows on themselves. Turn off if you want higher performance with no noticeable image quality loss.
r_VolumetricFog [0,1] - Determines whether Volumetric Fog is used in areas requiring fog effects. Disabling this setting will use a lesser quality fog effect which is far less realistic, but may resolve problems and improve FPS in such areas.
s_DopplerValue [0.0-?] - If the Doppler effect is enabled, this number determines the strength of the doppler effect, which is changing pitch as sound sources move rapidly around you. Experiment with various values, with FPS impact likely to be negligible.
s_DummySound [0,1] - 0=Off 1=On. Enabling this setting turns all sound off.
s_MaxHWChannels [0-64] - Set the maximum number of hardware sound channels (0=Software sound) usable by Far Cry. If you know your hardware supports more hardware channels (e.g. 64 channels on Audigy1/Audigy2 cards) then attempt to increase this value for an increase in audio quality but a decrease in FPS.
s_MaxSoundDist [0-?] - Determines the maximum distance (in meters) at which sounds are heard by the character. The higher the value, the lower your FPS.
s_MinHWChannels [0-64] - Determines the minimum number of hardware sound channels required before Far Cry will allow Hardware Sound and effects like EAX. If you are having problems with enabling hardware sound on a sound card, try lowering this value and see if it helps. May reduce performance if reduced.
s_SampleRate [11025-44100] - Determines the sampling rate at which Far Cry audio (music and sound effects) are played back. Lowering this setting will improve performance but reduce audio quality.
sv_maxbitspersecond = "30000"
sv_maxrate = "30000"
sv_maxrate_lan = "100000"
See the Console Commands section for usage of these multiplayer server commands.
Devmode.lua
There is one more configuration file we can edit in Far Cry, and it's called Devmode.lua. This file contains the Developer Mode (Devmode) settings, but to access it first you must go to your Far Cry game icon, right click on it and select Properties. In the Target box, insert a space after the last " mark and type "-Devmode" (without quotes). It should look something like this:
"C:\Program Files\UBISOFT\Crytek\Far Cry\Bin32\FarCry.exe" -Devmode
Click Apply and OK to close the Icon Properties box. The next time you run Far Cry from this icon it will begin in Developer Mode, which is essentially a cheat mode. Aside from now having access to every level in the game, there are some nifty commands and functions available in Devmode, and the ones which are accessible in the Devmode.lua file are detailed here. Others are detailed in the Console Commands section below. Remember to create a backup of Devmode.lua before making any changes to it.
Important Update: Make sure you disable Devmode (i.e. remove it from your shortcut) before playing Far Cry Multiplayer on Punkbuster-enabled servers.
Here is a list of Developer Mode commands in Devmode.lua and what they do. Performance impacts are not discussed since these are not performance-related commands or tweaks:
cl_display_hud [0,1] - 0=Off, 1=On. If turned off, this setting removes all traces of the Heads Up Display (HUD) on the screen. This can be useful for taking screenshots for example.
cl_drunken_cam [0,1] - 0=Off, 1=On. If turned on, this makes the view look as though the player is drunk. I don't use this tweak, and instead prefer to do it the old-fashioned way with 15 beers.
ThirdPersonView [0,1] - 0=Off, 1=On. If turned on, Jack will be visible on screen in the 3rd person view. You can control him the same as usual, and also use the F1 button (default binding - see below) to switch between 1st and 3rd person views.
There are already several working key bindings by default in Devmode. You can use the following commands at any time while in Devmode:
F1 - Toggle between 1st and 3rd person views.
F2 - Skip to the nearest save point.
F3 - Toggle Old Designer Mode (Fly mode).
F4 - Toggle New Designer Mode (Fly mode).
F8 - Toggle Debugger.
F11 - Toggle AI Information on screen.
F12 - Take screenshot.
P - Give player all weapons.
O - Give player all ammunition.
However if you look around the Devmode.lua file, you will see several key bindings which have -- marks in front of them. This means they won't be read by the game engine and loaded up when Far Cry starts in Devmode. By removing the -- in front of these bindings you can enable them, but be very careful. Some of them conflict with existing key bindings or don't work, or cause problems. For example, here are two functions which are assigned to F11, but only the first one is currently enabled, as the second one has -- marks in front of it:
Input:BindCommandToKey("#ToggleAIInfo()","f11",1);
--Input:BindCommandToKey("#ToggleScreenshotMode()","f11",1);
To switch them around, insert -- in front of the first line, and remove the -- from the second line. Save the Devmode.lua file and relaunch Far Cry. You can now use F11 in Devmode to toggle the special "Screenshot mode", which if turned on, removes the HUD and crosshair, as well as any info displays on screen, and the enemy AI also no longer sees or hears you. This is perfect for wandering around the game and taking screenshots (using F12), especially when combined with F4 (Fly mode). Press F11 again to return to normal mode at any time.
So unlike the Game.cfg file you can not only edit Devmode.lua, but also insert your own new keybindings with various commands, but once again be careful. See the Console Commands section below for some useful Devmode-only console commands which you can use in the Devmode console, or insert into Devmode.lua. Devmode is great for experimenting, but I take no responsibility if you ruin your savegames for example, so backup everything before playing around. And before you ask, your savegames can be found under the \UBISOFT\Crytek\Far Cry\Profiles\player\[Profilename]\Savegames\ directory.
The next section covers some useful Console Commands which you can use both in normal mode and Developer mode