Counter-Strike and Steam Technical Guide A very, very comprehensive guide that will help you get the best Counter-Strike performance out of your system. The tweaks will give you that slight edge of advantage over those who have not tweaked the game to kick their asses, even if you totally suck at the game. |
Notes
This guide was composed and edited by me, BichWine. I can be emailed at bichwine AT yahoo DOT com, or you can contact me on IRC Gamessurge as shock-BichWine in #shockwave.
Special thanks to FPS BANANA for the hosting, and all the help I have received.
June 17, 2004 -- Current Version 2.0: Added r_detailtextures, r_detailtexturessupported, cl_radartype, cl_crosshair_*, updated corpsestay. Updated fps_modem info. Added some general info and redid most of the netcode stuff. Fixed a few minor things.
I don't know if this will be updated anymore. CS:Source / HL2 will hopefully come out soon and I think I will do a guide on that.
" Version History "
Version 0.98 : Publishable first draft
Version 1.00 : Revised draft with too many to list fixes. Numerous fixes and corrected information. Full CS 1.6 Commands/Cvars.
Version 1.50 : Re-revised draft with a lot of small fixes.
Version 1.55 : Fixed some minor things and started rewrite of guide.
Version 1.60 : Added Comments system at bottom. Will make an update with new cvars and some fixes soon.
Version 1.65: Removed dupe monolights, added -gl and -d3d, added cl_shadows, rebuy, autobuy from latest patch, some interp info, and edited condump so it works.
Version 1.70: Fixed some minor errors, added some vid_d3d and cmdrate info, HLSS link. A few graphical commands need to be tested further
Version 1.71: Fixed some things, next update should be fairly large, I will test some of the graphic commands even more so there is no discrepency
Version 1.80: Fixed shortcut links. Added a new variable, mp3fadetime Valve snuck in. Testing several graphical commands, gl_monolights, picmip, playermip, maxsize, fastsprites, dither, cull. Fixed some other errors. Unless there is some major error in this guide, it will be put on hold. I will be working on another guide.
Version 1.81: Updated the ATI commands(thanks to hltoolz maker), fixed a comments bug, added waveplaylen.
Version 1.82: Converted over to CSBANANA; added the weapon names for buying.
Introduction
If you have been playing Counter-Strike, a very tweakable game, for some time(or not), and want to get the best out of your system, this is where you will learn. Knowing and tweaking your Counter-Strike to give you a slight edge over those who have not tweaked is a very simple task. If you finish reading this article and understand at least fifty percent of it, you can now call other people Counter-Strike newbies. You may suck at CS but at least you have tweaked CS to the max and suck with style, knowledge, and know-how.
All aspects of CS tweaking depend on the following items more than anything:
1. Find out your operating system (OS). (This should show up on the screen when you turn on your computer)
2. Find out your video card. (most important) (right click "my computer", select properties, click the "device manager" tab at the top, click the plus next to "display adapters")
3. Find out your CPU speed.
Video
Video settings and commands have to be the most important items related to Counter-Strike tweaking and is a definite must in tweaking and optimizing for anyone. First, you need to update your video card drivers. This is where the video card info is handy. Go to the video card manufacturer's website for the latest drivers.
Some common ones are:
Nvidia drivers(all Nvidia cards) www.nvidia.com
*Note: You may use the Nvidia reference drivers for all manufacturers, but sometimes it is best to get the drivers from Creative, Leadtek, PNY, or any of the others that use Nvidia boards but sell them under their own name and specifications.
If you run XP/2K and own a Nvidia card you will need to download the Nvidia refreshrate fix; this fix allows you to play games above the 60Hz refresh rate set by these operating systems. You can download this here.
An ATI program which allows you to set this can be found here.
ATI Homepage(Radeon/Rage) www.ati.com
The defunct 3dfx drivers(for Voodoo cards) www.voodoofiles.com/3dfxhelp.asp
The first thing to do is change what video mode and resolution your CS is running in. You do this by opening up cstrike, click options, then video, then mode.
Usually OpenGL performs better(in CS), but this depends on your system. Just try playing in OpenGL and then D3D(Direct3D) and compare the achieved frames per second. Software mode is the worst in every way possible, this mode should NOT be used unless mandatory.
Now, for resolutions.
This is where your preference comes to mind.
If you have a Geforce2 or higher and have at least a 900 MHz machine, you should be running in 800x600 or 1024x768.
The faster your computer, the higher resolution you can play with and experience no performance impact.
Resolution affects game-play in major ways, the higher the resolution the more power it takes. If your computer can't handle it then it slows down and you will get a lower number of FPS(frames per seconds). Resolution should be set to a number equal to or lower than your desktop resolution. Maintaining a stable number of FPS is fine, but the more FPS you have the smoother the game will play and the quicker your cross-hairs will reset after firing (or moving if dynamic cross-hairs are turned on).
FPS, or Frames Per Second, is the main graphical concept that is tweaked in CS.
Major factors that influence FPS:
1. Computer speed, including CPU, RAM, and video card.
2. Resolution game is being run in.
3. How high the graphical settings are set, and how many graphical elements (bullets, models, explosions) are on the screen or on the map.
FPS is basically the number of game frames that you see every second. The faster the computer, the higher the FPS. The more items on the screen you have can and will cause this number to drop.
The Half-Life engine can usually handle up to 100 FPS, but with developer 1 set, the FPS max is uncapped. A preferred number for FPS is above sixty, or a steady 50-55, anything lower than thirty and the game quality becomes poor. You may be thinking, well, I will just set my fps_max variable (the variable that is used to set the max amount of FPS) to one hundred, and play like that. This may work for you, but it is not preferred. There is another factor in determining what FPS you should use, and that is your monitor.
Your monitor also has a number for displaying "FPS", it is called the vertical refresh rate, or the number of times in a second that the picture is drawn on the monitor. Refresh rates are based on the resolution you are using; the higher the resolution, the lower the refresh rate. For example, your monitor, at 1024x768, can handle a refresh rate of 65 hertz(pretty low for today's standard), you tweaked your cs to run at 95 FPS. This causes a problem; more Counter-Strike screens are trying to be shown, but the monitor can only show so many. This will, most likely, create a "tearing" effect while you are playing CS. This happens because your FPS and your monitor are not in synchronization. Lo and behold, there is a solution! You enable vertical-sync, which locks your game's FPS to your monitor's refresh rate; even though your FPS is set at 95, you will only get a max FPS of 65. This will lower your FPS but fix that "tearing" problem you may experience. The game will usually look and play more smoothly with v-sync turned on. Your mouse "feel" may become different also.
Then again, you say, well, my monitor is shit, and I want 95 FPS! You turn off v-sync and don't mind the graphical tearing. But, think again, the CS engine is processing 95 FPS, but can only show you 65 of those 95 frames. Thirty frames are gone. Now think, you just lost 30 frames, and those may have been frames where the enemy turned the corner and you missed that frame so he saw you first. But, also, you, processing 95 FPS, may have a chance to see him first if the correct frame is displayed. This isn't really an advantage and is more of a technicality, because each frame goes by so quickly it is almost impossible to tell the difference. I believe that turning on v-sync is a wise choice and with today's monitors that have 80 hertz+ vertical refreshrrate at high resolutions, you will not lose much due to the difference between your FPS and your vertical refresh rate.
The choice is up to you and how much splendor, graphical extras, and how much quality you are willing to sacrifice to get a decent number of FPS while the game still looks good.
Preparing CS for config tweaks
Editing the config.cfg file found in Steam\SteamApps\your@email.com\counter-strike\ simply will not do. You need to edit the userconfig.cfg file(create it if you need to). Make sure you put the command "unbindall" at the top of this file. This file is automatically executed when you load up CS, and it should overwrite anything in config.cfg. Also, do not change a bunch of things at once, change a few at a time and test the results.
How to use this guide
This guide uses a "commandname" "default value" "type of variable: Boolean 1(on) or 0(off), ranged variable X-Y, or other" structure (Important commands are in bold and colored red)
Every cvar is in the form of CVARorCOMMANDname: DefaultValueSetByCS: VariableType
VariableType can be one of many things.
Boolean: is either one(1), TRUE, or zero(0), FALSE
Boolean is a special set of math that you do not need to worry about.
Just remember it is either one or zero.
Switches are like Boolean variables but require no value to change.
Typing the CVARorCOMMANDname will turn it on and using it again will turn it off.
Ranged variables are set in a special range that is given and usually nothing outside of that range affects anything.
Special specifies a variable that is none of the above and doesn't take any value or has a specially formatted value.
*** WARNING***
Some commands, such as cl_bob, and some others are considered illegal in some leagues. Please consult your league rules for more info on illegal cvars.
*** WARNING***
Note - 6/8/04
After must testing and such, the main factor in achieving higher FPS in CS 1.6 is having a fast CPU. Video cards don't really matter that much anymore(unless you have some four year old video card). This guide is almost worthless now for tweaking your FPS because CS 1.6 is SO dependant on your CPU. My suggestion is to shutdown background apps, check for spyware, and turn off useless services. If you have a newer video card Radeon/Geforce FX, it is NOT your video card holding you back. You can probably turn on anti-aliasing and aniso-filtering to the max and notice no difference.
---IT IS YOUR CPU---
Basic FPS commands
fps_max 72 Variable
Sets your max fps, must be lower than 100(unless in dev mode), preferred about 60+, test it and see what number stays stable for you, if it jumps around it is hard to adjust to. Fewest number of FPS allowed is twenty.
fps_modem 0 Variable
A legacy command, but it still exists and works. If set to something besides 0 this command will take precedence over fps_max. Just set this to 0 and use fps_max.
cl_showfps 0 Boolean
Shows the number of FPS you are getting in the top left corner if set to one.
r_speeds 0 Boolean
Shows, actually scrolls, in console, time to render a frame, current frames, and number of polygons on the screen if set to one.
host_speeds 0 Boolean
Scrolls in console(or upper left if dev mode is on), FPS, Sounds played, Entities, and some other information. Useful for map makers.
timerefresh Special
Does a 360 degree turn and reports the average FPS in console. Good for benchmarking.
Graphical affecting commands
Many of these commands will sacrifice some graphical quality for a FPS increase. You may not even be able to tell if you turn off some features. It is best to change one command at a time. Most of these you cannot change in game and require CS to be restarted before they work. Common sense applies, if the description says it will turn on something it will most likely decrease performance.
mp_decals 300 Variable
Number of decals that are allowed on the map at one time. Once the number is hit, it starts "deleting" the previous marks from the map (first in first out method). Bullet holes, blood stains, grenade explosion marks, and countless other things count as decals. It is best to have a number under 100; the higher the number the more impact on FPS.
cl_weather 1 Ranged 0-3
Handles the intensity of weather commands. Added in 1.6, settings to 0 will improve FPS on maps such as de_aztec. Setting to one will cause a few raindrops, two will increase them even more, and setting to three will cause a downpour(in the game and with your FPS).
max_shells 120 Variable
Affects the number of shells expelled from enemy guns. You still see shells ejected in firstperson view if this command is set to 0, but in third person and spectator mode this command works.
max_smokepuffs 120 Variable
This number affects both the smoke of bullets hitting the wall and the amount of smoke that comes from a smoke grenade. Setting to 0 will turn off the smoke that comes out from guns when they fire and will stop smoke grenades from producing additional smoke. The higher you go the more your FPS will be impacted.
gl_spriteblend 1 Boolean
Setting this variable to 1 will make the cross-hairs(while zoomed), more crisp. If they look funky, try 1, if they look worse set to 0, depends on video card.
gl_clear 0 Boolean
Turn on/off to fill cracks between textures. Setting to one will clear the buffer before painting every frame, making the game textures look smoother. Setting to one may cause some performance impact.
gl_lightholes 1 Boolean
Turns on/off light holes in textures. Setting to zero will improve performance.
gl_keeptjunctions 1 Boolean
Turns on/off filling cracks between textures. Setting to zero will improve performance.
gl_texturemode Special
Sets the rendering mode. Options are(in order of lowest quality to highest quality):
gl_nearest_mipmap_nearest
gl_linear_mipmap_nearest (these two deal with bilinear filtering)
gl_nearest_mipmap_linear
gl_linear_mipmap_linear (these deal with trilinear filtering)
gl_picmip 0 Ranged X=0-4
A setting of 0 gives the best image quality. Setting it higher will improve performance but reduce image quality greatly. Usually not worth setting to 2 or above. Blends textures together, and makes everything less detailed.
gl_polyoffset 4 Variable
Tells the driver how much to offset decals from the polygon. Some values may fix flickering with decals or missing decals. This will not solve flickering caused by gl_ztrick "1".
Values recommended by Valve
Geforce with d3d = -0.001
Matrox, Geforce, or Riva cards = 0.1
3dfx = 4
3dlabs = 25
gl_max_size 256 Special X = multiples of 8
Lowering will improve performance but lower quality of player models and textures. Some values may cause polar bear models(all white)or other graphical problems. Setting this command to any value > 512 seems to do nothing. A weird value between 256 and 512 will make the models polar bear-like and any weird value lower than 256 will affect all textures and player model quality. Suggested setting for slow systems is 128.
fastsprites 0 Ranged X=0-2
This command affects new smoke from grenades after the initial release. max_smokepuffs must be greater than 0 to see the affect of this command. Setting to 0 will cause the new smoke emitted to be the same quality as initial release. Setting to 1 will cause it to be big, white, and blocky. Setting to 2 will cause it to be an ugly grey/black.
gl_monolights 0 Boolean
Creates a uniform light source with no shadows. This command acts like lightgamma/texgamma and is reset on map change/can only be loaded once.
cl_shadows 1 Boolean
Toggles the cartoony-looking shadows under player models that were added in a recent patch on/off.
These two commands were recently added to support more detailed textures.
More info can be found here:
http://collective.valve-erc.com/index.php?doc=1076548934-94242500&page=1
r_detailtextures 0 Boolean
Enable/Disable detailed textures.
r_detailtexturessupported 1 Boolean
Determines whether the current mod supports them or not.
violence_ablood 1 Boolean
Setting to zero will turn off all blood from shot bodies and improve performance slightly.
violence_agibs 1 Boolean
Setting to zero will turn off all body parts(gibs) from shot bodies and improve performance slightly.
violence_hblood 1 Boolean
Setting to zero will lower the amount of blood from shot bodies and improve performance slightly.
violence_hgibs 1 Boolean
Setting to zero will lower the amount of body parts(gibs) from shot bodies and improve performance slightly.
brightness 1 Range X= 1-3
Changing X results in glare reduction, the higher you set it, with three being the maximum, the easier it is to see.
gamma 2.5 Range X= 1-3
Raising X results in increased gamma. In previous versions, high settings, like 50, would make your gun and enemy models flash red. 1.6 added a bounds check to prevent this.
lightgamma 2.5 Ranged 1-10
Sets the lighting gamma value. Lower is brighter. Lightgamma is locked at 2.5 during game. Changing this command in game will kill you. Using this command and the following may cause splotches if you set these lower in your config, because the map will load the lower values, but as the map lighting gets altered from HE grenades, it will revert to 2.5 value.
texgamma 2 Ranged 1-10
Sets the texture gamma level. Lower is brighter.
gl_zmax 6400 Variable
Set max size for zbuffer
gl_flipmatrix 0 Boolean
Enable special crosshair fix when using the 3DNow! 3DFX MiniGL (3dfxglam.dll)
gl_wateramp 0 Variable
Setting to zero will turn off waves in the water. Increasing the value will make the waves more turbulent. Depends on whether server has waves turned on.
gl_d3dflip 0 Boolean
Setting to 1 may fix Direct3D laggy out-of-sync input problems.
gl_ztrick 0 Boolean
Setting to one may speed up the graphic rendering on 3DFX video cards, but may cause some other various graphical problems.
viewsize 120 Variable
Changing this does not do much besides hose your sensitivity.
r_mmx (auto-detected by Half-Life, for some reason it is usually set to 0) Boolean
Setting to zero will turn off MMX support. Turning off MultiMedia eXtensions will decrease performance. You want this turned on.
r_norefresh 0 Boolean
Toggles the drawing of everything. Setting this to one will mess up your video; there is no point in setting this to 1.
vid_d3d 0 Boolean
Toggles on/off Direct3D support. This command will also affect your crosshairs and setting to 1 will smooth them(zoomed and observer) out.
Two ATI card affecting commands. These deal with ATI Truform (adding polygons to smooth). Setting to 0 may fix problems and/or increase FPS.
ati_npatch 1 Boolean
Turns on/off ATI's TRUform technology. Turn this off, it is useless and lowers your FPS greatly.
ati_subdiv 2 Ranged 0-7
The higher you go(with ati_npatch set to 1) the more polygons are added to the models to smooth them out. At seven, everything appears to be spherical.
gl_log 0 Boolean
Writes all video data from game to an ungodly large(turn on for 30 seconds, get an 80 MB file) log file entitled gl.log in your steam folder.
Also, while turned on, your game will run extra slow. I guess you could own an unsuspecting friend with this command(make his cs unplayable and create a huge ass log file)
gl_nobind 0 Boolean
Creates a special Matrix-like effect in Direct3D.
gl_reporttjunctions 0 Boolean
Turns on/off display of T-junctions in console.
gl_dump Special
Dumps video card info, Manufacturer, version, and extensions to console
gl_texels Special
Displays the number of texels loaded.
Questionable
If you have any extra knowledge on these commands, or how to go them to work, please let me know!
gl_dither 1 Boolean
Turn on/off image dithering, or the lowering of the color depth at a certain distance. Setting to zero will turn off dithering and increase quality by fully rendering everything in the distance but impact performance greatly. It seems this command no longer works like it used to, changing seems to have no affect.
gl_palette_tex 1 Boolean
Turn on/off palette textures. May have been removed.
cl_himodels 0 Boolean
Setting to one will make player models look better but decrease performance.
Don't seem to notice any change with 1.6.
gl_playermip 0 Ranged X= 0- 2
Setting it higher (up to 2) may improve performance but reduce image quality of player models. Does not seem to affect player model quality in 1.6.
gl_cull 1 Boolean
Turns on/off the rendering of visible objects only. Setting to one will render only visible objects. This will save a lot of FPS. Does not seem to work in 1.6.
r_mirroralpha 1 Boolean
Setting to zero turns off reflective surfaces and may improve performance. Does not seem to do anything anymore.
r_dynamic 1 Boolean
Setting this to zero turns off dynamic lighting. Changing does not seem to do anything.
gl_round_down 3 Ranged X= 0-4
Amount to round down graphics, 0-4. I do not think that this command has any affect in CS 1.6.
Hardcore video tweaking/problem fixing
If you have downloaded the latest drivers, every patch you can find, and tried tweaking everything, you may have some luck changing video settings in your BIOS/video card settings
If you have tearing problems with any OpenGL programs, go to the OpenGL tab of the NVIDIA control panel and change the 'Buffer flipping mode' option from 'Auto-select' to 'Use block transfer'.
If you have polygons in the wrong place in Direct3D programs, go to the Direct3D tab of the NVIDIA control panel and tick 'Enable alternate depth buffering technique'.
BIOS tweaks
AGP Aperture setting
It should be set to half your system RAM if possible, and if not it should be set at to a number below or equal to the amount of RAM you have.
If your cs freezes randomly, set this value lower.
Setting the AGP Aperture size too low (below 32) will actually disable AGP which will cause a speed decrease.
There are also some programs that have problems (stuttering, flashing or corrupted textures, blank screens) when the aperture size is set too high. Experiment and see which setting is best for your system and programs.
Disabling VPU recovery(for ATI owners) and fastwrites (both ATI and NVIDIA) can solve problems.
This was taken from
http://go.to/geforcefaq
Go there if you continue having Geforce related problems.
If you have ATI related problems, check out: www.rage3d.com/board/forumdisplay.php?forumid=59.
Voice comm
voice_loopback 0 Boolean
Setting this to one will allow you to hear yourself over voicecomm.
voice_maxgain 5 Ranged
X changes the maximum amount of gain the game engine applies to voice
voice_avggain 0.5 Ranged
X changes the minimum amount of gain the game engine applies to voice
voice_scale .750 Ranged
Sets in incoming voice volume (above 1 seems to be distorted)
voice_fadeouttime 0.100 Ranged
How far at the end of the transmission the engine starts to fade out the sound to make end of transmissions sound smoother.
voice_enable 1 Boolean
Turns on/off voice comm.
voice_dsound 1 Boolean
Turns on/off usage of DirectSound for voice.
voice_eax 0 Boolean
Turns on/off EAX support for voice.
voice_overdrive 2 Ranged
How much in game sound will be damped down when someone speaks. X Times quieter
voice_overdrivefadetime 0.400 Ranged
Time that the voice communication fades in and out of voice comm
Set to 0 to maintain the same level of game volume (no fading).
voice_recordtofile 0 Boolean
When set to one and when you use your voicerecord button two files are created in you half-life directory, they are voice_decompressed.wav and voice_micdata.wav
voice_inputfromfile 0 Boolean
Whenever you press your voicerecord button it plays the file titled "voice_input.wav" from your half-life directory. The files have to be 8kHz 16bit Mono in PCM format to sound like they are supposed to. The more complicated the song the worse it will sound. To convert the song, get Winamp, go into options-->preferences-->plugins-->output and select Nullsoft diskwriter. Configure it for the format above, press okay, and play the song.
voice_modenable 1 Boolean
Toggles the ability to use and hear voicecomm.
voice_clientdebug 0 Boolean
Shows, in console, whether your microphone is working.
voice_showchannels 0 Boolean
Display voice channel info in console when a mic is used.
voice_profile 0 Boolean
Displays, in console, voice info, such as gain used, compression, decompression, and some other info.
voice_showincoming 0 Boolean
Displays, in console, voice sample information.
voice_showbanned 0 Boolean
Displays in console, a long HEX address of players banned from voice comm.
voice_forcemicrecord 1 Boolean
Toggles CS to force the mic to be the input device.
Demos
record demonamegoeshere demospeedgoeshere
Start recording a demo with speed of demospeedgoeshere. If demospeedgoeshere = 2, playback = twice the speed.
stop Special
Stop recording the demo.
playdemo demonamegoeshere X
Plays a saved demo X controls the speed at which the demo is played. Using playdemo demo1 1.5 would play the demo 1.5 times the normal speed.
viewdemo demonamegoeshere
Added in CS 1.5, this demo viewer goes far beyond the options of playdemo. Press F2 for the controls.
stopdemo Special
Stops demo that is playing.
listdemo Special
List info on demo file.
appenddemo demoname
Record a demo, appending to the demo file already at half-life/valve/demoname.dem
removedemo demoname segment
Remove segment from a demo.
swapdemo demoname seg1 seg2
Swap two segments' positions in a demo.
setdemoinfo demoname seg1 info
Add info to demo: info = title "text", play tracknum, fade.
startdemos DEMONAME1 DEMONAME2 DEMONAME3
Loads demos into loop. Use the command demos to start viewing them.
demos Special
Runs a loop of demos set with startdemos.
startmovie nameofBMPssaved framerate
This command is used to make cs movies. It will take a screenshot for framerate that you set. Example: startmovie movie1 30 would constantly take screenshots with the name of movie1XXX.BMP until endmovie is used to stop it. XXX is sequential and starts at 000.
endmovie Special
See above.
timedemo demonamegoeshere
Runs through a demo as fast as possible(FPS wise). Supposedly this will cache the demo for better movie making results.
The following six commands are commands used by the viewdemo interface.
dem_save
dem_start
dem_speed
dem_pause
dem_forcehltv
dem_jump
playvol .9 Variable
Change the playback volume of the demo.
cl_gg 0 Boolean
Toggles use of Game Gauge mode while viewing a demo.
gg demonamegoeshere
Run Game Gauge on a demo.
Sound
A3D vs EAX
Both of these API are supposed to enhance game-play with reverb effects, reflections, and environmental sounds. A3D has a major advantage, the ability to hear sounds farther away than EAX, but A3D is supported on very few sound cards and is practically dead. Both of these take up a lot of CPU cycles and are usually not worth the impact on performance. See what FPS you are getting with it enabled (if your sound card supports it) and then try it without it enabled, if you like what you hear and it is worth the impact on FPS then leave it on.
volume .8 Ranged
Volume of game sound. It is a multiplier of windows volume, so once you get to like 2 volume, you are just amplifying the volume, not increasing it, and it will sound horrid.
stopsound
When typed all sounds are stopped. Excellent to use for the squeaking door of death, the crickets on nuke, and the numerous annoying sounds on aztec.
room_type 0 Variable
Changing to 0 while in-game will stop the echo caused by some maps and other sounds. Even though I listed the default value of 0, it is changed during the game.
soundlist Special
Display list of all loaded sounds.
soundinfo Special
Display number of: stereo channels, samples, samplebits, speed, DMA, and sound channels
s_enable_a3d Special
s_disable_a3d Special
They speak for themselves
s_buffersize 65536 Variable
X sets the audio buffer size. I'd recommend leaving it at the default value
s_rolloff 1 Ranged 0.0 - 10.0
When the roll-off value is increased, the effects of distance are increased: high frequencies are filtered and volume is lowered.
s_doppler 0 Ranged 0-10
Adjusts doppler effect.
s_distance 60 Ranged 0-X
Adjusts in-game distance units to meters. The higher this number, the closer the sound is(in audio terms). Range is 0 to infinity.
s_automin_distance 2 Variable
Set distance for minimum sound volume.
s_automax_distance 30 Variable
Set distance for maximum sound volume.
s_min_distance 8 Range of 0.0 to s_max_distance
Minimum distance a source will be from the listener before roll-off is applied to it. Sources with a value lower than s_min_distance will play at full volume.
s_max_distance 1000 Range of s_min_distance to infinity
Maximum distance from the listener before roll-off is no longer applied.
s_a3d 0 Boolean
Turn on/off a3d
This will allow for enhanced audio effects such as reverberation and improved audio quality, although performance takes a hit.
s_eax 0 Boolean
Turn on/off EAX
This will allow for enhanced audio effects such as reverberation, occlusion, and and improved audio quality, although performance takes a hit.
loadas8bit 0 Boolean
Turn on/off low quality sound(8-bit).
hisound 1 Boolean
Turn on/off high quality sound(22Khz)
bgmvolume 1 Boolean
Turns on/off CD audio.
bgmbuffer 4096 Variable
X sets the CD audio buffer size. Change if you are having CD audio playback problems.
ambient_fade 100 Variable
X sets the distance at which ambient sounds fade out, with 100 being the maximum distance. Using lower values may improve performance slightly.
ambient_level 0.30 Ranged 0.00 - 1.00
Sets the audio level for ambient sounds in the game. This value represents a fraction of volume setting, e.g. if ambient_level is set to 0.33 and volume is set to 0.90 then the ambient sounds are effectively played at 0.3.
_snd_mixahead 0.1 Variable
Increasing/Decreasing this value may fix sound problems with some soundcards.
snd_noextraupdate 0 Boolean
Disable other sound system checks. If you have sound trouble, set to 1.
snd_show 0 Boolean
If set to 1, will show sounds as they are played.
nosound 0 Boolean
Turns on/off certain sounds. Footsteps/gun fire/explosions are turned off, but sounds like bullet ricochets and environmental sounds are still heard.
s_show 0 Boolean
Turns on/off the showing of sounds as they are loaded and played on the right side of screen.
The following nine commands have no documentation whatsoever.
s_blipdir 0
s_leafnum 0
s_materials 0
s_occ_epsilon 1
s_polykeep 1000000000
s_polysize 10000000
s_showtossed 0
s_usepvs 1
displaysoundlist
The following are all 3D Audio related, and changed dynamically in the game. No information can be found on them.
room_delay 0
room_dlylp 2
room_feedback 0
room_left 0
room_lp 0
room_mod 0
room_off 0
room_refl 0
room_rvblp 1
room_size 0
speak Special
Use the HL Voice system to say a sentence. Not all words will work.
soundfade Special
Unknown, console gives us this: soundfade <percent> <hold> [<out> <int>]
waveplaylen Special
Use waveplaylen filenamegoeshere.wav, to have CS calculate how long it will take to play the given wave file.
Mp3 Player
With CS 1.6 comes a built in mp3 player since HL amp no longer works. It isn't that good of a feature. Just get a plugin for Winamp like shortcutter.
To use this, if you want to, create a new folder in Steam\Steamapps\youremailgoeshere\counter-strike\cstrike, name it mp3.
Put your mp3s in that folder.
Go into CS, and type
mp3 play mp3/filenameofmp3.mp3
to stop it, use
mp3 stop
MP3Volume 0.800 Variable
Set the mp3 playback volume.
MP3FadeTime 2.0 Variable
Set the amount of fade between mp3s.
There is also a CD player. Used in a similar way.
cd play
Starts playing audio CD.
cd stop
Sops playing audio CD
cd loop TRACKNUMBERGOESHERE
Loops the tracknumber specified.
A3D Only Commands
s_geometry 1 Boolean
Turns on/off geometry rendering
s_2dvolume 0.880 Variable
Maximum 2D sound volume.
s_verbwet .25 Ranged 0.0 - 1.0
Controls the wet/dry mix of reverb; The higher the number, the more wet (more
reverb) the sounds.
s_numpolys 200 Variable 0 - infinity
Maximum polygons to be rendered. Polygons will stop being rendered either when there are no more polygons left or s_numpolys polygons have been rendered. Setting this to 0 is the same as turning s_geometry off.
s_occlude 1 Boolean
Enables/disables occlusions CHECK INFO
s_bloat 2.0 Variable
Bloat factor for polygons.
s_refgain .4 Ranged 0 - 1
Adjusts the gain on each reflection, where higher number means louder reflections.
s_refdelay 4 Ranged 0 - 100
Delay between a source and its closest reflection. The higher the delay, the more time it takes between when the source and its first reflection are played.
s_reflect 1 Boolean
Enables/disables status of reflections
s_occfactor .25 Ranged 0.0 - 1.0
Transmission value of material - the smaller the number, the more occluded the sound is (less sound passes through the material
s_reverb 1 Boolean
Turns on/off reverb
waterroom_type 14 Variable
Maybe to do with sound. Unknown.
BOTS
With the release of Counter-Strike 1.6 came the addition of bots.
Here are commands to control them.
The bots have been taken out of the current CS 1.6 release. They are implemented in Counter-Strike: Condition Zero.
bot_allow_rogues 1 Boolean
If nonzero, allows bots to occasionally "go rogue". Rogue bots just "run and gun", and will respond to all radio commands with "Negative".
bot_allow_grenades 1 Boolean
bot_allow_machine_guns 1 Boolean
bot_allow_pistols 1 Boolean
bot_allow_rifles 1 Boolean
bot_allow_shield 1Boolean
bot_allow_shotguns 1 Boolean
bot_allow_snipers 1 Boolean
bot_allow_sub_machine_guns 1 Boolean
All of the "bot_allow" cvars can be either 0 or 1. If zero, the bots will not buy or use the given category of weapon.
bot_debug 0 Boolean
Used for internal debugging of bot behavior.
bot_difficulty -1 Ranged 0-3
This cvar determines the difficulty of all newly created bots (existing bots will retain the difficulty setting they were created with). Zero = easy, 1 = normal, 2 = hard, 3 = expert. Difficulty values higher than 3 are reset to 3.
bot_nav_edit 0 Boolean
Setting this cvar to 1 allows hand-tuning of the bot's navigation mesh. Once edit mode has been activated, the bot_nav_* commands can be used.
bot_nav_zdraw 4 Variable
This value determines how high above the ground to draw the "nav mesh" when in nav edit mode. If the terrain is very irregular or highly sloped, it can be useful to increase this value to 10 or 15. The default value is 4.
bot_prefix 0 Boolean
The given <string> will be prefixed to all subsequently added bot names. This is useful for "clan-tagging" bots.
bot_quicksave 0 Boolean
If nonzero, the analysis phase of map learning will be skipped. This is useful when interactively hand-tuning nav files. Note that without this analysis, the bots will not look around the world properly.
bot_quota 0 Boolean
Setting this cvar to a nonzero value will cause the given number of bots to be maintained in the game. If a bot is kicked, a new bot will be added to maintain the quota. To disable the quota, set it to zero.
bot_show_danger 0 Boolean
If nonzero, the "danger" in each nav area is draw as a vertical line. Blue lines represent danger for CTs, and red lines are danger for Ts.
bot_show_nav 0 Boolean
If nonzero, the nav mesh near each bot is drawn.
bot_stop 0 Boolean
If nonzero, all bots will stop moving and responding.
bot_traceview 0 Boolean
Used for internal debugging of bot navigation.
bot_walk 0 Boolean
Force all bots to walk (disallow running).
bot_goto_mark
Causes one bot in the map to move to the center of the currently marked area. This is useful for testing the walk ability of specific portions of the navigation mesh
Each of the following bot_nav_ commands operate on the navigation mesh, allowing hand-tuning of the automatically learned data. It is recommended that these commands be bound to keys for ease of use while editing.
CAUTION: There is no "undo" operation. Save your navigation mesh often.
bot_nav_load
Clears the current navigation mesh, and loads it from disk.
bot_nav_save
Saves the current navigation mesh to disk. The navigation mesh ("nav" file) is automatically named to correspond to the current map file. For instance, if the map is de_dust.bsp, the nav file will be de_dust.nav.
bot_nav_analyze
Analyze the navigation mesh to determine Approach Points and Encounter Spots. This may take several minutes based on the size and complexity of the map.
NOTE: This command requires one bot to be in the game. The recommended procedure is to save the mesh, add a bot, and quickly enter bot_analyze.
bot_nav_jump
Flags the currently selected area as "jump". This is a hint to the bots that they should jump to traverse this area.
bot_nav_crouch
Flags the currently selected area as "crouch", requiring bots to crouch (duck) to move through it.
bot_nav_splice
Creates a new nav area between the currently marked area and the currently selected area, and bidirectionally connects the new area. This command is especially useful for creating sloped nav areas.
bot_nav_disconnect
Disconnects ALL connections from the currently marked area to the currently selected area.
bot_nav_connect
Creates a ONE WAY link from the currently marked area to the currently selected area, telling the bots they can walk FROM the marked area TO the selected area. For most areas, you will want to connect the areas in both directions. However, for some "jump down" areas, the bots can move one way, but cannot get back the other.
bot_nav_end_area
bot_nav_begin_area
These two commands allow the creation of new nav areas. "bot_nav_begin_area" marks one corner of the area. "bot_nav_end_area" marks the opposite corner of the area and creates it. To cancel the operation, issue a "bot_nav_begin_area" command again.
bot_nav_mark
Marks the currently selected nav area for later operations.
bot_nav_merge
Merges the currently selected nav area and a previously marked nav area into a new, single nav area. The merge will only occur if the two areas are the same size along the merge line.
bot_nav_split
Splits the currently selected nav area into two new nav areas, along the white split line.
bot_nav_delete
Deletes the currently selected nav area.
bot_all_weapons
bot_snipers_only
bot_pistols_only
bot_knives_only
These commands are shortcuts that set the bot_allow_* cvars accordingly.
bot_kick
This command takes either the name of a bot, or the keyword "all" - causing all bots in the game to be kicked.
bot_kill
This command takes either the name of a bot, or the keyword "all" - causing all bots in the game to be killed.
bot_add_ct
bot_add_t
bot_add
Causes a bot to be added to the game. "bot_add" will add a bot to the team specified by the "bot_join_team" cvar. "bot_add_t" and "bot_add_ct" forces the bot onto the respective teams.
bot_about
Displays the bot version number, and information about the bot's author.
Connection Tweaking
Definitely the hardest thing to tweak is your connection to your favorite CS server. I cannot tell you the best settings that will work for you. Testing, trying, and comparing is the only way to figure out the best settings for your connection. It is nice that you can tweak netcode during the game.
Netcode is, by far, the most undocumented aspect of CS. To simplify things, the netcode evens out the playing field; whether you have 50 ping or 250 ping it tries to make it fair. If you constantly complain about "getting shot behind walls or around corners" this is the 'feature' you blame.
Let's compare a person with 50 ping(he will be a CT) to a person with 250 ping(he will be a T). The 250 pinger rounds the corner and sees the CT, he fires a few shots, runs back around the corner. The CT, with 50 ping, actually sees the 250 pinger before the 250 pinger sees him. The CT fires off a few shots and runs back around the corner. Without any netcode, the 50 pinger would have hit the HPB(high ping bastard) and the HPB would not have hit the guy with 50 ping. With netcode lag compensation turned on(cl_lc 1), the guy with 250 ping is shot as he turns the corner, and the guy with 50 ping is hit after he is already behind the corner. This is because the netcode compensates, estimates, and calculates the screen position and the actual position and how it relates to the two different players. It then deals damage whether they are still in sight or not. This is where the commands come in.
The more packets you receive from the server the more accurate other players' positions(on your screen) will be in relation to their true spot(on the server). If you are receiving very few packets the game will have to estimate more positions and player movement which may not always be correct. This explains the "my crosshair was on his head and he didn't get hit" phenomenon. These commands will allow you to tweak how often the game receives/sends packets, and the intervals in which the model position and the actual position are updated on your screen.
Addition -- 6/9/04
Latency is the takes for your CS packet to be sent over the network and be processed by the CS server. The bigger the packet, the more you send and the more the server will be bogged down. The bigger the packet the higher this number will be(many other factors can cause this to rise). Your average latency over the past few seconds are reported when you view the scoreboard. This is why doing a ping reports 20ms, but when you go into the game it is 50ms. It accounts for server processing.
Setting a high cl_cmdrate or cl_cmdbackup will increase your latency.
Choke is caused when the server recognizes that the client cannot receive anymore data(usually a low rate setting or cl_updaterate will cause this)and the server stops sending the client data for that many frames (Choke on netgraph shows how many frames were skipped). Usually choke doesn't affect gameplay that much unless you have 100 constant choke.
Update -- 6/9/04
I have done a lot of testing with packet capture programs to make sure that the following info is correct.
cl_updaterate 20 Ranged 10-Unlimited
This command is based off of the server's sv_maxupdaterate value. If the server's value is 30, and you set cl_updaterate to 100, it does nothing. You will only receive the maximum amount of the packets that the server can send out(per second), no more. Now, if you set it lower than what the server is sending out, that is fine. Setting cl_updaterate 10 will make you only request 10 packets from a server if the server's sv_maxupdaterate is 60. Server limitations also affect this. If the server is running at 30 FPS and has a sv_maxupdaterate 60, only 30 updates (packets) will be sent out.
cl_cmdrate 30 Ranged 10-Unlimited
This command is based on your FPS. If you are getting 35 FPS, you will only send out 35 packets of information a second. The higher you set this, the higher your latency will be. Some odd values will cause this to drop in half because it is not a multiple of your current FPS. Also, if you are sending the server 101 packets a second and it is only running at 55 FPS, then something happens to the extra packets because it cannot read all of them. This easily explains why nothing registers anymore, the servers run at horrible FPS and only process 1/2 of the gameplay.
rate 2500 Variable
Maximum amount of bytes that can be received from server in a second. Setting this value too low will cause choke and setting it too high will cause choke(if your connection cannot handle it). It is said the max value of this setting is 20000. Even 32 player CS servers in big battles hardly ever send out more than 12000 bytes a second.
Suggested values:
2000 - 3000 for 56k
10000 - 20000 cable/DSL
cl_rate 9999 Variable
Maximum amount of bytes that can be sent to a server in a second. This command isn't really worth changing, you barely ever send out more than 7K of data a second. The default value of 9K is just fine, well, unless you have 56k it isn't.
cl_cmdbackup 2 Variable
Amount of extra commands to be send with normal packets. Setting this value to a high value such as 500 will increase your latency by 15 or so. This command doesn't make you send out more packets, it just makes the packets bigger.
ex_interp 0.1 (in milliseconds, .1 = 100 ms) Ranged 0 - .1
This command controls the amount of time that Half-Life uses to predict the player movement during that period of time by using the last know position, speed, and direction of the player. If set too low the player will appear choppy. This accounts for the more accurate positioning of the model. If you set this to 0, CS 1.6 will calculate it for you. You do not want to set this to 0 because CS uses your current cl_updaterate, not the server's. USE THE SERVER'S SV_MAXUPDATERATE WHEN YOU FIGURE THIS UNLESS YOUR CL_UPDATERATE IS LOWER THAN THE SV_MAXUPDATERATE. 1/sv_maxupdaterate is what you should use unless you cl_updaterate is lower than the server's.
ex_extrapmax 1.2 Variable
This takes the last know position and then moves the opponent to a predicted position based on his movement. By using extrapolation you can get a LAN or LPB feeling (so you don't need to predict the opponent manually).
cl_nopred 0 Boolean
Setting this to |
| Published by Guest 5 years ago |
None Found Add Comment You must login or register to access this module! |
Want more? Find related pages. |