• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

Saihossoku's Ultimate Crysis Tweaking Guide

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.

Saihossoku

Member
Joined
Mar 8, 2007
Location
My Northbridge, Toronto
BASIC TUNING

Basic computer performance:
I don't want to recreate the wheel but their are many things to do to increase performance in games with your computer. Details on how to do these things can be found by doing a google search for any of the following.

* Latest drivers for your video card, motherboard, sound card can improve things greatly at times.
* Defrag your hard drive. It's prefferable to defrag 'before' installing so that the files stay close together and contiguous.
* If you only have 512MB or 1GB memory, 2GB is highly recommended.
* Go into your driver control panel to make sure antialiasing(AA) or anisotropic filtering(AF) is not enabled unless you want them to be, they effect performance alot. Also you can change texture filtering quality to provide more performance in the drivers.
* If you are running Vista make sure to be using the current hotfixes, some effect performance and memory usage tremendously. Nvidia has a great list of recommended ones here: Vista hotfixes
* A video card like an 8800 GT for $250 will provide tremendous results if you haven't upgraded in a long time.
* Disabling any unneeded running process, especially antivirus, while playing is recommended.

Resolution:
Resolution has a large impact because the game has so much geometry that the fillrate demands of large resolutions is beyond what people are used to. If you can lower resolution this will help gain many fps and provide smoother play. If you have an LCD you need to use what is called 1:1 pixel mapping, or otherwise known as disabling scaling. This allows the image to shrink but the quality of the image stays incredibly good. Scaling on the other hand, always looks bad if using anything other than your native resolution. Scaling can be disabled on some monitors. If your monitor doesn't support this feature some drivers support it. With nvidia you can disable it like so, CLICK HERE. So shrinking the image while maintaining incredible quality works well for performance, you can always slide your monitor closer you then won't notice the image is smaller.
Custom resolutions can be used by using 'r_width=x' and 'r_height=x'. See below on advanced tweaking on how to use variables.

In-Game Settings:
The settings that have the biggest effect on performance are firstly shaders. This game is one of the most shader intensive games on the market. Going from high to medium shader settings works real well in giving an average of anywhere from 7-10 fps or more, depending on some variables. Next are Shadows and Post Processing. Shadows from high to medium looks very good still and provide a good boost of performance. Post processing has a big effect as well. The thing that people notice most about post processing is motion blur and depth of field. These can be easily turned on/off individually if desired seperate from the post process drop down box, as will be seen in the advanced tweaking section. Textures setting affects video memory usage quite a bit which we will look at next.

Video Memory:
Using beyond the amount of memory that is locally on the video card will produce performance problems like stuttering and hitching due to having to fetch data from system RAM over the much higher latency PCI express bus. In other words, adjust settings/resolution in the game not to exceed your video RAM, otherwise you will experience overall performance issues and the periodic flickering of geometry and LOD's as it streams in. The game is very video memory intensive. Resolution and AA effect the amount of video memory the game uses tremendously. Here is a breakdown of video memory across different settings and resolutions.

* Windows XP
* Nvidia Driver 169.01

1280x1024 medium
* NoAA 184MB
* 2xAA 295MB
* 4xAA 355MB
* 8xAA 395MB

1280x1024 high
* NoAA 315MB
* 2xAA 375MB
* 4xAA 440MB
* 8xAA 470MB
-Texture medium-
* NoAA 300MB
* 2xAA 363MB
* 4xAA 423MB
* 8xAA 445MB

1680x1050 medium
* NoAA 223MB
* 2xAA 375MB
* 4xAA 455MB

1680x1050 high
* NoAA 368MB
* 2xAA 456MB
* 4xAA 535MB
-Texture medium-
* NoAA 340MB
* 2xAA 428MB
* 4xAA 505MB

1920x1200 Medium
* NoAA 240MB
* 2xAA 430MB
* 4xAA 535MB

1920x1200 High
* NoAA 400MB
* 2xAA 515MB
* 4xAA 615MB
-Texture Medium-
* NoAA 370MB
* 2xAA 475MB
* 4xAA 585MB

AA clearly makes a large impact in video memory. Different game levels may change these numbers. Changing textures from medium to low makes no appreciable difference since it is still using the lowspec pak. The devs have made huge advances in optimizing this area since earlier builds of the game, either that or the textures are quite lower in quality, infact these are the numbers medium textures used to give as if high textures are missing. Final shipping game may reflect differences here, will update accordingly. The textures setting alone no longer makes the difference it did in earlier builds regardless of high/medium/low setting, which again seems to give some indication higher textures have been removed temporarily or entirely.

Breakdown by video card memory:
256MB Video - 1680x1050 medium without AA or 1280x1024 medium with AA.
8800 GTS 320MB - Handles up 1680x1050 medium no aa, can go to high with some thrashing. Only AA at 1280x1024 looks to be viable with that memory limit.
512MB Video - Comes into it's first wall at 1680x1050 4xAA on high. Performance and not memory will impact you here.
8800 GTS 640MB - Handles up to 1920x1200 4x AA (All High). performance makes that out of reach on todays HW.
768MB and above - Memory will not be your limiting factor unless going to 2560x1600 with AA. Your GPU handling the raw processing of the geometry and shaders at that high resolution will be out of reach. I don't doubt that 1GB can be reached by tweaking Crysis and high resolutions with max AA on tomorrows HW. I already have found ways to approach 650MB at only 1280x1024.

