Connection, Framerate and Visual Tweaks
Framerate and Visual Tweaks



We have compiled a variety of settings so you can obtain the best compromise between FPS and visual quality for your system. In order to use the tweaks you must add them to a text file called autoexec.cfg in your Quake 4 'base' directory or test them at the console. See the FAQ How do I access the console? for details on how to enable the console. Make sure that you have setup your graphic card's driver options to give best performance before using these tweaks, see the Display and OpenGL Drivers section for more information.



The Magic Number - 60 FPS
Unlike previous games from id software in multiplayer you only need to achieve a steady frame rate of 60 FPS. Anything higher is simply ignored by Quake 4's world update and player movement code. This will help even the playing field in multiplayer as physics will be the same on all machines. There appear to be cvars and hints in the game (#define GAME_FPS 60 and com_fixedtic) that with a mod servers could possibly alter the default tic rate, even if that were the case all players would still be forced to the server's game tic.

John Carmack of id sofware: "The game tic simulation, including player movement, runs at 60hz, so if it rendered any faster, it would just be rendering identical frames. A fixed tic rate removes issues like Quake 3 had, where some jumps could only be made at certain framerates. In Doom [and Doom engine games such as Quake4], the same player inputs will produce the same motions, no matter what the framerate is."



Benchmarking
NOTE:
Quake4 does not ship with a singleplayer benchmark demo, until a demo is recorded use your own in place of the ??DemoName?? in step 3 of the singleplayer instructions. If you do not have access to a demo use the Built in Benchmark instructions. See the FAQ How do I record and playback demos? for details on how to record your own demos.

You should always ignore the first benchmark result if you are not appending 'usecache' to the timedemo command. Quake 4 often pauses while loading models and textures for the first time.


Singleplayer Demo Recording Benchmark

1) Load Quake 4 using the shortcut that enables the console
2) Open the console using the ' key below ESC or 
press CTRL+ALT+~ (US Keyboards) or CTRL+ALT+' (UK Keyboards)
3) Enter the command timedemo ??DemoName??  usecache
4) Wait until demo has finished and note your FPS


Multiplayer Demo Recording Benchmark
1) Load Quake 4 using the shortcut that enables the console
2) Open the console using the ' key below ESC 
or press CTRL+ALT+~ (US Keyboards) or CTRL+ALT+' (UK Keyboards)
3) Enter the command playnettimedemo id_demo001
4) Wait until demo has finished and note your FPS


Built in Benchmark

Load up a map and move to the area that is causing you FPS problems. 
Open the console and type benchmark 

NOTE: If you are testing a multiplayer map you must type
net_allowCheats "1" at the console.

After a delay of a few seconds you will be presented with a breakdown
of FPS with various game options enabled / disabled. 
Use this information to help you tweak FPS.

kpix shows the benefit of reducing screen size / resolution
no Diffuse shows the benefit of disabling diffuse lighting
no Bump shows the benefit of disabling bump mapping
no Specular shows the benefit of disabling specular lighting
Driver overhead, if this is high it may point to a driver issue


Testing while in game or online
To test your FPS while online or in game type "com_showfps 1" at the console


Please make sure that you read the Display and Rendering Tweak Notes at the foot of this page. The lowest system specification I have here is a 1.8 GHZ AMD Athlon XP, Geforce4 ti4200/128/8x with 512 megabytes of system ram. Tweaks are based on best compromise / quality in the single player game for that system. 

If you are just testing make sure that you do a writeconfig Quake4Config.cfg followed by a vid_restart after setting the cvars. Once you are happy with the tweaks you must add them to a text file called autoexec.cfg in your Quake 4 'base' directory 




Main Menu Options
(Settings | System | Video Quality)

Ultra
Each texture (diffuse, specular, normal) will be at full resolution with no compression. In a typical Quake 4 level, this can hover around 500 megabyte of texture data. This will run on current hardware but will not fit onto a 256MB card, causing texture thrashing.  The amount of texture referenced in a given scene per frame ( 60 times a second ) can easily be 50 megabytes+. This is ideal for 512 megabyte video cards.

High quality
Uses hardware compression ( DXT1,3,5 ) for specular and diffuse textures and no compression for normal textures. This looks very very close to Ultra quality but the compression does cause some loss in quality. This is ideal for 256 megabyte video cards.

Medium quality
Uses hardware compression for all textures (specular, diffuse and normal). While this still looks good, compressing the normal maps can produce a few artifacts especially on hard angled or round edges. This is ideal for 128 megabyte cards.

Low quality
Uses hardware compression for all textures (specular, diffuse and normal) and automatically resizes diffuse and normal textures to no more than 256x256 and specular texture maps to no more than 64x64. This is ideal for 64 megabyte video cards.



