Crysis Tweak Guide
[Page 8] Advanced Tweaking
While Crysis has many in-game options for adjusting visual quality and performance, and we've covered these in detail in the In-Game Settings section, fortunately that's not where the tweaking stops. The CryEngine2 game engine powering Crysis is extremely customizable, and there are a large number of parameters which can be adjusted to further alter the image quality and performance of the game. There are three main ways to tweak Crysis variables: using the in-game command console; by editing configuration (.cfg) files; and via the command line of the Crysis launch icon. This section of the guide covers both how to use these methods correctly, and a range of the most useful variables which can help you conduct advanced tweaking to suit your needs.
I must stress that advanced tweaking requires thought, patience and effort; there are no quick fixes here so please read all the instructions on this page carefully before proceeding.
The Crysis command console can be opened or closed at any time during the game by pressing the '~' key (the key above TAB, or below ESC). The console provides a real-time method of accessing the CryEngine2 game engine and altering command variables dynamically.
By default, you are restricted to only a handful of console commands you can use which will work; entering any other valid commands will simply receive an error message. This 'restricted mode' can be permanently lifted by either using the con_restricted 0 command in the console, or by adding con_restricted=0 to your System.cfg file (See further below). More importantly, even after removing restricted mode, some commands are still 'system' commands which can't be changed via the console, and can only be altered if inserted into System.cfg or an original system file such as diff_normal.cfg. See the Config Files section below for an explanation of this.
A full list of all the possible command variables is provided on the following pages, as well as more detailed descriptions for a range of the most useful commands. You can also list commands in the console at any time by entering the first few letters of them and pressing the TAB key. For example entering r_ and pressing TAB will list all the console commands starting with r_. To use a console command correctly, enter the command variable and then the value to assign to it. For example, to turn Motion Blur off using the command console, open the console and type the following, then press enter:
If you just want to see what the current value is for a variable without changing it, enter only the command variable name with no attached value - e.g. just enter r_motionblur in the console to see the current status of this variable. If you want to see some explanatory text on what it does, enter the variable name followed by a question mark, e.g. r_motionblur ?.
In general using console commands is the best way to test and see the impact of certain variables on your image quality and performance before you commit them to a .cfg file. There are also several console commands which provide useful diagnostic or system information, such as r_displayinfo 1 to see your current FPS.
Crysis has a range of configuration (.cfg) files spread throughout its directories which hold various configuration variables for the game. Most of these are generated by the game itself, or hold important presets, and are usually best left untouched. The main configuration files which are relevant to advanced tweaking by users are as follows:
Each of these files can be opened, viewed and edited using any text editor, such as Windows Wordpad or Notepad. Importantly, before making any changes to any of these files, make sure to create a backup and store it somewhere safe. Each of these files has a particular use, and the instructions for proper usage and optimal tweaking of these files is provided further below for each file.
This file can be found under the \Documents and Settings\User\My Documents\My Games\Crysis directory in XP, or \Users\User\Documents\My Games\Crysis directory in Vista. Game.cfg holds all the options you've chosen in the in-game settings screens. As such, there is no reason to edit it directly, you should alter your settings from within the game to prevent any problems. The game needs to write to this file whenever your in-game settings are changed, so don't write-protect it or add additional commands to it - if you wish to alter any of the commands in this file, insert them into an autoexec.cfg file, and if you wish to add new commands to run at startup, use the System.cfg or difficulty .cfg files for that purpose. See below for an explanation.
This file doesn't exist by default, so you need to create it by going to your \Program Files\Electronic Arts\Crytek\Crysis directory, right-clicking on an empty spot and selecting 'New>Text Document'. Then rename this .txt file to System.cfg (not System.cfg.txt). By default Crysis looks for the presence of this file each time it starts, and if the file exists and contains valid commands, they will be automatically executed as the game loads up. As such, this file is the perfect place to store most of the commands you wish to apply to Crysis at startup, particularly low-level engine commands.
The format for entering a command in a config file is different to that of commands used in the console. If you want to disable motion blur for example, the console command is r_motionblur 0, but when entered in the config file, it needs to be r_motionblur=0, and every command needs to be on a separate line.
Autoexec.cfg - Some people recommend creating an autoexec.cfg file in the same directory, instead of, or in addition to System.cfg. This is fine, since any commands in such a file will also be executed automatically when Crysis loads up. However it appears that any commands in an autoexec.cfg file are applied after the game engine has loaded, and not necessarily during engine startup, and this may impact on whether certain low-level commands (e.g. r_Driver) are successful or not. In particular, it appears that due to the loading sequence of .cfg files, that commands held in game.cfg may override those in System.cfg during startup, so if you wish to alter any of the game.cfg commands, use autoexec.cfg specifically for those.
Importantly: Some system commands still cannot be altered by using System.cfg, autoexec.cfg or any other custom user .cfg files. It appears they can only be altered when entered in an original Crysis system file, such as one one of the difficulty .cfg files (e.g. diff_normal.cfg). These commands are denoted by (system) on the following pages, and you should see the Diff_ file section further below for more details.
So on balance I recommend using System.cfg for your custom commands, and then any commands which don't work in system.cfg, first try inserting them into an additional autoexec.cfg file, and then if they still don't work insert them into the relevant difficulty.cfg file as necessary.
Finally, you can always execute commands in any existing or custom .cfg file you place in the same directory as Game.cfg by using the exec command. E.g. create a Mytweaks.cfg file, fill it with various commands, and then within Crysis, at any time you can open the console, type exec Mytweaks.cfg and they will all be executed straight away - though clearly commands which need to be altered at startup won't work this way.
These .cfg files can be found under the \Program Files\Electronic Arts\Crytek\Crysis\Game\Config\CVarGroups directory, and hold the specific commands to be applied at the various levels of each in-game setting. For each in-game setting there is an appropriate file of the same name. For example, to hold the variables for the Post Processing Quality setting, there is a file here called sys_spec_PostProcessing.cfg. At the top of this file are the default settings, and these correspond with the Very High value for Post Processing. The group of variables at the top are assigned a numeric equivalent of '4' for Very High, and beneath them, you'll find the ,  and  groups, which equate to Low, Medium and High respectively. The way the files work is that the default commands defined under 4 at the top apply to each and every other level of this setting, unless otherwise specified.
For the most part it is not recommended that you alter these files directly, as the best method of changing these settings is to insert the same command variables with new values into a system.cfg file, and they will automatically load up at startup and override the existing values shown here. However, aside from seeing precisely which variables are being altered at what particular level of each setting, there is one use for these files which is very handy, and that's to force Very High mode for particular settings, something which is not normally possible in Windows XP, nor in Windows Vista DX9 mode - see the conclusion of this guide for all the details.
There are four files starting with diff_ under your \Program Files\Electronic Arts\Crytek\Crysis\Game\Config\ directory. Each one corresponds to the in-game difficulty setting of the same name, and note that diff_bauer is the file for Delta difficulty in the game. These files hold the various parameters which are affected when you alter the game difficulty. For example if you compare diff_easy with diff_bauer, you will see the variable g_playerSuitArmorModeHealthRegenTime = 8 in the easy file, while the same variable has a value = 25 in the Delta (Bauer) file. This means that to regenerate your health back to 100% takes roughly 3 times longer when in Armor mode at Delta difficulty compared to Easy difficulty.
To begin with, find the difficulty file corresponding to your in-game difficulty setting, and then you can alter the parameters to better suit the particular challenge you're after. One particular difficulty aspect which is more related to atmosphere than difficulty in my opinion is the ai_UseAlternativeReadability variable. When set to 1, it forces the Korean soldiers to speak English, which can be quite unrealistic. You can set this to 0 to force the Koreans to speak Korean, something which normally only happens at the Delta difficulty level. Check the rest of the commands in the Advanced Tweaking section for more details of what the other settings here do. Note that some of these difficulty settings are tied to saved games. For example if you change ai_UseAlternativeReadability and then load up a saved game, it will revert back to its old value as stored in that saved game. In that case, you must alter the variable then save the game again to store the new setting.
Important: These difficulty .cfg files have another very handy use which we can take advantage of. Ordinarily if you want to override certain console commands you could insert them into your System.cfg or Autoexec.cfg file and give them the desired values. However it seems that certain commands, such as those in the difficulty files themselves, as well as a whole host of other commands, cannot be altered this way. The only way to alter them appears to be to enter them in an 'original' .cfg file, that is, a file which the game itself has created and gives special permission to load altered variables from, or which loads at a certain critical point in the startup sequence. The diff_ .cfg files are one such file, and so any commands on the following pages which are denoted by (system), or those commands you find do not change even when entered in System.cfg, should be entered at the very bottom of the relevant diff_ .cfg file which matches your current in-game difficulty setting.
For example, by default you cannot alter the command for the facial animation system (ca_UseFacialAnimation), regardless of whether you use it in the console, or in System.cfg, Autoexec.cfg, the command line, etc. However if you insert ca_UseFacialAnimation=0 at the bottom of your diff_normal.cfg file, one or two lines below the last entry, then close and save it, the next time you launch Crysis using Normal difficulty, the command will be accepted and the facial animation system will be disabled when playing.
This .xml file found under your \Documents and Settings\User\My Documents\My Games\Crysis\Profiles\[Profilename] in XP, or \Users\User\Documents\My Games\Crysis\Profiles\[Profilename] in Vista, is not a .cfg file strictly speaking. However it does hold the control bindings for the game, and can be edited to alter or customize the bindings, although generally speaking it's best to do this from within the game itself.
The file is organised into sections called 'actionmaps', and each actionmap is a set of key/button mappings for a particular game mode. For example there is an actionmap section for Helicopter controls called actionmap name="Helicopter", which means everything below that section up to the next actionmap is key and button bindings which only apply when flying a helicopter. To change your common in-game bindings, go to the section starting with actionmap name="default". There is also sections for multiplayer-specific bindings, and of course other vehicles and modes.
One reason you may wish to edit your bindings here is because the in-game options don't allow you to set the same key for two commands at the same time, whereas you can do so here. Importantly, you can also bind individual suit modes to particular keys (thanks to Ralf Ullrich for the info). To do this, first go to the actionmap name="player" section of the Actionmaps.xml file, and under this section make a blank line and insert the following - one set for every mode:
<action name="defensemode" onPress="1">
In the above example, the Z key is bound to Armor Mode, and a single press of it will activate that mode. However in place of defensemode above, you can substitute the following: speedmode for Speed Mode; strengthmode for Strength Mode; and suitcloak for Cloak Mode. And in the key name line you can substitute any key you wish.
You can implement any console command, as well as a range of custom commands, via the command line. The way to do this is to right-click on your Crysis launch icon, select Properties, and one blank space after the last character in the Target box, add your command with a plus sign in front of it. For example, if you wish to disable motion blur via the command line, add +r_motionblur 0. You can add multiple commands, each separated by a single blank space and with a + sign in front of each of them, as shown below:
"C:\Program Files\Electronic Arts\Crytek\Crysis\Bin32\Crysis.exe" +r_motionblur 0 +r_width 800 +r_height 600
In the example above, motion blur is disabled, and the game resolution is set to 800x600 pixels at startup. It makes no real difference whether you choose to implement command variables this way, or via the regular method of using a .cfg file as covered further above, although using a .cfg is easier when setting multiple commands.
More importantly, there are several command line-specific commands which can only be used this way. They are applied the same way as above, however they differ in that they have a - sign in front of them, instead of a + sign. At the moment I'm only aware of three useful command line-specific commands: -DX9 which forces DX9 mode, -DX10 which forces DX10 mode (in Vista only), and -Devmode which forces Developer Mode. I will add more as they come to light.
Again, these command line parameters work only if applied in the Crysis launch icon, whereas the rest of the command variables listed on the following pages can work via all three of the methods on this page.
The next page starts our comprehensive look at all the major Crysis command variables.