Basic video memory tips:
* Find your video memory ceiling with resolution and texture setting first. Then adjust other parts of the game that are affecting raw performance like shaders or shadows until you get your acceptable performance. If you don't properly anticipate video memory usage, you won't realize why it is hitching on you, regardless of other settings.
* You don't have to turn everything to medium to conserve memory, textures have the biggest effect by far.
* Remember as more players enter the map this memory will climb a bit, as well as larger out door levels. Also as you stay in the game for a while this number will rise a little. I cached all the outdoors, but not the indoors.
* Adding any tweaks for higher quality, especially along the lines of LOD or view distance, has the potential to raise memory usage even further.
* The higher you go over your limit, the worse performance, texture stuttering, hitching and popping of geometry will become.
* If your resolution doesn't appear just use something close, like 1680x1050 is close to 1600x1200.

Benchmarking:
Crysis came with two benchmarks to test and compare your performance. A GPU benchmark and a CPU benchmark stressing physics. They can be found in the Bin32 or Bin64 folders. Just double click on them to start. The game will run through 4 loops of the benchmark. When it's done it will show you the results, I suggest you ignore the first one since it was just caching the level and assets on the first run. You can make your own benchmarks but for now these two work well as standard tests. See the benchmarking tool mentioned in post 3 for an improved benchmarking experience.

Antialiasing and Anisotropic filtering in Crysis
First of all AA is a serious performance drain. More so than other games because of the incredible amount of triangles and polys in the scene. AA is only recommended for the highest end GPU's and keep in mind high resolutions will be more intensive. So if you choose to use it then keep in mind the video memory that will be used (shown above). There is some interesting information starting to come out about AA. Apparently it is preferred to use the in-game AA settings as the proper way to use AA. In other words, don't use the driver control panel but control it from in game.

Additionally, HardOCP in their recent 8800GT review had this quote. "This comes directly from NVIDIA’s James Wang on the use of Transparency Antialiasing in Crysis: ” Crysis handles foliage very differently from normal engines so TRMS/SS won't work. Bit of a shame really. The game has some built-in foliage AA, but it only kicks in in "Very high" quality mode.”"

I am actually pretty sure it can be enabled at high as well, not just very high. High and very high shader settings are compatible with in game AA, while low and medium shaders are not. Regardless of in game shader settings if AA is enabled, High shaders will also need to be enabled. If AA is currently enabled, but shaders is set to medium or low, AA will automatically be disabled by the game. So it will take a good medium to high end card to use AA not only because AA is demanding on it's own but because you will need to run atleast high shaders as well.

As to Anisotropic Filtering, it can only be enabled in the driver settings. Unfortunately there is a bug with the nvidia drivers that makes a white halo around distant bushes and trees. I believe this bug only shows itself on a particular. This apparently will be fixed with a future driver.

Vsync
Vsynch can be enabled in the game with r_vsync = 1. It is off by default.

ADVANCED TWEAKING

Customizing the game:
The in-game settings are like using a paint roller on a canvas, while tweaking is like the fine brush of the artist. The roller gets the job done but it's not going to be as fulfilling as it could be. You need a fine brush to make it the way you like. The developers didn't want to burden you with 20 choices of drop down boxes so they instead made those broad strokes for you. Unfortunately the difference in performance and quality between low/medium/high/veryhigh can be staggering. Sometimes a move from high to medium can change 20 variables, but it may not be necessary to change all 20 when only a few really effect performance or quality. The fine strokes will allow you to get exactly what you want and Crytek has really given us the ability to change just about everything in the game you would want. You do not have to sacrifice as much quality for performance as you may think. Sometimes you can keep settings high or medium and change one variable that is the big performance tanker or one setting that brings back some good quality at little cost. Enough intro lets get busy.

How to make an autoexec.cfg
In the early days of the beta people modified the cvar groups game files because it was the best they knew, if you have heard about this I do not recommend it. It changes the way your in-game settings work permanently and changing to medium or high won't have the desired effect anymore. We later learned that you can make an autoexec.cfg file in the "Crysis SP Demo" folder. Tweaks are made up of Console Variables (cvars for short), a list of the ones currently used by the game can be seen below. In this file you put in the tweaks you want one by one and the game will use them when it starts up.

View Performance In Game
Place the line r_displayinfo=1 in your autoexec.cfg. This will show you fps, system memory usage(not video), triangle count, etc. Also you can use fraps if you wish to show fps as well as take screenshots and make movies of the game.

Enable The Console:
By default the devs have disabled the console unless you learn the trick to enable it. You can enable it by adding the line con_restricted=0 to your autoexec.cfg and you can then use tweaks while in game in real time and watch with your own eyes the quality and performance changes. Pull down the console while in game by hitting the ~ (tilde) key. From there you can type in a cvar, without a value, and the game will tell you the current value. If you want to test a tweak, just type it in but instead of using an equals sign to put in a value like in the autoexec.cfg, just use a space. Example in console: r_displayinfo 1
If you have the fps shown in game you will see the performance effect of different settings.