Dual Core Processor Systems

If you have a dual core processor and Quake 4 patch 1.0.5.0 or above you may wish to enable the dual core optimisations. Simply enter seta r_useSMP "1" at the console or add to your autoexec.cfg. If you experience reduced FPS or stutrring issues then read our FAQ How can I stop the frame rate / stuttering issues with dual core?


 

Best Visual Compromise / FPS Compromise Config

If you are having FPS problems this is the best all round config for singleplayer, offering a good compromise between visual quality and FPS. If you wish to try more tailored configs (excellent, high, medium and low) see our Tailored Configs page or create your own using the 'Display and Rendering Tweak Notes' section at the foot of this page.

Create a text file called autoexec.cfg in your Quake 4 'Base' directory and cut/paste the relevant config text.

IMPORTANT: Make sure that you let Quake 4 autodetect (Settings | System | AutoDetect Settings) the best setting initially and then use the tweaks in your autoexec.cfg. If you do not the textures can look a little washed out/flat/half-shaded as Quake 4 has not set the cvar image_useNormalCompression (and possibly others such as rendering/shading) correctly for your hardware.

256 Megabyte Video Cards 
seta image_usePrecompressedTextures "1"
seta image_useCompression "1"

seta image_downSizeLimit "1024"
seta image_ignoreHighQuality "1"
seta image_downSizeBumpLimit "1024"
seta image_downSizeSpecularLimit "256"
seta image_downSizeBump "1"
seta image_downSizeSpecular "1"
seta image_downSize "1"
seta image_lodbias "0"
seta image_preload "1"
seta r_useCachedDynamicModels "1"
seta r_skipBump "0"
seta r_skipPostProcess "0"
seta r_skipSpecular "0"
seta r_skipNewAmbient "1"
seta r_multiSamples "0"
seta r_useFastSkinning "0"
seta r_shadows "0"
seta r_useOptimizedShadows "1"
seta r_useTurboShadow "1"
seta g_projectilelights "1"
seta g_skipParticles "0"
seta g_decals "0"
seta g_brassTime "0"
seta g_muzzleFlash "1"
seta g_doublevision "0"
seta g_showPlayerShadow "0"
seta g_skipItemShadowsMP "1"
seta g_skipPlayerShadowsMP "1"
seta image_anisotropy "1"
seta ui_showGun "1"
seta image_filter "GL_LINEAR_MIPMAP_NEAREST" 
seta s_maxSoundsPerShader "0" 

512 Megabyte Video Cards 
seta image_usePrecompressedTextures "0"
seta image_useCompression "0"

seta image_downSizeLimit "1024"
seta image_ignoreHighQuality "0"
seta image_downSizeBumpLimit "1024"
seta image_downSizeSpecularLimit "256"
seta image_downSizeBump "0"
seta image_downSizeSpecular "0"
seta image_downSize "0"
seta image_lodbias "0"
seta image_preload "1"
seta r_useCachedDynamicModels "1"
seta r_skipBump "0"
seta r_skipPostProcess "0"
seta r_skipSpecular "0"
seta r_skipNewAmbient "1"
seta r_multiSamples "0"
seta r_useFastSkinning "0"
seta r_shadows "0"
seta r_useOptimizedShadows "1"
seta r_useTurboShadow "1"
seta g_projectilelights "1"
seta g_skipParticles "0"
seta g_decals "0"
seta g_brassTime "0"
seta g_muzzleFlash "1"
seta g_doublevision "0"
seta g_showPlayerShadow "0"
seta g_skipItemShadowsMP "1"
seta g_skipPlayerShadowsMP "1"
seta image_anisotropy "1"
seta ui_showGun "1"
seta image_filter "GL_LINEAR_MIPMAP_NEAREST" 
seta s_maxSoundsPerShader "0" 

64 Megabyte Video Cards 
seta image_usePrecompressedTextures "1"
seta image_useCompression "1"

seta image_downSizeLimit "256"
seta image_ignoreHighQuality "1"
seta image_downSizeBumpLimit "256"
seta image_downSizeSpecularLimit "64"
seta image_downSizeBump "1"
seta image_downSizeSpecular "1"
seta image_downSize "1"
seta image_lodbias "0"
seta image_preload "1"
seta r_useCachedDynamicModels "1"
seta r_skipBump "0"
seta r_skipPostProcess "0"
seta r_skipSpecular "0"
seta r_skipNewAmbient "1"
seta r_multiSamples "0"
seta r_useFastSkinning "0"
seta r_shadows "0"
seta r_useOptimizedShadows "1"
seta r_useTurboShadow "1"
seta g_projectilelights "1"
seta g_skipParticles "0"
seta g_brassTime "0"
seta g_decals "0"
seta g_muzzleFlash "1"
seta g_doublevision "0"
seta g_showPlayerShadow "0"
seta g_skipItemShadowsMP "1"
seta g_skipPlayerShadowsMP "1"
seta image_anisotropy "1"
seta ui_showGun "1"
seta image_filter "GL_LINEAR_MIPMAP_NEAREST" 
seta s_maxSoundsPerShader "0" 

