Crysis Warhead Tweak Guide
[Page 3] In-Game Settings, Advanced Tweaking & Conclusion
This section contains details about the altered In-Game Settings and any new or significantly different Advanced Tweaks which apply to Crysis Warhead. It also provides some handy tips like how to disable the introductory movies and discusses performance, including a comparison of DX9 vs. DX10 modes.
In-Game Settings
For full details of what all the in-game settings do in Crysis Warhead and Crysis Wars, you should check out the In-Game Settings section starting on Page 5 of the Crysis Tweak Guide. Below are those settings which are new or have changed since Crysis:
Advanced Graphics Options: While all the settings are the same, Crytek has changed the name of the setting levels for PR purposes. Originally in Crysis, the available levels were Low, Medium, High and Very High. Now in Crysis Warhead these levels have been renamed Minimum (Low), Mainstream (Medium), Gamer (High) and Enthusiast (Very High). In Crysis Wars, the levels have been renamed Best Performance (Low), Good Performance (Medium), Good Visuals (High) and Best Visuals (Very High). Only the names have changed, these settings are still exactly the same as before.
Importantly however, in Crysis the Very High (Enthusiast) option was only available in DirectX 10 mode, or by manually editing the .cfg files to allow it in DirectX 9 (See Page 13 of the Crysis Tweak Guide for details). Now in Crysis Warhead, Crytek has fortunately allowed all setting levels to be available without the need for any modification, whether in DX9 or DX10 mode, on both XP and Vista. Note however that Object Motion Blur is not enabled in DX9 Enthusiast mode by default, but can be enabled using the r_MotionBlur=5 command variable.
Crysis Wars on the other hand is still the same as the original Crysis - the highest setting in DX9 mode is still Good Visuals (High), and to enable Best Visuals (Very High) you will need to modify the config files as detailed in the link above.
Update: As of the 1.4 Patch, you can now select Best Visuals (Very High) in Crysis Wars in DX9 mode from within the game without requiring any modification to the config files.
Mouse & Keyboard Setup: Crysis Warhead has added a Utilities Toggle command; most everything else is identical.
In all other respects, Crysis Warhead and Crysis Wars appear to be the same as Crysis in terms of in-game settings, so again check the Crysis Tweak Guide for more details.
Advanced Tweaking
For full details of how to conduct advanced tweaking and what the numerous Command Variables (cvars) do in Crysis Warhead and Crysis Wars, you should check out the Advanced Tweaking section starting on Page 8 of the Crysis Tweak Guide. However below are those cvars which are clearly new or have changed noticeably since Crysis:
Changed Variables:
e_view_dist_ratio_detail [value] - This setting controls the maximum view distance only for detail objects. The value for this variable at the Very High (Enthusiast) setting has been increased significantly from 30 in Crysis to 50 in Crysis Warhead, increasing visible detail objects at the cost of some FPS. You can alter it back to the level it was in Crysis to improve performance if you wish.
e_view_dist_ratio_vegetation [value] - This setting controls the maximum view distance for vegetation/foliage. The value for this variable at the Very High (Enthusiast) setting has been increased from 45 in Crysis to 65 in Crysis Warhead, increasing visible vegetation at the cost of FPS. Once again, you can lower it back to the Crysis value if you want a performance boost at the cost of more vegetation pop-in for example.
r_TexturesStreaming [0,1,2] - This setting controls the streaming texture system in the game, and if set to 0, textures are not constantly streamed as you walk around, they are preloaded from a cache, and furthermore distant texture quality is also improved. If set to 1, it is enabled, and if set to 2, it uses a more aggressive form of streaming. In Crysis you can disable texture streaming and usually have no performance issues; in Crysis Warhead if you disable texture streaming, particularly at the Enthusiast setting, you will experience texture corruption and crashes on virtually any system. This appears to be a bug and will hopefully be fixed in future patches. For the moment, ensure that if you use the Gamer or Enthusiast options for the Texture Quality setting under Advanced Graphics options, that you do not disable texture streaming.
Update: As of the 1.1 Patch, and using the 64-bit executable, I have found that disabling texture streaming (i.e. r_TexturesStreaming=0) at higher settings no longer appears to cause a crash. I haven't tested this on the 32-bit version, but 64-bit users in particular might like to try it now as it does provide enhanced visuals.
Note: Various people are suggesting that changing the sys_budget_videomem variable to match your Video RAM size will resolve the problems with texture streaming. This is incorrect - as covered in the Crysis Tweak Guide the sys_budget-related commands do not alter the actual amount of resources used by the game, they are merely a way to set warning thresholds for monitoring purposes when used in conjunction with the sys_enable_budgetmonitoring command. In other words whether you change sys_budget_videomem to 5 or 5000, the game does not use this variable to determine how much Video RAM you have or how much VRAM it will use. Test it for yourself by setting it to 5 for example (i.e. 5MB); in theory that should result in massive stuttering every second - but it won't.
e_time_of_day [value] - When typed without any value, this command shows the current time of day in hours. When typed with a value, it used to have no impact in Crysis, however in Crysis Warhead you can now use it to change the actual time of day using a specific hour. For example enter a value of 6 for 6:00am, or 6.5 for 6:30am, or 14 for 2:00pm. Importantly however, it will only work if you run Warhead in Developer mode - that is, if you add the -Devmode command line switch to the Target box of the game's launch icon.
Removed/Disabled Variables:
e_particles_max_emitter_draw_screen
r_WaterUpdateFactor
r_WaterUpdateDistance
New Variables:
ca_FacialAnimationRadius [distance] - This setting determines the maximum distance at which facial animation updates are performed. The higher the value, the further away at which the enemy soldiers will have animated facial expressions, such as when you zoom in on them using binoculars. The performance impact of changing this value seems negligible.
e_particles_max_screen_fill [value] - This setting replaces the e_particles_max_emitter_draw_screen variable in Crysis, however just like the setting it replaces, it essentially controls the volume of particle effects such as smoke. The higher the value, the thicker/richer such effects will be at the cost of FPS, while the lower this value, the less dense and smaller such effects will be, but with improved FPS.
p_sleep_speed_multiple [value] - This variable is described as a multiplier applied to rigid body sleep threshold. This may mean the multiplier essentially controls the level of movement of rigid body objects (i.e. inflexible objects) in the game world after some physics has been applied to them. The higher the value for this multiplier, the more quickly moving solid objects will revert back to 'sleep' mode (i.e. come to a complete stop). In practice this should mean that higher values give better performance at the cost of some realism, but in my experimentation the difference is not necessarily easy to detect. Thanks to FireballFlame for the description.
p_enable_triangle_cache [value] - This appears to be a method used to cache data for heightfields, which describe the surface elevation of terrain. I don't believe there should be any reason to disable this caching, so it should be left =1.
r_WaterUpdateChange [0.0 - 1.0] - This setting replaces the r_WaterUpdateFactor variable which was used in Crysis, and along with the r_WaterUpdateTimeMin and r_WaterUpdateTimeMax variables below, determines how frequently reflections are updated upon the water's surface. The higher the value, the less often updates are performed, which in turn can make reflections jerky and unrealistic but may improve performance in water areas.
r_WaterUpdateTimeMin [0.0 - 1.0], r_WaterUpdateTimeMax [0.0 - 1.0] - As noted above, these settings are related to the frequency of reflection updates on the surface of water. In experimenting I've found the most obvious impact occurs when you alter the r_WaterUpdateTimeMin value; raising this value decreases the frequency of reflections, up to the maximum value specified by r_WaterUpdateTimeMax. If you're after the best image quality for water reflections, set all the r_WaterUpdate variables to 0.0 to ensure that reflection updates are performed with every single frame.
Neat Stuff & Conclusion
Here are a few last tidbits of information which will help you understand and hopefully enjoy Crysis Warhead and Crysis Wars even more:
Disabling the Introductory Movies
As with Crysis, there are a large number of introductory/promotional movies which play before you reach the main menu in Crysis Warhead and Crysis Wars. If you want to automatically skip all of these and reach the main menu much more quickly, go to your \Program Files\Electronic Arts\Crytek\Crysis WARHEAD (or Crysis Wars)\Game\Localized\Video directory and rename all the .sfd files starting with Trailer_, as well as Crytek.sfd and Intro.sfd, and the Trailer_Rating files under the \English folder to something else. Better yet, create a new folder under the \Video directory (e.g. \Nomovies) and move all the above .sfd files to that new directory - I don't recommend deleting them. The next time you launch the game it will automatically skip all these introductory movies and get to the main menu within a shorter space of time.
General Performance
In general, as noted in the Introduction, Crysis Warhead is quite a graphically intensive game, and just like Crysis before it, demands a good quality and/or well optimized machine to get playably smooth FPS at the higher settings. To judge the performance and visual quality impact of the game better for yourself, check out the following articles:
HardOCP Crysis Warhead Performance and IQ Article
PCGH Warhead Graphics Comparison Article
PCGH Warhead Performance Benchmark
Techspot Warhead Performance Analysis
I have to add that I personally find that the game is quite playable at lower framerates when set to Gamer or Enthusiast, especially with Object Motion Blur enabled. By low FPS, I'm referring to anything in the 20-30FPS range, which would usually be frowned upon by any 'hardcore' gamer. To understand why Crysis can still look and feel relatively smooth at lower framerates, read this page on frames per second. It also bears noting that CryEngine 2 doesn't slow down as dramatically during heavy combat, because it has optimized particle effects among other things. So if you're averaging in the 20-30FPS range then you shouldn't feel too bad.
'Cheap' Very High
Remember that as discussed on the last page of the Crysis Tweak Guide, you can have Enthusiast-level graphics (Very High) 'on the cheap' by only applying a range of key command variables which implement the most obvious visual enhancements of Enthusiast, while getting performance closer to that of Gamer (High). Set your in-game settings all to Gamer quality, then in your System.cfg or Autoexec.cfg file the main variables to use are: r_UsePOM=1, r_sunshafts=1, e_water_ocean_fft=1, q_Renderer=3 and r_colorgrading=1. I personally also add r_UseEdgeAA=2 to further smooth out jagged foliage, and r_MotionBlur=5 to add Object Motion Blur to the mix. I then set the in-game Texture Quality and Sound Quality to Enthusiast as well, as these have minimal FPS impact. The end result looks incredibly close to Very High/Enthusiast, but is usually much faster. See the comparison further below, and of course refer to the 'Very High On The Cheap' section on the page linked above for more details.
Note that 'Cheap' Very High in DX9 mode may result in blurry faces - this is a known visual glitch with object motion blurring force-enabled in DX9 mode. Switch to using 'Cheap' Very High in DX10 mode, or disable object motion blur (i.e. remove r_MotionBlur=5 from your System.cfg).
Benchmarking
Unlike the original Crysis, Crysis Warhead does not come with .bat files you can use to run automated benchmarks. However there is a uniform way you can run a set benchmark with Warhead - use a utility like the HOCBench CW Benchmark.
DirectX 9 vs. DirectX 10
One of the biggest performance improvements for Windows Vista users is to switch from using the default DirectX 10 renderer to DirectX 9, in the process gaining quite a few FPS with no noticeable drop in image quality. To do this, you must use the -DX9 command line switch. If you have a desktop icon for Crysis Warhead, then right-click on it, select Properties, then at the end of the Target box, one blank space after the last character, add -DX9. It should look something like this:
"C:\Program Files\Electronic Arts\Crytek\Crysis WARHEAD\Bin32\Crysis.exe" -DX9
Alternatively, if you use the Games Explorer launch icon for Warhead, then you can right-click on that and select 'Play DX9' to launch the game in DX9 mode. If you want to always launch Crysis Warhead in DX9 mode just by double-clicking the icon in Games Explorer, then right-click on its icon, select Customize, highlight the 'PlayDX9' item and click the 'Move Up' button at the top right until 'PlayDX9' is at the top of the list, and click Close. Now the game will automatically run in DX9 mode whenever the icon is double-clicked. You can do the same for Crysis Wars.
I provide some screenshots below to demonstrate the visual and performance difference between DX10 Enthusiast, DX9 Enthusiast, and DX9 'Cheap' Enthusiast. The framerate is at the top right of each screenshot:
As you can see, they all appear very similar, however in terms of framerate @1280x1024 on my 8800GTS: DX10 Enthusiast is 21FPS, DX9 Enthusiast is 24FPS, and DX9 'Cheap' Enthusiast is 30FPS. Visually, DirectX 10 Enthusiast actually has a noticeably more vivid Sun, the sky is more brightly lit and hazier, the shadows are a bit more soft and subtle and the glass bottles on the table at the right are also a bit more detailed. DirectX 9 Enthusiast shows more vegetation on the distant island to the right, a darker sky and more defined/darker shadows. DirectX 9 'Cheap' Enthusiast lacks the water reflection for the island to the right, the shadow outlines are not as noticeably softened, and the vegetation in the distance is also a bit less lush.
In short, there is a noticeable visual difference between DX9 and DX10 mode, moreso than in the original Crysis in my opinion. It's most noticeable while actually playing the game, the DX10 shader effects are more subtle and much nicer. However unfortunately the performance impact of running in DX10 mode is also quite pronounced, and generally most people will not find it worth the drop in FPS. DX9 mode should suit most people, and indeed as I've demonstrated, with a few wise tweaks, you can have a 'Cheap' Enthusiast version of DX9 which runs at an even more acceptable framerate, so tweaking definitely can help Crysis look good and perform well.
Conclusion
This has been a rather brief look at Crysis Warhead, however as repeatedly noted, that's because the original Crysis Tweak Guide really does cover the bulk of what you need to know to get the most out of all the Crysis-based games. It takes a fair bit of patience to get across the optimization of Crysis/Warhead/Wars, but it's a worthwhile investment given CryEngine 2 is likely to continue to be used in upcoming cutting-edge games, including hopefully more sequels to Crysis. In any case I will update this guide with information specific to Warhead and Wars as required, so check back here often. If you have important information regarding additions/changes to this guide, please Email Me, however keep in mind that I can't provide any tech or tweaking support/advice under any circumstances, and I also don't provide permission for the guide to be reproduced or translated elsewhere for several reasons.
Until next time, take care!