Enhancing on DX9:
It is a very tweakable game. Crytek have given us the ability to tweak many many things to reach Very High equivalent settings and even far far beyond. I will give you a break down of every exact Very High setting(used in DX10) for reference. This is the real list of every setting and their values. So you can use this list and mimic exactly very high in DX9 to the fullest extent possible. Just add this list to an autoexec.cfg and you will have very high for DX9.

sys_spec_GameEffects = 3
sys_spec_ObjectDetail = 3
sys_spec_Particles = 3
sys_spec_Physics = 3
sys_spec_PostProcessing = 3
sys_spec_Quality = 3
sys_spec_Shading = 3
sys_spec_Shadows = 3
sys_spec_Texture = 3
sys_spec_VolumetricEffects = 3
sys_spec_Water = 3
e_foliage_wind_activation_dist = 25
e_max_entity_lights = 16
e_obj_quality = 4
e_particles_max_emitter_draw_screen = 32
e_particles_quality = 4
e_shadows_cast_view_dist_ratio = 0.8
e_vegetation_sprites_distance_ratio = 1.5
e_view_dist_ratio_detail = 30
e_view_dist_ratio_vegetation = 45
e_water_ocean_fft = 1
e_water_tesselation_amount = 10
es_DebrisLifetimeScale = 1
g_battleDust_enable = 1
g_breakage_particles_limit = 250
g_ragdollDistance = 40
g_ragdollMinTime = 15
q_Renderer = 3
q_ShaderFX = 3
q_ShaderGeneral = 3
q_ShaderGlass = 3
q_ShaderHDR = 3
q_ShaderIce = 3
q_ShaderMetal = 3
q_ShaderPostProcess = 3
q_ShaderShadow = 3
q_ShaderSky = 3
q_ShaderTerrain = 3
q_ShaderVegetation = 3
q_ShaderWater = 3
r_BeamsDistFactor = .05
r_BeamsMaxSlices = 200
r_ColorGrading = 1
r_DepthOfField = 2
r_DetailNumLayers = 2
r_DynTexAtlasSpritesMaxSize = 32
r_MotionBlur = 4
r_ShadowJittering = 2.5
r_SSAO_quality = 2
r_SSAO_radius = 2
r_sunshafts = 1
r_TexAtlasSize = 2048
r_Usepom = 1
r_WaterReflectionsQuality = 3
r_WaterUpdateDistance = 0.2

In Game Settings:
This chart shows the breakdown of "every" console variable that is changed by the in-game settings. It color codes every different type of in game menu(textures, game quality, shadows,etc) and shows you what variables actually change, when you change a drop down menu in the game, and what values they change to. To see more console variables that cannot be changed in game and to see all the definitions of the settings, follow the links below the image.

spcvarsnarrowmb8.gif


How do I do start?: summary
You can start by making an autoexec.cfg in the main game folder. Add two settings to start.
Just copy/paste them.
r_displayinfo=1
con_restricted=0

Now you can open the console and start trying tweaks that look interesting one by one. Use your autoexec.cfg and fill it with the tweaks you like. When you check your in game settings it will show 'custom' if you have tweaks in your autoexec affecting that menu section. I will detail some of the ones I think are cool here next.

Quality Comparisons: Some notable settings that effect quality.

LIGHT AND WATER:
r_sunshafts = 1 turns on the hidden feature of light shafts that dance through trees and past objects. Available in game through Very High in-game setting.
The bottom is default all High in-game settings, the top is r_sunshafts = 1. Comparison pics...

sunshaftsdemota8.jpg


The following 3 settings work along with sun shafts...
r_Beams - Toggles the volumetric light beams. Default is 3, it’s an optimized beam with glow support. 0 disables beams, 2 uses fake beams with probably beneficial performance (performance untested). 1 is the best and uses the real full resolution beams but it is slower.
r_BeamsDistFactor - Distance between slices. Default is 0.01 in meters(likely reserved for Ultra High) and is likely the best setting for beams making it through the densest vegetation. You can try it and see what you like best (currently medium and high use 0.5, low uses 1).
r_BeamsMaxSlices - Number of volumetric slices allowed per light beam. Default is 200 (reserved for very high specs). The max here is 300, so go ultra if you think you can really handle the performance hit.
e_water_ocean_fft - Activates fft based ocean algorithm. Produces realistic wave undulation for the best quality and most realistic water. Everything is the same with water except undulation. This algorithm was used in movies like Titanic and Waterworld so it's very realistic. Screenshots wouldn't really show the difference but I have a short movie, it hardly does it justice, but atleast you can see the wave difference.
FFA Water movie comparison 4MB

TEXTURES & LOD:
Distant LOD (level of detail) of textures and vegetation is probably my favorite section because it’s most noticeable as you look across the map and walk about.
e_detail_materials_view_dist_xy - Max view distance of terrain XY materials. This is things like certain cliffs and other materials horizontal LOD in game.
e_detail_materials_view_dist_z - Max view distance of terrain Z material. This is things like certain cliffs and other materials vertical LOD in game. This one doesn't need to be raised high, 256 or 512 max. (In the GPU benchmark when coming in from the sky this setting will show itself on vertical LOD).
A picture is worth a thousand words on how these two work...

edetailmaterialsviewdisuz8.jpg