128 Megabyte Video Cards 
seta image_usePrecompressedTextures "1"
seta image_useCompression "1"
seta image_downSizeLimit "512"
seta image_ignoreHighQuality "1"
seta image_downSizeBumpLimit "512"
seta image_downSizeSpecularLimit "128"
seta image_downSizeBump "1"
seta image_downSizeSpecular "1"
seta image_downSize "1"
seta image_lodbias "0"
seta image_preload "1"
seta r_useCachedDynamicModels "1"
seta r_skipBump "0"
seta r_skipPostProcess "0"
seta r_skipSpecular "0"
seta r_skipNewAmbient "1"
seta r_multiSamples "0"
seta r_useFastSkinning "0"
seta r_shadows "0" 
seta r_useOptimizedShadows "1"
seta r_useTurboShadow "1"
seta g_projectilelights "1"
seta g_skipParticles "0"
seta g_brassTime "0"
seta g_decals "0"
seta g_muzzleFlash "1"
seta g_doublevision "0"
seta g_showPlayerShadow "0"
seta g_skipItemShadowsMP "1"
seta g_skipPlayerShadowsMP "1"
seta image_anisotropy "1"
seta ui_showGun "1"
seta image_filter "GL_LINEAR_MIPMAP_NEAREST"
seta s_maxSoundsPerShader "0" 



Display and Rendering Tweak Notes
Note:
This section only contains useful cvars, if you want a more complete list see our cvars page. To experiment with / use these settings try them at the console or add them to a text file called  autoexec.cfg in your Quake 4 'Base' directory.

NOTE: Some of these cvars are only suitable for multiplayer. In singleplayer you must determine if the trade off for FPS is worth losing some of the visual effects. As a guideline, faster is generally (but not always) uglier than slower =)


com_fixedtic

Controls the games tic rate. Defaults to 0, setting this to 1 or -1 will remove the 60 FPS cap for singleplayer.

com_videoram

Holds the last detected amount of video ram. Check this setting in game at the console, if it is incorrect you may wish to set this to the correct amount of video ram.

Example if you have a 256 megabyte card and com_videoram shows 64 you could try setting this to 256

g_brassTime

Controls how long the 'brass' or 'cartridges' are left on the ground when using weapons such as Machinegun and Shotgun. May help with FPS when disabled. 

Range is 0 to 3000 with 0 being disabled

Set to 0 (faster) or 1-3000 (slower)

g_decals

Control if decals such as bullet holes, blood, burns on walls etc. are shown

Set to 0 (faster) or 1 (slower)

g_doublevision

Controls if your vision is affected when you take damage.

Set to 0 (no doublevision) or 1 (doublevision)

g_forceModel
g_forceMarineModel 
g_forceStroggModel 

In multiplayer these settings control display of enemy and friendly player models. Forcing models can help FPS with systems low on graphics card memory and visibility. Models with 'bright' appended are the new bright skin models avilable in patch 1.1 final or above.

g_forceModel, controls display of models in or Tournament or Free For All (FFA) game modes such as deathmatch. Valid settings:

model_player_failed_transfer
model_player_slimy_transfer
model_player_corpse
model_player_marine_tech
model_player_tactical_elite
model_player_tactical_command  model_player_marine_helmeted_bright model_player_tactical_transfer_bright


g_forceMarineModel, controls display of models in Team Play games (CTF, TDM) game modes such as deathmatch. Valid settings:

model_player_marine
model_player_marine_morris
model_player_marine_voss
model_player_marine_cortez
model_player_marine_helmeted
model_player_marine_medic
model_player_marine_officer
model_player_marine_fatigues model_player_marine_helmeted_bright 


g_forceStroggModel, controls display of models in Team Play games (CTF, TDM) game modes such as deathmatch. Valid settings:

model_player_tactical_transfer model_player_kane_strogg
model_player_tactical_transfer_bright

 

g_muzzleFlash

Controls muzzle flashes when you or the enemy fires a weapon.

Set to 0 (faster) or 1 (slower / more realism)

g_projectileLights
g_skipParticles

