Enemy Territory: Quake Wars Tweak Guide
[Page 9] Advanced Tweaking (Pt.3)
Before examining the list below, it's important to note that I have excluded a large number of commands which are already set to their optimal values by default in ET:QW. For example settings such as r_useVertexBuffers and r_useOptimizedShadows are already enabled and working optimally in the game, and should not be changed from their defaults as there is no benefit in doing so.
com_unlockFPS [0,1] - When this is set to 0, the ET:QW engine is effectively locked to a 30FPS maximum to help maintain smoothness. However if you want your framerate to exceed this limit, you must first make sure this variable is set to 1, which it should be by default. However by itself that won't necessarily do anything - you should also check and adjust the com_unlock_timingMethod and com_unlock_maxFPS variables below as well.
com_unlock_timingMethod [0,1,2] - ET:QW tries to smooth out your framerate using a timing method which is specified here. By default the timing method is 2, which is the most conservative approach and effectively the smoothest, but provides the lowest framerates, typically leaving most people at 30FPS. Setting this variable to 1 sacrifices some smoothness in return for higher FPS. Using both 1 or 2 still limits your framerates to multiples of 30, but setting it to 0 completely frees up system to provide the highest possible FPS, but in return you may experience FPS spikes and jerky gameplay.
com_unlock_maxFPS [FPS rate] - If you've unlocked your framerate using com_unlockFPS 1 and you're using a com_unlock_timingMethod of 1 or 2, then you will still be bound to a maximum framerate specified using this setting, the default being 60FPS. If the game can't reach the new framerate cap, it will round down in multiples of 30, so if you notice your FPS is still sitting around 30 after unlocking your framerate, either lower this framerate cap, lower your settings to improve your average FPS, or switch to using the 0 timing method which effectively ignores this framerate cap.
Importantly, refer to the last page of this guide for more detailed advice on how to correctly use the above three settings and what they do.
r_useThreadedRenderer [0,1,2 ] - Added as of the 1.2 Patch, this option allows you to enable multithreading if you have a dual or multi-core CPU, and this can improve the performance of ET:QW. By default it's disabled (set to 0), but you can set it to either 1 or 2, with a value of 1 locking the renderer to your in-game frames, while 2 allows it to run unlocked. The developers recommend a value of 2 for this variable if you wish to enable it. Note that you must enable it either by inserting it in your autoexec.cfg file, or by entering it in the console prior to the start of a game; it can't be changed during a game.
r_megadrawmethod [0,1,2,3] - This command is exactly the same as the Lighting Quality setting in the main menu (See In-Game Settings section). A value of 0 is the same as High, a value of 3 is the same as Normal. You can try values in between to see if it improves image quality or performance, but in general a value of 1, 2 or 3 all appear much the same.
image_filter [GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_LINEAR] - Determines the base OpenGL texture filtering method to use on textures by default. GL_LINEAR_MIPMAP_LINEAR is Trilinear Filtering, however if you want a performance boost without any noticeable image quality loss, change this setting to GL_LINEAR_MIPMAP_NEAREST which is Bilinear Filtering.
r_skip - There are a range of commands starting with r_skip, e.g. r_skipDiffuse. If these are set to 1, they will remove the relevant feature from the game. So r_skipDiffuse 1 would remove all diffuse surfaces, resulting in them being blank (white); r_skipBump 1 removes all bumpmapping detail from surfaces, resulting in flat surfaces, etc. Aside from the potential for visual anomalies with some of the settings, and the fact that some may be considered cheats, this can improve performance and may give a gameplay advantage (some are cheat).
image_PicMipEnable - This setting is on by default and allows you to control a range of PicMip-related settings which determine the detail level of Mipmaps, and hence the quality of surfaces. However the related settings image_bumpPicMip, image_diffusePicMip and image_specularPicMip are exactly the same as those under the in-game Texture Quality sliders (See In-Game Settings section) and can be fully adjusted there. Importantly though, if you just want the highest level of image quality, you can force this by setting image_picMipEnable 0 which disables the use of mipmaps and thus ensures the highest quality images are always used.
image_useCompression [0,1] - By default ET:QW uses compression to reduce the size of textures and lightmaps, improving performance but reducing image quality slightly. If you want the absolute highest image quality, set this option to 0, though note that you will require a graphics card with a decent amount of Video RAM to prevent hitching (e.g. 320MB VRAM or higher).
r_visDistMult [0.8-1.2] - Determines the maximum visible viewing distance in the game, the higher the value the further you can see, but the lower your performance. For gameplay purposes you shouldn't lower this below its default, and it's best to set it to 1.2 for maximum advantage.
g_decals [0,1] - If set to 0, disables all decals (e.g. bullet holes). This can improve performance, especially in heavy combat, at the cost of realism.
r_lightScale [value] - All light sources are multiplied by this value. Increasing this value increases the intensity of all visible light sources, lowering it reduces them (cheat).
r_detailTexture [0,1] - If set to 0, disables Detailed Textures, which are the detailed surface effects shown on a texture, such as the gravel on a road. This can improve performance at the cost of image quality.
r_detailRatio [value] - Determines the ratio of detail textures to main textures. The higher this value, the more detail textures are shown per unit of main texture, however at very high values (and very low values) textures will look blurry. A moderate value of between 4 and 14 can look good, but has varying impact on performance.
r_detailFade [0-1] - Determines the way in which detail textures fade in the distance, the lower the value the sharper closer details will be.
g_showPlayerShadow [0,1] - If set to 1, the player will cast a shadow when standing near light sources. If set to 0, the player casts no shadow, which improves performance.
image_lodbias [-1-1] - Determines the Level of Detail (LOD) bias for mipmapped images. The higher the number, the less detail is visible on surrounding objects. This can improve performance, but reduces image quality. The default is 0, and values approaching 1 reduce detail quite heavily, while negative values approaching -1 increase detail, so experiment with fractional values such as 0.2 or -0.5.
image_lodDistance [value] - This determines the distance at which images don't need to be shown at full resolution, with the higher the value the better the image quality but the lower the performance.
r_md5LodBias [value] - Determines the Level of Detail (LOD) bias for mipmapped images. The higher the number, the less detail is visible on surrounding objects, such as vehicles. This can improve performance, but reduces image quality. The default is 0, and a value such as 1 reduces detail quite heavily, while negative values increase detail, so experiment with fractional values such as 0.2 or -0.5.
r_md5LodScale [value] - This determines the rate at which higher level of detail becomes visible on objects. The higher the value the more detail is visible on distant objects but the lower the performance.
r_renderProgramLodDistance [value] - Determines the distance at which general rendering details are shown, such as bump mapping on surfaces. The higher the value the more detail and effects will be shown in the distance but the lower the performance.
r_stuffFadeStart [value] - Sets the distance at which 'stuff' (i.e. mainly grass) begins to fade out of view.
r_stuffFadeEnd [value] - Sets the maximum visible distance for 'stuff' (i.e. mainly grass). Using a combination of r_stuffFadeStart and r_stuffFadeEnd you can in effect have more or less grass visible. For example try r_stuffFadeStart 0 and r_stuffFadeEnd 1000 together to give a thinned out grass effect for better performance without removing grass altogether.
r_stuffCacheMegs [MegaBytes] - Determines the amount of memory to use for caching stuff effects. The default is fine, however if you raise the r_stuffFadeEnd value above in particular, you may need to increase the cache to prevent stuttering and errors.
s_driver [best, openal, dsound] - Determines the audio API used for the game. The default of dsound is DirectSound which is optimal in Windows XP, however you can set this to openal to attempt to force OpenAL audio, either to try to fix audio glitches on your system, or in particular for Windows Vista users who want to have full hardware audio acceleration. If you want to force OpenAL mode, see s_libOpenAL below for details.
s_libOpenAL [path/file] - Determines the path and filename of the correct OpenAL32.dll file to use if OpenAL sound mode is chosen using the s_driver variable. Most sound cards have hardware support for OpenAL, and thus you should have an OpenAL32.dll file under your \Windows\System32 directory. So you would use the s_libOpenAL command in this way: s_libOpenAL C:\Windows\System32\OpenAL32.dll. You would then make sure to use the s_driver openal command, and if doing so during an active game, use the s_restart command to restart the sound system.
s_force22kHz [0,1] - If set to 1, this forces lower quality (22kHz) audio, which reduces sound quality but can improve performance (cheat).
s_numberOfSpeakers [2,4,5,6] - This value shows the number of speakers the game has detected, based on the your general Windows settings and In-Game settings. You can manually alter this value, however make sure it matches your current speaker setup otherwise you will have missing audio channels.
s_maxSoundsPerShader [value] - This setting determines the maximum number of sounds to use per shader, that is how diverse the sounds effects are. Increasing this value may increase sound variety but also increases memory usage and can reduce performance.
s_useOcclusion [0,1] - Occlusion is a basic audio method which muffles sounds which aren't clearly heard, such as those behind walls and objects. If set to 0, this method is disabled reducing realism and losing many distant sounds but it may increase performance (cheat).
s_noSound [0,1] - If set to 1, disables all sounds. Should be used primarily to troubleshoot potentially sound-related problems.
Update: As of the 1.4 Patch, the multiplayer stereo sound separation algorithm from Quake 4 has been added, and can be enabled via s_earSeperationAlgo 1. You can also control its parameters using the s_esa1_minVolume and s_esa1_maxWindow cvars.
There are a large number of commands starting with bot_ which you can view and experiment with. For the most part they are for server administrators who wish to fine-tune how bots (non-human players) behave on their server. However if you start an offline game with bots, you can also try to alter parameters like bot_noChat 1 to disable bots chatting, or bot_useVehicles 0 to prevent bots using vehicles.
pm_thirdPerson [0,1] - If set to 1, shows the player in third person view (cheat).
pm_thirdPersonAngle [angle] - If third person view is being used (i.e. pm_thirdPerson 1), this determines the angle of the third person view. 0 is from behind the player, while 180 is looking directly at the player's face. Other values view the player from various angles (cheat).
pm_thirdPersonHeight [value] - If using third person view, this determines the height of the camera from normal view height. Positive values raise the camera above normal view height, negative values below normal view height (cheat).
pm_thirdPersonRange [value] - If using third person view, determines the distance of the camera from the player. 80 is the default, and 0 is right inside the players head (cheat).
The following commands record and play back in-game demos. The recorded demos are stored by default under your \Documents and Settings\User\My Documents\id Software\Enemy Territory - QUAKE Wars\base\demos directory.
recordDemo [demoname] - Records a demo of your current (singleplayer) gameplay with the name specified.
stopRecording - Stops recording the current singleplayer demo.
playDemo [demoname] - Plays back a singleplayer demo with the name specified.
recordNetDemo [demoname] - Records a demo of your current gameplay on a multiplayer server.
stopNetDemo - Stops recording the current multiplayer demo.
playNetDemo [demoname] - Plays back a multiplayer demo with the name specified.
pauseNetDemo - Pauses/unpauses the playback of a network demo.
timeNetDemo [demoname] - Runs a timedemo on the demo name provided and provides framerate results in the console after the demo is finished.
com_preloadDemos [0,1]- Preloads all demos before playing them. Set to 0 will reduce memory usage, but loading demos will take longer.
com_compressDemos [0,1] - If set to 1 will compress demo files recorded, reducing their size. These files may take longer to load.
demoShot [demoname] - Creates a screenshot for the demo file specified.
demo_noclip [0,1] - If set to 1 allows you to noclip through a demo, so you can fly around while the demo is playing back.
g_showDemoHud [0,1] - Toggles the display of useful information on the HUD during the playback of a demo.
Update: As of the 1.5 Patch the following demo-related commands have been added:
g_autoScreenshot - Automatically takes a screenshot of the scoreboard at the end of a map.
g_autoRecordDemos - Automatically starts & stops demos at the start & end of a map.
g_autoScreenshotNameFormat [format] - Determines the format in which auto screenshots are saved when using the g_autoScreenshot command. Type the command without any value to see the default format, and the types of arguments you can use to construct a new format.
g_autoDemoNameFormat [format] - Determines the format in which auto demos are recorded when using the g_autoRecordDemos command. Type the command without any value to see the default format, and the types of arguments you can use to construct a new format
com_videoRam [MB] - Shows the detected amount of video memory on your graphics card in MB. If this value is incorrect, set it to the correct value at startup to improve performance.
sys_cpuSpeed [GHz] - Shows the detected CPU Speed. If this value is incorrect, set it to the correct value at startup to improve performance. Remember that for mult-core CPUs the speed is per core, not the sum of all cores.
sys_cpuPhysicalCount [value] - Shows the number of separate physical CPU cores the game has detected. If you have a multi-core CPU make sure this matches the number of cores you actually have. Note that the sys_cpuLogicalCount value may differ, since a single core hyperthreading CPU for example can have two 'logical' cores, but only one physical core.
com_showMemoryUsage [0,1] - If set to 1, shows the amount of memory allocated to the game and various assets.
The following commands all reload particular aspects of the game, such as sounds, images, decals and GUIs. Use these commands to either reload a particular aspect of the game engine after tweaking a relevant setting, or to help any graphical anomalies or glitches you are experiencing. Note, some aspects may take a while to reload, so be careful if using these commands during an online game.
The following are useful multiplayer commands which can be used by clients (players on servers). I've excluded Server Administrator commands, but you can see these yourself in the console by viewing all commands starting with net_ and si_.
connect [servername] - Connects to a multiplayer server with the given name
disconnect - Closes the current game map.
reconnect - Reconnects to the last server connected to successfully.
say [text] - Says the provided text in Global Chat in multiplayer.
sayFireTeam [text] - Says the provided text in Fireteam Chat in multiplayer.
sayTeam [text] - Says the provided text in Team Chat in multiplayer.
serverInfo - Shows information about the current server when in multiplayer.
net_clientLagOMeter [0,1] - If set to 1, a small graphical display is shown at the bottom of the screen only during multiplayer games. It looks like a set of green, yellow or red blocks, and tells you various things about your connection. In essence however the main thing is for you to note whether it is predominantly green, which is good, or if there are lots of yellow and/or red blocks which indicate connection problems. If you switch to another server and these go away, then the problem is likely with the server and/or you may be quite far away from the server. If it happens on all servers however the problem is likely with your connection.
net_clientMaxRate [Bytes] - This setting controls the maximum amount of data in bytes per second you can receive from a server every second. By default, most servers only provide 16000 bytes per second. If you're having connection problems or lag, first try lowering this value to see if it reduces and stabilizes your ping when playing ET:QW online. Try values such as 10000 or 12000. Note that just as values which are too high can cause problems, so too can values which are too low - ET:QW multiplayer is not designed for dialup speeds (i.e. values of 6000 or less).
net_clientPrediction [milliseconds] - Determines the number of additional milliseconds by which the client (your machine) will try to predict and offset any ping lag. The default is 20ms, but if you're experiencing connection problems and lag and/or have a high ping, raising this value may improve things. Remember however that your ping is the round-trip time to a server (e.g. a 150 ping means 75ms taken for your data to get to a server, 75ms for it to get back). So your ping divided by 2 will give you the best prediction value, and usually only if your ping is higher than 150ms.
That's the current list of the Enemy Territory: Quake Wars command variables which I've tested and believe to be the most useful to players. If you know of any major working commands which are missing, and which would be of benefit to most players, please Email Me so I can update the list. Please keep in mind there are a lot of deliberate omissions for commands which are of limited practical value, or which can be adjusted using the in-game settings, or are already optimal by default.
The next section has some important tips and information, and wraps up the guide.