Note: For the mountains to appear crisp like this you will also need r_TexturesStreaming set to 0.
r_usepom - Enables Parallax Occlusion Mapping. A type of relief map that gives raised appearance to textures. Very cool but costs about 2 fps and can sometimes cause a fairly insignificant minor blurring of terrain textures in distance. Comparisons...

rusepom2gr4.jpg


VEGETATION & SPRITES:
e_cull_veg_activation - Vegetation activation distance limit, 70 is a good step up from high(50). This is trees setting how far the farthest out can be seen.
e_vegetation_sprites_distance_ratio - Allows changing distance on what vegetation switch into sprite. Raising this from 1 to 1.5 cost me about 1 fps in that view. Adds medium tree distance as well as certain near shrubs. Comparisons...

evegetationspritesdistaml5.jpg


e_view_dist_ratio_vegetation - View distance ratio for vegetation. Includes grass and shrubs like ferns and broad leafs, etc. 50 just about eliminates any popping effect with grass and shrubs, costs 1 fps in this scene. Comparisons...

eviewdistratiovegetatioam2.jpg


Controlling Antialiasing with Tweaks
See above section on antialiasing and how it changes shader settings. These are the cvar settings for AA that you can use in your autoexec.cfg file. Only for XP.

r_FSAA = 1 - turns on AA

2xAA = r_FSAA_samples = 2, r_FSAA_quality = 0
4xAA = r_FSAA_samples = 4, r_FSAA_quality = 0
8xAA = r_FSAA_samples = 4, r_FSAA_quality = 2
8xAAQ = r_FSAA_samples = 8, r_FSAA_quality = 0
16xAA = r_FSAA_samples = 4, r_FSAA_quality = 4
16xAAQ = r_FSAA_samples = 8, r_FSAA_quality = 2