Control if projectiles such as fireballs, etc. create dynamic lights or particles when fired (unconfirmed)

Set g_projectileLights to 0(faster) or 1 (slower)

set g_skipParticles to 1(faster) or 0 (slower). 

g_simpleItems 

Controls how items such as ammunition and weapons are rendered. Setting this to 1 can greatly help FPS on CPU limited systems and overall visibility.

Set to 1 (faster) or 0 (slower)

g_showPlayerShadow
g_skipPlayerShadowsMP

Controls your player shadow in singleplayer and multiplayer (MP)

g_showPlayerShadow 
Set to 0 (faster) or 1 (slower / more realism)

g_skipPlayerShadowsMP 
Set to 1 (faster) or 2 (slower / more realism)

g_skipFX

Controls if additional in game graphic effects are used. 

NOTE: On some systems this may have the side effect of causing your HUD to be hidden.

Set to 1 (faster) or 0 (slower)

g_skipItemShadows

Controls item shadows in multiplayer

Set to 1 (faster) or 2 (slower / more realism)

g_skipViewEffects

Controls damage and other view effects

NOTE: This will have the side effect of causing your HUD to be hidden.

Set to 1 (faster) or 0 (slower)

image_anisotropy

Sets the maximum texture anisotropy if
available in the renderer. Set between 0 and 16 with the lower number being faster and the higher number being slower

image_downSize
image_downSizeLimit

Controls resizing of standard textures. Helpful if your video card has less than 256 megabyte of video ram

Set image_downSize to 0(disabled) or 1(enabled)

Set image_downSizeLimit higher(slower) or lower(faster) 

256 megabyte video cards
seta image_downSizeLimit "1024"

128 megabyte video cards
seta image_downSizeLimit "512"

64 megabyte video cards
seta image_downSizeLimit "256"

image_downSizeBump
image_downSizeBumpLimit 

Controls resizing of textures for bump maps. Helpful if your video card has less than 256 megabyte of video ram

Set image_downSizeBump to 0(disabled) or 1(enabled)

Set image_downSizeBumpLimit higher(slower) or lower(faster) 

256 megabyte video cards
seta image_downSizeBumpLimit "1024"

128 megabyte video cards
seta image_downSizeBumpLimit "512"

64 megabyte video cards
seta image_downSizeBumpLimit "256"

image_downSizeSpecular
image_downSizeSpecularLimit 

Controls resizing of textures for specualr highlights. Helpful if your video card has less than 256 megabyte of video ram

Set image_downSizeSpecular to 0(disabled) or 1(enabled)

Set image_downSizeSpecularLimit higher(slower) or lower(faster) 

256 megabyte video cards
seta image_downSizeSpecularLimit "256"

128 megabyte video cards
seta image_downSizeSpecularLimit "128"

64 megabyte video cards
seta image_downSizeSpecularLimit "64"

image_filter

Changes texture filtering used for  mipmapped images

"GL_LINEAR_MIPMAP_NEAREST" (faster)
"GL_LINEAR_MIPMAP_LINEAR" (slower)

image_ignoreHighQuality

Controls high quality settings on materials. Can give a minor FPS gain in singleplayer 

Set to 0(slower) or 1(faster)

image_lodbias

Controls lod bias on mipmapped images

Range from -2 (slower / crisper) to 2 (faster / uglier)

image_useCache
image_cacheMegs
image_cacheMinK

Controls memory set aside for temporary loading of full-sized precompressed images and files.

WARNING - When set incorrectly this can cause Quake 4 to crash at startup or cause instability/graphical artifacts in game. If you are having problems at map start try setting image_useCache to 0, you must restart the game to enable the change

Set cache megs to a higher value if you have 512 megabytes or more of system RAM. Guideline is 1/6 to 1/4 of your system RAM.

Set image_cacheMinK to 2048. This can be set lower than 2048 when image_useCache is set to 1 but may cause Quake 4 to crash.

Set image_useCache to 1 to enable background load image caching

512 Megabytes of RAM
seta image_cacheMegs "96"
seta image_cacheMinK "2048" // NOTE

768 Megabytes of RAM
seta image_cacheMegs "256"
seta image_cacheMinK "2048" // NOTE

1 Gigabyte+ of RAM
seta image_cacheMegs "384" 
seta image_cacheMinK "2048" // NOTE

NOTE: You can leave image_cacheMinK at its default if you are not setting image_useCache to 1

image_useCompression

Determines if textures are used compressed. 

Set to 0 (uncompressed, high quality)
Set to 1 (compressed, slight loss of quality)

Important: Only set to 0 if you have over 256 megabytes of video ram.

image_useNormalCompression

