Quake 3 CFG Guide 0.4 - By Subbert
Updates 03 August 2002 - About Cheating 17 July 2002 - Big Update 07 April 2002 - Sound tweaks (#13) Explanations #1. Introduction #2. The Q3 CFG File #3. CVars and Aliases #4. 120 FPS
Tweaking The Config #5. Basic Tweaks #6. Advanced Tweaking #7. How to Alias/Script #8. Network Tweaking #9. OSP mod Variables #10. DLL Files #11. Sound Tweaking #12. CFG into PK3 #13. PS2/USB and Hz #14. Get rid of XP acceleration #15. About Cheating/Hacking #16. URLs #17. Final Lines
1. Introduction Hello there, first of all i would like to welcome you to my first cfg guide. If you think 'i know this already' or you are a cfg god, then don't read this file. Maybe you learn something or maybe not. I wanted to write about this so people can maybe learn something.
2. The Q3 CFG File Compared to other games, the Q3 config file has very much variables and can be modified easy, this has a great advantage for the user, wich can gain very BIG fps by tweaking it. But the main thing to know is what to tweak. you can also execute more config files than the standard one (wich is q3config.cfg). Q3 can handle alot of commands, one of the basics is bind x "say lol" Now pushing the x button will say "lol" to the other clients wich are in game. You know this already, but im just giving an example :p.
3. CVars and Aliases The CVars are your game variables, a big list of "rules" that set your preferences. The config is made up of those CVars, they control the game engine. Aliases are strings of commands that form a function in-game together, Heres a example; I can bind a key to select the shotgun, change sensitivity, and the cross;
bind kp_enter "weapon 3 ; sensitivity 7.3 ; cg_drawcrosshair 5" There is also a usefull command to use in Q3 called the "toggle" command. What it does is toggle the value of a variable (if the variable has values of 0 or 1). If you want a key that turns on cg_drawGun on the first push and off on the second push, all you have to do is; bind x "toggle cg_drawgun"
- I have a special windows button, can i bind this one too? Yes you can, if its correct the button is always 0x00, you can find this out in the control menu binding something to that key and typing /bind <keyYOUbinded> , TAB and then ENTER, this will show if there is something binded or not.
4. About 120 FPS UpsetChaps explained why framerate affects trickjumping, you can read more on his site (http://ucguides.savagehelp.com/Quake3/): Since it's very difficult for me to explain this, i prefer you to take a look at Upsetchaps' site, some very nice lines there.
If you have 120+ fps i recommend you setting your com_maxFPS value to 120. You can see the FPS counter with CG_DRAWFPS "1".
5. Basic Tweaks The basic tweaks are also implemented in the Q3 game menu at SETUP, you can select your basic movement/controls and personal game prefences. I recommend you using a resolution of 640*480 or 800x600, because a lower resolution give more fps on the most machines, and you can use a higher display refresh. I recommend you using 120hz displayrefresh wich is the finest for your eyes and game. Refreshrate = How many times your monitor refreshes per second. Higher Refreshrate = Smoother Screen/Movement, less stress on eyes. I'm using r_mode 3 and r_displayrefresh 120 wich works fine. Remember, when com_maxfps is equal to displayrefresh, its the best.
When choosing a lightning mode (r_vertexLight / r_lightmap), choose Vertex, you will gain dramaticaly big FPS about 30/40 (for me). Texture Quality (r_textureBits): As it says, you can choose between 16 (more fps) or 32 bit (less fps). Color Depth: as it says, leaving it default will pick your desktop color bit. I recommend you 16 bit.
Geometric Detail (r_lodBias): This wil set the complexity of curves on players/items (roundness) the more round means less fps. I recommend you setting this to 2. Sound Quality (s_khz): This is the sound sample frequency (22 = high, 11 = low), 11KHz will improve performance. You can set this to 22KHz if your machine is fast enough. If you want REAL low quality you can use 8KHz too, s_loadas8bit 1 (lower quality) sound, it may improve performance.
If you want to to test your fps, try the timedemo function; /timedemo 1 /demo four At the end of the demo Q3 calculates the average FPS wich you can see in the console.
6. Advanced Tweaking
Now we have done the basics, startup notepad, and open your config. You will see a big list with many commands. I am NOT explaining every command but i putted some important here, try to experiment with them.
seta cg_nochatbeep "1" // Disables the chat-beeep seta cg_showPlayerLean "0" // Disables player leaning seta cg_bobroll "0" // Disables player bobbing seta cg_bobpitch "0" // Disables player bobbing seta cg_bobup "0" // Disables player bobbing seta cg_runroll "0" // Disable player view rolls side to side while running seta cg_runpitch "0" // Disable player view bobs up and down while running seta cg_simpleItems "1" // Renders the items in simple mode seta cg_crosshairHealth "0" // No color change on crosshair seta cg_drawRewards "0" // No more rewards on screen seta cg_drawAttacker "0" // No more last-attacker on screen seta cg_drawAmmoWarning "0" // No more "LOW AMMO WARNING" on screen seta cg_draw3dIcons "0" // No more 3D icons on your hud seta cg_drawIcons "0" // No icons on your hud seta cg_gibs "0" // No more splashing gibs on bodies seta com_blood "0" // No more splashing blood on bodies seta cg_drawGun "0" // Doesnt draw the gun on screen seta cg_marks "0" // Doesnt draw marks on walls seta cg_shadows "0" // No more player shadows seta cg_float "0" // No more floating scores seta cg_scorePlums "0" // No more score plums seta r_ignorehwgamma "0" // Doesnt ignore hardware gamma seta r_subdivisions "80" // Controls world geometry, 80 is OSP max seta r_fastsky "1" // No more high quality sky seta r_drawSun "0" // No more sun seta r_dynamiclight "0" // No more dynamic lights seta r_preloadTextures "1" // Preloading of textures seta s_compression "1" // Use sound compression seta cg_noProjectileTrail "1" // No projectile smoke on weapons like RL seta cg_deadBodyFilter "1" // This will disable dead bodies rendered in map seta cg_drawDecals "0" // Disables drawing of in-game decals seta s_ambient "0" // Disables looping ambient sounds of the map seta r_picmip 1" // Mipmap level for all textures (does not affect fps on 32MB gfx cards) (0/3 - 3 is lowest)
You can find more urls to cvar lists at the end of this document.
7. How to Alias/Script Lets get into aliassing and scripts. - How do i make a script? Making a script depends on what kind script it has to be. Example, you want an music volume changer;
bind F1 "vstr volLOW" // will bind F1 to the volLOW set volHIGH "s_volume 1 ; bind F1 vstr volLOW" // will set the alias volHIGH to s_volume 1 set volMID "s_volume 0.6 ; bind F1 vstr volHIGH" // will set the alias volMID to s_volume 0.6 set volLOW "s_volume 0.1 ; bind F1 vstr volMID" // will set the alias volLOW to s_volume 0.1
On the little script above you see that there are 3 sort of aliases, volLOW, volMID, volHIGH with the bind command i can "link" them together so they will loop when i press F1, beginning from volLOW to volHIGH, and then again back to volLOW.
There is also a +modif command wich supports the option for people who want to double-bind multiple keys using key sequences in OSP. Here is an explample from Rhea (lead coder of the OSP mod):
set normkeys "bind 1 weapon 1; bind 2 weapon 2" set altkeys "bind 1 say_team nme incoming; bind 2 say_team base is safe" +modif1 vstr normkeys -modif1 vstr altkeys bind shift +modif1
Now when pressing the SHIFT key, +modif1 wil be executed. When it is released, the vstr bound to -modif1 will be executed. In this example, pressing shift will bind the 1 and 2 keys to weapons 1 and 2. When SHIFT is released, the 1 and 2 keys will be bound to "say_team nme incoming!" and "say_team base is under attack!". Another way binding two functions to a button is the "vstr" command. +vstr [down command] [upcommand] Example, on the first push on O, it switches to the shaft, on the second click it fires;
set shaft "weapon 6; wait 2; +attack" set unfire "-attack" bind o +vstr shaft unfire
For so far aliasses/scripts...
8. Network Tweaking Do you have problems with your connection? Maybe this part can help you a bit. The first thing to do is to find the best setting for your connection type, if you are using cable, i recommend you ;
/rate 8000 (your bandwith rate)
/cl_maxpackets 60 (maximum packets you receive from server, lower helps the "connection interrupted" on some users) /snaps 40 (the world of refreshes you receive from server) You can also see your connection graph with the lagometer. This is enabled by cg_lagoMeter 1
On your lagometer you can see the packet traffic, Top line shows the 'world updates' you receive from the server, and how your graphics card is updating the displayed frames. Blue indicates frames are being rendered in time with the world updates wich is good, and yellow indicates frames are being dropped wich is bad. If you are getting a lot of yellow spikes try down your 'snaps' rating, Also many people are using timenudge -20 wich increases the yellow lines. Try to find a timenudge wich shows the minimum of yellow lines, so your connection stays smooth, while using timenudge.
Bottom line shows the packets your receiving.
Red = Lost Packets / Packet Loss Yellow = Damaged/Rejected Packets Green = Received Packets are OK - cg_smoothclients / cl_timenudge ? What is it?, and what does it? cg_smoothclients; This setting helps smooth movement when other players have packet loss or low maxpackets. Setting this variable to "1" adds extra prediction code for those clients. An disadvantage of enabling this option is that prediction errors can occur. Do not use cg_smoothclients if your cl_timenudge is set negative.
cl_timenudge; This command helps you being pushed before/after the servertime, If you are using a negative value for cl_timenudge the top graph in cg_lagometer may yellow most of time. A positive value may help if you have problems with gameworld updates (snaps) not being rendered in time. I recommend you using 0 (or an option to -15) *not higher* for online play.
9. The OSP mod Variables
I wrote this little section because i think almost all of the TDM/DUEL players use OSP and tweaking it would be nice. - cg_* - General client-side options.
OSP has many client-side tweaks. First of all lets begin with [cg_]; You can use alternative weapon effects with the following cg_altGrenades "1" // OSP alternative grenades cg_altPlasma "1" // OSP alternative plasma effect cg_oldPlamsa "1" // Use the baseq3 plasma effect cg_oldRocket "1" // Use the baseq3 rocket effect cg_altLightning "0" // Use the alternative CPMA/OSP shaft effect Want to get rid of the lagging shaft? Try the cg_trueLightning command, wich specifies the "lag" imposed on the rendering of the lightning gun shaft. A value of 0.0 is just like the baseq3 version "feel" of the lg. A value of 1.0 imposes no lag at all (shaft always rendered on the crosshairs). A value of 0.5 is a good mix of the two to reduce the wet-noodle effect, while still maintaining consistency of where the server actually sees the shaft.
Also another big change is the pmove command, it allows client to enable enhanced client sampling (120hz movement). The function simulated Q3 having 120+ FPS so users with low-fps machines were able to do trickjumps too. I recommend you not using this function (pmove_fixed 0) and buying a good machine :) The disadvantage is that your screen "lags".
- ch_* - Stuff related to client HUD settings.
ch_ColorLocations <0|1> Changes color of locations in teamoverlay to be red or blue if the text "Red" or "Blue" is found in the location.
ch_CrosshairColor <string> usage: ch_crosshaircolor 0xRRGGBB|<color> <color>: white, black, red, green, blue, yellow, magenta, cyan, and grey. For RGB values, ch_crosshaircolor 0xFF3377 will yield some nice weird color, as an example. Important note: cg_crosshairHealth overrides this function, turn it off to use colored crosshair.
ch_CrosshairNamesLeft <0|1> if enabled, draws crosshairnames left of the hud on top of teamchat.
ch_drawSpeed <0-2> 0 - Player's current speed is not shown 1 - Player's current speed is shown in upper right, below time/fps 2 - Player's current speed is shown in a smaller, transparent font just above the crosshair.
ch_drawFlagNames <0-5> 0 - default like id 1 - draw flag carrier's name (but no icons) 2 - draw flag carrier's name and the icons 3 - draw flag carrier's name (but no icon) in the lower right corner (Q3comp statusbars only) 4 - draw flag carrier's name and icon in the lower right corner (Q3comp Statusbars only)
ch_FilterLocationsTeamchat <0|1> Filters location strings out of teamchat.
ch_InverseTeamChat <0|1> Inverses teamchatwindow. If enabled, msgs arrived first will be drawn on top.
ch_Obituaries <0|1> Prints player obituraries messages in the console.
ch_Pickupitem <0|1> Draws the icon and string of items when they are picked up.
ch_StatusbarFormat <0|1> 0 - will use the default id statusbar format 1 - will use the OSP default in which only ammo, weapon icon, health, flag (for ctf) and armor are drawn. Use cf_statusbar to scale the statusbar font size. 2 - same as 1, but in addition displays a graph of ammo per weapon side by side. 3 - same as 1, but in addition displays weapon ammo as numbers. 4 - CPM style 0 hud (like vq3) 5 - CPM health/armor bars 6 - CPM style 3 7 - CPM style 4 8 - CPM style 5 9 - Q3Comp style 1 10 - Q3Comp style 2 11 - Q3Comp style 3 12 - Q3Comp style 4
ch_TeamBackground <0|1> Disables teambackground color in statusbar, teamchat.
ch_TeamchatOnly <0|1> If enabled, only draws teamchat on the bottom left side of the HUD. It will suppress team chats showing up in the normal upper left chat area.
ch_TeamCrosshairHealth <0|1> If enabled, draws health and armor of players in the same team under the crosshairname.
ch_Teamoverlay <string> Specifies what items should be displayed in the teamoverlay. This is highly customizable: fields: ======= p - Powerup icons, aligns left 12n - Width of, and the player name itself (name is always required) h - Player health a - Player armor w - Weapon icon l - Player location
ch_Weaponswitch <0-9> values: ======= 0 - Old fashioned id style, horizontal on top of teamchat 1 - Same as 0, though permanent 2 - Vertical, drawn on right side of HUD 3 - Same as 2, though permanent 4 - Vertical, drawn on left side of HUD 5 - Same as 4, though permanent _and_ displays ammo of each weapon Next to it. 6 - CPM left style 7 - CPM right style 8 - CPM bottom style 9 - Draws no weapon switch (if you don't need it or you're using Statusbarformat 2 or 3)
OSP also supports changing font sizes, IF you have trouble using these commands you better can use the OSP Menu - cf_* - Stuff for client font (size) settings.
cf_AmmoStatusbar <XxY> Font size of the ammo display with ch_statusbarFormat 2 or 3.
cf_CrosshairNames <XxY> Crosshairnames font size.
cf_Following <XxY> "Following" message font size.
cf_Fragmsg <XxY> Font size of the "you fragged" messages on top of your HUD.
cf_Scores <XxY> Font size of the scorebox on the lower right of the HUD.
cf_Pickupstring <XxY> Font size for the pickup string.
cf_Statusbar <XxY> Scales the status bar if ch_statusbarFormat is 1.
cf_Teamchat <XxY> Font size for teamchat.
cf_TeamCrosshairHealth <XxY> Font size of crosshairhealth information.
cf_Teamoverlay <XxY> Font size for the team overlay.
cf_Vote <XxY> Vote message font size.
cf_WeaponName <XxY> Font size of the weaponname if ch_weaponswitch is 1.
cf_WeaponSwitch <XxY> Size of the weaponswitch graphics.
- Can i drop items just like in Q2 ? Yes you can, but this function has to be voted ON by server.
The command to drop items is: drop <item_name> ( drop SG without the <> )
<item_name>:
sg (Shotgun) gl (Grenade Launcher) rl (Rocket Launcher) lg (Lightning Gun) rg (Railgun) pg (Plasma Gun) bullets (qty: 50) shells (qty: 10) grenades (qty: 5) rockets (qty: 5) lightning (qty: 80) slugs (qty: 10) cells (qty: 30)
- How do i change rail/model colors ? This is possible with cg_enemyMODEL sarge/pm (or any other models as long as you put the /pm variable on end)
cg_enemyColors <HSL>
R = rail color (for cg_teamrails 2) H = head/helmet color S = shirt color L = legs color
color1 <RHSL> (default = 0000 (White)) Specifies the various color options for yourself (inc teammates), if using a "pm" skin, R = rail-core color (this is for all models/skins) H = head/helmet color S = shirt color L = legs color
color2 <char> (default = 0) Specifies the rail disc/swirl color.
- How can i put location/status in my teambinds ?
In the beginning of OSP this function wasnt implemented yet, it comes with the 1.0 Release. Here is an example;
bind X "say_team I am near the #L"
Now the #L stand for the nearest location to YOU. But you cal also use other variables like;
#A - Armor Current armor value
#C - Corpse The location where you last died /say_team "Overrun at #C"
#D - Damaged by The last player to score a hit on you /say_team "#D is here and he's heavily armed!"
#H - Health Current health value /say_team "Hurting bad - #H/#A"
#I - Item (nearest available) Shows the nearest "significant" (weapon, armor, powerup, or MH) available item, and that includes dropped items :) /say_team "#I available here"
#L - Location Many maps have terrible target_location entities e.g. PG on PRO-DM6 shows as YA This shows the nearest "significant" item spawn (weapon, armor, powerup, or MH), whether the item is there or not
#M - aMmo wanted Lists all types of ammo for weapons you have that are empty or are nearly emptry (between 0 and 5 ammo). /say_team "Need #M"
#P - Powerups Lists all powerups you currently possess
#T - Target The last player you hit /say_team "#T is weak - finish him!"
For more usefull OSP Stuff refer to the osp Docs located on /osp/Docs/ in the package. You can download OSP 1.0 from www.orangesmoothie.org / www.clanbase.com
10. DLL Files
With the release of the old 1.17 Q3 gameplay source, people were releasing compiled dll files wich may improve FPS on some machines. These dll's are either not for OSP. And don't work. But still if you want to experiment with them, you can get them on the attachment. The DLL files have to be put in your /baseq3/ directory to work correct.
11. Sound tweaking
Actually, this has nothing to do with your sound, but FPS. When setting s_mixahead to 0.1 and s_mixpreStep to 0.08 it's possible to get more fps on some machines, its possible to get a big 50FPS more. I'm not telling you this will work on all machines, but you have to try for yourself. Experiment with s_mixprestep, setting it to higher/lower value's. My results are (1.30 - demo four): s_mixpreStep 0.08 = 142.9 FPS s_mixpreStep 0.05 = 135.2 FPS
12. Can i put my cfg into a pakfile?
Yes you can, you'll have to rename your q3config to autoexec.cfg zip it with all the other files, but before zippin, choose the option STORE at archive format. So the files won't be compressed since we dont want that. Now rename your zipfile to cfg.pk3 or something, but make sure windows doesnt hide known file extensions (otherwise it would be like cfg.pk3.zip). Then make a dummy (empty) q3config.cfg in your baseq3 and OSP dir, set them to read-only. Now your config should work ;)
13. PS2/USB and Hz
What should i use? PS2 or USB?.. that question is up to you. PS/2 and serial mice sample at a fixed rate of 40 Hz under Windows 95/98 (default). But since there are tools and drivers like PSrate, Logitech mouse drivers, we can use PS2 at 200hz. Using USB on some machines can make your mouse 'lag' when your PC loads. USB has a very stable rate of 125 and most mices support a higer DPI on USB. PS2 supports a rate of 200 and doesnt skip/lag when the machine is loading. So the choice is up to you. I prefer PS2.
14. Get rid of XP acceleration It seems that even without pointer precision disabled, the mouse under XP is still influenced by an acceleration curve I would recommend you to format :)) .. but here we go:
1. Click Start button 2. Select Run 3. Type 'regedit' in the open textbox 4. Open the tree 'HKEY_CURRENT_USER', select control panel, then select mouse 5. Right clicking, modify the SmoothMouseXCurve and SmoothMouseYCurve hexidecimal values to:
SmoothMouseXCurve: 00,00,00,00,00,00,00,00 00,a0,00,00,00,00,00,00 00,40,01,00,00,00,00,00 00,80,02,00,00,00,00,00 00,00,05,00,00,00,00,00
SmoothMouseYCurve: 00,00,00,00,00,00,00,00 66,a6,02,00,00,00,00,00 cd,4c,05,00,00,00,00,00 a0,99,0a,00,00,00,00,00 38,33,15,00,00,00,00,00
If done correctly, you will notice you are holding a more responsive mouse.
15. About Cheating
Quake3 was non-cheat/hackable game for a very long time, but since the some guys released a aimbot/wallhack no more. So, is there anything we can do about it? No, since there are games some people always try to find a way to cheat and become 'better'. And because of that, there is a big chance for the game to die. Is there a way to stop them? Yes ofcourse, but they always try to strike back. There aren't many Q3 hacks since it's release. And we have to keep it like that, play the game as it is. Never, never think about using cheats. People who play with cheats are lazy people who dont care about others, nor the game, and dont bother training and improving their skill.
Q3 Cheats wich were released since 1.17;
1.17: probably the first real hack ever for Q3. 1.17: the first aimbot. 1.29: the second aimbot. 1.31: aimbot/wallhack wich works everywhere, the most dangerous hack ever, sad but true.
Ofcourse these were the most dangerous cheats ever for q3 Robert Duffy updated his .plan and notice that there will be a new pointrelease for Q3.
This is very good news for the players and for the game.
Quake3 is a great game and shoudn't die, there aren't many cheaters like in other games, and thats something very special. Because we all love to watch and play the game !
16. URLs
UpsetChaps http://ucguides.savagehelp.com/Quake3 CVar List http://q3a.gamehelp.com/console/complete_list.html CVar List http://www.q3center.com OrangeSmoothie http://www.orangesmoothie.org
17. Final Lines
I hope you learned something from this little article, it was my first guide and i will keep updating it to keep it bigger and bigger. If you like to add something or have a question, feel free to mail me at subbert@chello.nl or hop to #c58 on QuakeNet (irc.quakenet.org)
|