Know your in game settings. Play with that first to get a comfortable feel of what you like and what is available through the advanced settings menu options. The way the autoexec.cfg variables work is they build on the in-game settings. The in game settings are first loaded, which are stored in the game.cfg in your profile. As the game starts it loads the game.cfg then the autoexec.cfg overrides are loaded with what ever settings you chose. So for instance, you have in game shaders set to medium down from high. But medium changes over 20 settings, well maybe you want the perfomance benefit of most of those but you want Ambient Occlusion back on the terrain (it's a global lighting system to provide realistic lighting). You keep the in game setting at medium but turn on e_terrain_ao = 1 along with r_SSAO=1 which will override the 0 settings in the game. Or maybe you want better better shaders on terrain back to high(3) so q_ShaderTerrain = 3. Whether you like water, sky, terrain, vegetation, view distances....it's all at your finger tips for your preferences. Usually there is only a couple settings that really affect performance alot, the rest can add quality at little cost, the developers just didn't know your video memory, vid card, processor, ram, etc. so they made broader stroke settings than most people needed in certain cases. The tip to remember is that your configs will override and work on top of what is already set in the game menu last time you ran the game. If you prefer there is also way to change the drop down boxes from your autoexec. The sys_spec... settings will change low/medium/high and it will change all the broad stroke settings I color coded in my chart if you change those broad stoke settings. You will know when your autoexec is working because if you look at the game settings it will show custom instead of low/medium/high.

Basically, many cvar values are often just a on/off setting for features [0/1] 0 is off, 1 is on. Others may have values that are based on different ranges, the definitions will tell you what most of the limits and ranges are. Some ranges maybe in meters, where others are clearly larger or smaller units of measure. If you see a pattern of numbers like 512/1024 then extrapolate that it's best to stick with the pattern, like those just mentioned for texture sizes and shadow maps. Sometimes you have ratios (as seen in some cvar names), which seem to affect more than one thing and they are likely multiplied internally in the game against some value so they are more broad sweeping. I expose some of the cool cvars with pics above but don't let that keep you from trying new things.

Performance of these settings depends on your resolution, your video card, and the complexity of the scene you are looking at. If you are tweaking vegetation find the densist vegetation to see what the hugest impact will be. Same with terrain view distances and textures. In certain scenarios things combine where you are looking through the dense jungle up at the mountain this is good to test combined foliage/texture/view distance tweaks as it will show worst case scenarios. That is the balancing act, but most of the time you in buildings, in water, in vegetation, so you can pretty much raise them irrespective of each other to a degree. This is the point I am at in my configs in perfecting that balance of taking quality to the farthest point where it can mix well with the others. I also like long view distances on objects, I like seeing vehicles, enemies and buildings afar off so you can trade something else for that if you prefer.

It's great to use the console and see the settings changed in real time. Just be aware that not all settings can be changed in real time. Either the value will not change and that will be clearly shown in the console, or it appears to change the value in the console but nothing in the game actually changes. In those cases it will be necessary to put the setting in the autoexec.cfg so that the renderer will be able to properly utilize that setting during startup when rendering the scene. There are a couple features restricted to DX10 but mostly they are time of day and geometry shader functions (GS in the cvar), not many at all.


MAXIMUM TWEAKING FOR VISUAL FIDELITY

This covers just the basics of tweaking for visuals. I’ll cover some of what I learned on the relationship of LOD’s, view distances and ratios to help people understand what they do and how they work together. So here I give examples of what certain settings do and more importantly what they mean and how they work together. Some of these have been mentioned above but this just focus's on relationships of LOD, distances and ratios. If you go through this section and use it as a walk through and try some of these in your console that I mention to try, you will get a good understanding how tweaking fidelity in the game works. I cover most of the major settings although definitely not exhaustive. All tweaking begins on getting acceptable performance and quality with in game settings first.

The following settings properly tweaked can give you something like this compared to DX10 very high...



...Or how about tweaked XP vs All High in-game settings on DX9.



1900x1200 is just to show a comparison not necessarily playable. At 1280x1024 it's 25 fps and 25% faster than DX10 very high on an 8800GTS 640.

LOD
Level of detail. Providing levels of detail is very important for performance. It transitions the quality of textures, objects and trees to lower quality the farther into the distance that they are. To render things in the distance at full quality, when you don’t even have the pixels on your monitor in a square few millimeters to actually properly show it on screen, would be very wasteful. Why render a barrel at full quality with textures a kilometer away if it will only be two pixels high on your monitor. To do that would affect performance seriously without any benefit. Crysis implements Lod’s very well, not the distance per se which can benefit from some tweaking, but the quality of lower level LOD’s looks quite acceptable at a distance. So they are definitely good to use. Certain objects have a preset amount of LOD’s, like shadow maps have 5 LOD’s. So for a given LOD view distance of say 100 meters, it would transition to the next LOD every 20 meters.
e_lods – This setting tells the game to use LOD’s, it’s the master setting to enable or disable them for objects. If you set it to 0 in the console you will see an example of full detail on 3d objects in your current view distance (stones, textures, buildings, terrain). So if you had a view distance (next section) set to see barrels a mile away, setting this to 0 would render them at full quality (very wasteful). It’s a good exercise to see the effects of LOD and to disable this to 0, but we definitely want to use LOD, so this should be left to 1 for your gaming time.
e_lod_min - Min LOD for objects. You will come across settings of min and max on various settings so I use this as an example. This particular min setting is of objects, mostly certain large rocks, certain cliffs and trees a bit (not the small/medium rocks on the beaches). This setting is set to 0 by default. Think of 0 as closest to you and 0 being best quality. This setting works in concert with max.
e_lod_max – Max LOD for objects. Max sets the outer amount of LOD transitions, in this case mostly the quality of rocks in the ocean and certain rock cliffs as objects. It’s set to 6 by default. So what these settings do together is take a specified length of view distance, and divide it up into 7 LOD transitions, 0 being best, 6 being lowest quality. So as an example if you could see a rock popping out of the ocean at 70 meters max view distance, every ten meters you get closer to it then it will transition to a better LOD. As I understand it, these settings work along with a culling view distance. So if you changed the max from 6 to 4 then there would only be 5 transitions instead of 7 for the given distance, with the last two lowest quality not used. As I mentioned the quality of the LOD’s is real good, especially on objects so not rendering every brick on a building at half a mile is a good thing. Not sure much needs to be done with this setting particularly but that is how min/max works with LOD’s.

VIEW DISTANCE –
This is how far you can see something (profound). Sometimes this may be a value in meters or in some other world units. A couple examples…
e_detail_materials_view_dist_xy – This determines how far you will see materials in the distance like mountain tops and certain rocky cliffs. I prefer 4096 or even 8192 to see the distant mountains. Reducing this to 0 shows exactly what it effects.
e_cull_veg_activation – View limit on where procedural trees are culled. (70 is a good step up)
r_detaildistance – works with with view distance on showing r_detailnumlayers.

RATIOS –
Ratios are great. They serve as a multiplier for many settings simultaneously. The beauty is with ratios that the way things cull into the distance is already done for you pretty well. In other words, you won’t see bushes a 100 meters ahead, but trees at only 50. Everything is pretty well balanced for you. So changing the multiplier(ratio) changes everything under the control of that ratio by a factor. In most cases, ratios are the settings to focus on.
e_view_dist_ratio – Setting this to 0 removes all the objects that this setting controls, so it immediately shows you which objects this controls exactly. It controls view distance on rocks in the ocean and every human object(buildings, boxes, barrels, docks, everything showing a remnant a human exists in the world (except vehicles).
e_view_dist_ratio_vegetation – This setting is great, it’s one of my favorite. Also try setting this to 0, as it will show you exactly what it affects. You will see a barren wasteland at 0 but this barren wasteland is also a great tip in working on seeing your terrain tweaks later on (next section). This ratio serves as a distance multiplier for all vegetation and includes small/medium sized rocks on the beach. The other objects like big rocks in water, some cliff faces and all human objects are unaffected, they are controlled by the previous setting. So between the above two settings we cover everything in the world except terrain, textures, vehicles and players.
e_lod_ratio – The ratio of LOD distance transitions. This affects the distance of LOD transitions on the objects that e_view_dist_ratio actually controls(rocks in the ocean and every human object). It is a ratio so it will work as a multiplier on many objects making certain human objects look better at short/medium distances. 6 is default and is ok, but 10 is better and only effects fps by a meager few percent from 6 to 10. The more objects in view, the more effect this will have. LOD any higher on far distant objects which cannot be properly seen would just take away performance. 6 or 8 may be sufficient for many people because as mentioned LOD’s are pretty good so go ahead and see what you think.

Terrain and Textures -
This has to do with terrain on beaches, mountain sides, etc. Also textures on rocks and other objects in the world. It is suggested you remove vegetation when trying to see what this effects below. e_view_dist_ratio and …_vegetation to 0 will give you excellent view of terrain textures.
e_terrain_lod_ratio – This is set to 1 by default. If you want to see full LOD of the type of terrain this affects try 0 (prepare for triangles/sec x 5). On the other hand try 50 for the low LOD. Disabling ‘e_view_dist_ratio’ and ‘_vegetation’ will really help to see what this does by removing all vegetation and objects. 1 is actually pretty good, you can get away with .8 but in all fairness 1 looks pretty good. Raise this to 1.5 - 2 to get more fill rate performance.
e_terrain_texture_lod_ratio - Terrain texture LOD. Considering that it's covered by vegetation and anything in the far distance is only a few pixels anyway, this doesn't make sense to go any lower than .7. Remove all vegetation first to see it’s real visual effects. Setting it to 0 shows full LOD. Raise it above 1 for more performance.
e_view_dist_custom_ratio - View distance ratio for special marked objects (Players, enemies, Vehicles). It does not work at runtime in console, requires level restart.
r_TexturesStreaming - Setting this to 0 had a profound effect on some textures in the game, especially mountains. Apparently this disables streaming which will rely more on your video card memory. Also this setting should be at the end of a config file because it can be turned on automatically by other settings being adjusted.
r_TexAtlasSize – is simply a way textures are combined together. 2048 is preferred for high end.

Sprites & vegetation –
Sprites have been around for ever. They are basically 2D objects in the distance that transition into low LOD 3d objects as you get closer to them.
e_vegetation_sprites_distance_ratio – Turning this to 0 turns everything into a sprite. Since this is a ratio it turns everything into 3d at different distances. 1.7 is decent but this setting has a lot of effect on performance.
e_vegetation_sprites_distance_custom_ratio_min – 1 is a good default. 2 shows a lot more 3d objects, but at their poor LOD in the distance, sprites are probably preferred. We don’t have the power to render more trees at higher ranges and LOD’s so 1 is good. This is just here as an example of distance ratios.
r_VegetationSpritesTexRes – This determines the resolution of the sprites. Setting this from 64 to 128 increases sprites quality in the distance. To prevent sprites popping, I suggest raising the sprites buffer to r_DynTexAtlasSpritesMaxSize = 32 with it.
 
Last edited:
PERFORMANCE TESTING AND MONITORING

Benchmarking your game
There is a way to benchmark the game with some batch files included in the bin folders of the game. But I use a fully robust benchmarking tool that is very easy to use and much faster for your testing and is 100% compatible with scores from those just running the batch files.

benchmarktoolresized2yo9.gif


Get it here! Or here!

How To Use:
Simply queue up several different runs mixing settings, resolutions, antialiasing levels and click "Begin benchmark Run".
You can add a frame number where screenshots can be made on every frame for comparison. Use Negative numbers to make a screenshot on every N frame (ie: -399). Hit view button to to view them.
For advanced users you can add custom cvars or import a cfg file that will run globally on all tests.
There is no installer/uninstaller, just unzip and double click to use.

Notable Features:
Run a variety of tests all at one time.
Choose windowed, 32/64 bit, DX9/DX10 tests.
Logs setting details for each test run plus provides a summary breakdown (with averages if 3 or more loops).
Supports custom demos.
Allows pause/resume by hitting spacebar, between runs.
Auto-save all benchmark runs in Autosave folder.
Allows Copy/Paste from results window.
Save and import a queue of runs for ease of retesting.
Allows image quality comparisons by taking a screenshot on each run at certain frame(s).

How It Works:
It doesn't change or alter any game files. Except it uses the same log file that the Crysis timedemo does to log the results, that is the only game file altered in any way. there are no batch files used, this is stricly application controlled. The tool will go through the queue one by one. Between test runs you will have an option to pause for 3 seconds (visible with countdown timer) and it highlights the test it will run next if resumed. A Summary is provided at the end for reference and details are provided prior. If 3 or more demo loops are set for each run, then the summary will provide an average of all loops except loop 1. For averages the first test loop is ignored since it is cacheing assets on the first loop. If only 2 runs are selected, the averages shown are not 'overall' averages but 'last' average, meaning it will provide the average from loop 2, again ignoring loop 1 wherever possible. All Completed demo runs are saved in the autosave folder by date/time for convenience.
It will detect and notify you if you have any configuration files that may skew benchmark results.

The tool provides zero overhead during tests. There is no program logic operating in the tool while a testing run is going, it is only waiting for a signal back from the operating system that the demo loops are done, then it proceeds to start the next run. CPU spikes will be seen between test runs but this doesn't effect the runs at all, since it is essentially asleep during runs.
In most cases the tool will find where the game or demo is installed, if you want to specify a path for some reason then go to File/Set Game Path.

Limitations:
There are currently a few limitations with the first release that will be added to later.
- Low/Medium/High/VeryHigh global settings can be mixed and matched in the queue as desired but only one custom configuration (mixing individual quality settings) can be mixed into the queue. In other words many custom runs can be added to the queue but it will only use the same custom settings for each run. The custom quality benchmark run will be run with the quality settings that are currently selected at the time that the 'Begin Benchmark' button is pressed.
- For any advanced optional CVARS you add, they will be global to all tests and not on a per test run basis.
- Currently while many resolutions are provided, not all may be supported by your monitor.
- DX10 option will show up in Vista if you don't have DX10 hardware. Choosing DX10 will revert to using DX9, although the log output will show DX10 erroneously. I do not have directx API logic in the tool yet to differentiate HW.
- Vsynch currently disabled as there were issues with it working in demo, will be re-enabled in soon update.

Plans:
I plan to remove the current limitations listed above in a near future release. I also am planning advanced testing options to show video/RAM memory usage as well as per core CPU usage.
I also plan to have an advanced tweaking section that I will add to the tool for people that want to test the performance of their tweaks.
Possible reports/graphs and exporting options depending on the community desire for it.

Change Log

Version 1.05 release 11-20-07
* Changed the way AA initializes for Vista and XP. AA settings work reliably in testing.
* Removed speech audio from playing with the default GPU/CPU benchmarks.
* Modified pause and stop, mostly cosmetic fixes.
* Vsync working and enabled for retail, automatically disabled for demo because doesn't work.
* Complete re-write of SP Demo and Retail detection and pathing. The tool will autodetect what version it is testing and if it's manually pointed to a different version it will detect it appropriately.
* Included build version of game being tested on form title.
* Fixed pointing to the right path for timedemos after a game path is manually changed.
* Added persistent data with a benchmarktool.ini to retain certain user settings between sessions (ie:clear log before run, tooltips checkbox)
* Added better attention grabber to the Add runs to queue button, if begin benchmark is pressed with an empty queue.
* Fixed extension filter issue with save results dialog.
* Reduced working set and private bytes usage of tool by several hundred percent.
* Minor formatting fix on summary under certain conditions.
* Fixed 64 bit testing for Vista 64. XP 64 still unsupported by tool (contact me for testing).
* Included a new benchmark called Assault_Harbor that is available in the timedmo selection drop down box. Instead of a good GPU or CPU test, this focus's on real gameplay from a level of the game with active AI, active physics and stressing particle graphics as well. Each run will be somewhat unique since AI and physics are active during test but is a good representation of real gameplay to test your settings against.

Vesion 1.04 release 11-16-07
* Disabled 64 bit benchmark because of issues.

Feedback would be appreciated to make it a better tool!
Ask questions and post your results here if you like.

Here is one of my benchmark runs:
Q6600 @ 3 GHZ
8800 GTS 640 OC (580/1456/975)

11/13/2007 7:41:55 AM - Vista 64 (DX10 game default)
Run #1- 1024x768 AA=No AA, 32 bit test, Quality: High ~~ Overall Average FPS: 45.23
Run #2- 1024x768 AA=4x, 32 bit test, Quality: High ~~ Overall Average FPS: 36.725
Run #3- 1280x1024 AA=No AA, 32 bit test, Quality: High ~~ Overall Average FPS: 32.65
Run #4- 1280x1024 AA=4x, 32 bit test, Quality: High ~~ Overall Average FPS: 25.98
Run #5- 1600x1200 AA=No AA, 32 bit test, Quality: High ~~ Overall Average FPS: 24.37
Run #6- 1600x1200 AA=4x, 32 bit test, Quality: High ~~ Overall Average FPS: 15.96
Run #7- 1024x768 AA=No AA, 32 bit test, Quality: VeryHigh ~~ Overall Average FPS: 25.07
Run #8- 1280x1024 AA=No AA, 32 bit test, Quality: VeryHigh ~~ Overall Average FPS: 17.465
Run #9- 1600x1200 AA=No AA, 32 bit test, Quality: VeryHigh ~~ Overall Average FPS: 12.705

Big thanks to the testers that helped make this release:
alpha_ger
ByReckon
Koei
MaDMaXX
marcomv


Monitoring For Your Specific Hardware While Changing Settings And Tweaking
People used to use sys_budget_sysmem thinking it was a tweak, although I tried to educate people this was not a tweak but a monitoring tool by devs, you still see sys_budget in many cfg's floating around today with people thinking they are tweaking memory. Here is how to use these settings. During your tweaking, or changing of settings, it could be quite valuable to see how the game is fitting within your available HW specs. This would also be useful in modding in making sure you aren't overtaxing your planned audience.

monitoringoverbudgetvt4.gif


The shrunk image above shows several different thresholds that have been surpassed and giving you warnings, like under video memory it says "You are over budget, texture thrashing is likely to occur!!" Well, that is good to know isn't it!
I will detail the relevant settings below so that you can customize thresholds for your particular HW, like I do for mine in the picture below.

monitoringbudgetnm1.gif


You can tell the game to warn you when it surpasses your available video memory, RAM, your minimum target fps, etc.

sys_budget_sysmem
Figure out 'available' RAM by subtracting your total RAM minus what the operating system is currently using in taskmgr. It's difficult to gauge with Vista's SuperFetch which uses available RAM as a cache. Superfetch can be disabled and personally, I have had it off since my early testing days on Vista, it's how I prefer it. So if you have 1GB RAM and XP is using 300MB in windows, you set it to 700. With 2GB and 500MB usage in Windows it would be 2048 - 500 = 1548. This is to prevent pagefile thrashing, you don't want your hard drive thrashing during play.
sys_budget_videomem
Video memory in MB. See section in the guide on video memory and why this is important. Although the "Thrashing could occur warning!" could be a clue. Set it for your video cards memory. people with 256MB, 320MB or even 512MB can especially benefit from this information. Video memory in the game is directly effected by texture quality and texture resolution in the game. LOD tweaking and texture view ranges will effect vid memory as well. (Works with XP ONLY)
sys_budget_frametime
Sets the upper limit for frame time (in ms). Set your target FPS in frame time MS. So if you select 25 fps as your minimum fps that you want to achieve while you are tweaking, then this will flash red when you drop below your limit. I suggest you start by lowering your resolution to minimum happy level, then try finding that acceptable rate of fps as you are tweaking for quality improvements or performance. 30ms=33fps, 40ms=25fps, 50ms=20fps, etc.
sys_budget_numdrawcalls
Reducing drawcalls is a thing all developers desire to optimize in their engines. The number of objects that can be rendered is limited by the number of draw calls the API can handle, because each draw call carries a fixed overhead. In DirectX 9.0, you could render around 500 different objects in any one frame before you become completely CPU limited. Objects can be things like trees, non-playing characters, characters, guns, buildings, etc. One of the big benefits to DX10 you have heard about is lowering draw calls overhead, thereby reducing CPU overhead. DX10 should be capable of handling many more objects without hurting the CPU, in excessive tweaks of view ranges DX10 could actually become beneficial. Alot of that depends on the methods implemented in the DX10 API though. I hope to test this later on.
sys_budget_soundchannels
Each sound card has a limit on soundchannels. Audigy 4 does 64 audio channel playback with independent sample rates. Onboard sound cards will suffer from channel limits when you are in fire fights with sounds not being able to be processsed and cutting out, etc.
sys_budget_soundmem
Sets the upper limit for sound memory (in MB) for monitoring.
I set this the the sound memory cache just to see if i exceed the cache, if I ever do, I will raise the cache.
sys_enable_budgetmonitoring
Turns on or off budget monitoring [0/1]. Can be done in console or cfg. Infact, all budgets can be altered in realtime in console if desired. It is preferred you place and keep all the 'sys_budget...' values in your current cfg's tailored for your HW, that way if you ever want to start the monitoring in the game, just enable it in the console and the proper threshold values will be used instead of the defaults, saving time and making it useful.

Final Note: As I was putting this budget monitoring piece together I noticed there is a large discrepancy in the video memory reported in this tool and by the DXAPI and other methods. Showing 160MB of video memory usage at 1280x1024 on high seems very suspicious and improbable, even if adding textures and mesh memory from the above system memory field. Especially when I am seeing 315MB by other methods. Hopefully I can make time in the future to research this, this number maybe altered dependant on their streaming methods in game but still doesn't add up.


TWEAKING AI

I haven't done alot of work on AI yet but this will help get things rolling.

Here is a chart showing the various AI settings that change for each difficulty level.
It is in bold if the value changed from the previous setting.



Delta makes some huge changes. As you can see some settings on the lower part can adjust the way AI reacts in lighting conditions, as well as your suit recharge time and draining. Allow accuracy decrease/increase can change things alot too for more difficult AI.
I believe the i_usealternativereadability' has to do with Korean voices.
See the definitions for more explanation.

More info on AA will be added as it is digested...share what you learn...

Thanks to MadBoris for all his hard work in starting this guide. Feel free to add to it. :)
 
Last edited:
LOL No! My friend MadBoris did most of the work. I forgot to add the credits. Adding now.

Ah ok, sorry about that, just making sure. BTW, in the first paragraph where you mention Vista Hotfixes, you forgot the link ;)
 