Determines how normal textures are compressed.  

Set to 1 for lower quality/smaller/faster 256 compression

Set to 2 for higher quality/larger/slower rxgb compression 

NOTE: ATi 9x00 series or before should use a setting of "1"

pm_runbob
pm_runpitch
pm_runroll
pm_bobpitch
pm_bobroll
pm_bobup
pm_crouchbob
pm_walkbob

Controls 'bobbing' up/down/side movement of player. Can help if you get motion sickness

Set each of the bob cvars to 0 to disable bobbing

r_brightness

Does not affect FPS, helps with brightness.

Set between 1 and 2, if brightness is still a problem use r_gamma and/or r_lightscale

r_forceambient 

The r_forceambient controls how lights are drawn by the game engine. Any light below a set threshold will be skipped. This will dramatically increase FPS and particularly helps with CPU limited systems

Usable ranges are from 0.1(slower) to 1(faster). Faster is generally uglier than slower

r_gamma

Does not affect FPS, helps with brightness, do not set this too high or colours will become washed out. See r_lightscale.

Set between 1 and 1.5, adjust r_lightscale for settings high than 1.5

r_lightDetailLevel

Controls the threshold at which lights are drawn. Any light below this threshold is skipped. This particularly helps with CPU limited systems

Usable ranges are from 0(slower) to 9(faster) 

r_lightscale

Does not affect FPS, helps with brightness and raises the intensity of all colours. 

Set between 2(default) and 4, only use when you feel r_gamma and r_brightness have not helped.

r_Multisamples

Controls the amount of antialiasing.

Set to 0, 2, 4, 8, or 16 with the lower number being faster and the higher number being slower. Not all cards will support 8 or 16 settings.

r_shadows

Enables or disables shadows, very high FPS gain with the drawback losing shadows generated by enemies and objects.

Set to 0(faster) or 1(slower) 

r_skipBlendLights

Skip all blending of lights, not worth the negligible FPS gain in singleplayer

Set to 0(slower) or 1(faster) 

r_skipBump

Controls bump mapping, can be set so that Quake 4 displays a flat surface instead of a 'raised' surface on textures. Setting to 0 can help with CPU limited systems as Quake 4 requires localised world lights with bump mapping enabled.

Set to 1(faster / uglier) or 0 (slower)

r_skipDynamicTextures

Do not dynamically create textures, can cause problems with in game videos. Best to leave at 0 for singleplayer.

Set to 0(slower) or 1(faster)

NOTE:
Leave at 0 for singleplayer

r_skipFogLights

Skip all fog lighting, negligible FPS gain.

Set to 0(slower) or 1(faster) 

r_skipNewAmbient

Controls the rendering of special effects such as heat haze.

Set to 1(faster) or 0 (slower)

r_skipOverlays

Skip overlay surfaces on textures. Negligible FPS gain.

Set to 1(faster / uglier) or 0 (slower) 

r_skipPostProcess

Skip all post-process rendering such as distortion on windows glass / etc. FPS gain on some systems.

Set to 0(slower) or 1(faster) 

r_skipSpecular

Uses black for specular lighting. Specular lighting adds additional lighting to a texture's surface. Not worth the minor FPS gain in singleplayer. In multiplayer setting to 0 can help with CPU limited systems.

Set to 1(faster / uglier) or 0 (slower)

r_skipTranslucent

Controls translucent interaction rendering such as the loading bar and logos on containers. FPS gain on some systems.

Set to 1(faster) or 0 (slower)

r_useCachedDynamicModels

Controls dynamic model loading, if set to 1 the game will use its memory cache for models.

Set to 1(usually faster) or 0 (slower)

r_useDepthBoundsTest

Specific to Nvidia hardware and enables UltraShadow II’s depth bounds test feature for 5x00/6x00/7x00 cards. Defaults to enabled (1) in Quake4.

Set to 1(faster) or 0(slower) 

r_useOptimizedShadows

Determines if static shadow volumes are used rather than calculated in real time

Set to 1(faster) or 0(slower) 

r_useSMP

Enables or disables use of threading for   HyperThreading enabled or Dual Core processors such as AMD X2 and Pentium 4 HT. This can cause stuttering and or stability issues on some systems. See our FAQ

Set to 1(faster) or 0(slower) 

r_useTurboShadow

Use a faster technique for generating dynamic shadows. This may cause loss of shadows on systems with older display drivers.

Set to 1(faster) or 0(slower) 

ui_showGun

Shows or hides your on screen gun model.

Set to 1(slower) or 0(faster)


Contact Us | SavageUK | UpsetChaps
All Rights Reserved. Copyright © 2005-2007 Requ!em