Question: what's a good, playable FPS for crysis?
If you can hold an average FPS of 24 you're golden. I know it sounds low, but I asked the same questions and got many answers, let's just say the Crysis engine is really well written. Even at that low a FPS it seems almost like 40 or 50! At least I thought so. :)
 
Someone else is posting portions of the same info, with no credits. Might wanna tell your friend, if this isn't him: http://forums.gameservers.com/viewtopic.php?p=144908&sid=f467274747060bcd56fe89d6a44a4050

Hell, several people are posting similar things, some going back to December.. http://www.google.com/search?q="wor...g+an+average+of+anywhere+from"&hl=en&filter=0

Interesting stuff, anyway.. Props to whoever really wrote it.

Oh I'm well aware. lol I was with his team (not a member mind you) when they compiled it, I helped a little, but mostly with posting! lol But seriously though, they don't care, as long as credit is given. Even I forgot after posting, but after a fellew OCForums member pointed it out I quickly added it. :)
 
Wow great stuff you have put up here.
The screens are also good, the game sure has a lot of eyecandy.
But i have a question, which is a better experience : 1280x1024 at high with 4xAA 16xAF or 1680x1050 at med with 0xAA

PS:Reading this......and then tweaking crysis will take forever. I'll wait for newer GPUs :p
 
Last edited:
Back