
Challenge ProMode Arena: Client Settings
----------------------------------------
Date: 15-Nov-2006


This document explains some of the clientside support for CPMA.
It will never be as current as the changelog, so you should always
check that with each new release.
http://www.promode.org/wiki/index.php/Client_Settings will almost
certainly be more up to date.


Network Settings
----------------

cg_optimiseBW <bitmask> (default = 0)
  1 - Significantly reduces the amount of non-critical data sent to you.
    Regrettably, this also makes you unable to see players through portals,
    thanks to a bug in the Q3 engine. Small price to pay though for the
    HUGE difference it makes to team games.
    Servers can, and by default do, force this on for all clients. It's
    probably worth setting it to 1 anyway though, just in case you end up
    on a server that's changed it to 0.
  2 - Use this if your conn is UTTERLY starved for upstream bandwidth
    (i.e. from you TO the server). Essentially, if you're on dialup or one
    of those Belgian Warp connections.
    Understand that if you're warpy and you choose to NOT set this because
    you like the advantage you get from warping, you're screwing YOURSELF.
    Your shots will end up with potentially huge random delays on them, so
    even if you're LPB the server may not see that you fired until up to
    100ms after the fact, effectively making your weapons act like you have
    an unstable and much laggier conn, and without cg_nudge's ability to
    smooth it out.

cg_nudge <value> (default = 0)
    A replacement for id's crippled cl_timenudge.
    Allows you to use nudges beyond -25, and automatically adjusts them
    to your ping: if you use -50 with a 20 ping, you get -20. If you spike
    to 40ms for a few seconds, you get -40 during the spike.
    This give you a "consistent worldview" that cl_timenudge can't, and
    generally helps regardless of your connection.

cg_xerpClients <value> (default = 0)
    A replacement for id's cg_smoothclients that does something useful.  :)
 -1 - Hacked extrapolation: intended for HPBs
    This smooths players out when you use high timenudges, at the cost of some
    accuracy. It's typically easier to hit a smooth target that's a few pixels
    misplaced than it is to hit one that looks like it's teleporting all over
    the map, so this combined with cg_nudge is the best option for HPBs.
  0 - No extrapolation. Fine you're LPB.
  1 - id's smoothclients: fine if you have TN 0, worthless otherwise.

cg_lagHax <value> (default = -1)
    A combination of adaptive prediction and an updated version of the famous
    "50ms hack" we introduced way back in 99v6 that also does small amounts of
    lag compensation.
    Capped at 100ms no matter what: this is intended solely to make European /
    EastUS v WestUS / etc games a bit less of a hassle, not to hack dialup
    players into aimgods at the expense of everyone else.
    0 disables it, -1 means "as much as I'm allowed": it's naturally adaptive.
    You'll lose some of your "feel" for lag, which messes up your RL aim, etc.
    This doesn't suffer from the CS/etc problems of "total BS" shots that piss
    everyone off; it's not trying to be some panacea for modemers; and I'm
    honest enough to call it the hack that it is instead of pretending that it
    magically makes lag suddenly not exist, but all in all it's a pretty nice
    end result.
    If you use this, any form of nudging will generally make you LESS accurate
    if your ping's under 100ms, because it'll screw up the adaptive calcs.

cg_predict <0|1|2> (default = 1)
    Replaces cg_nopredict 
    0 - off 
    1 - normal 
    2 - optimised 
    The normal prediction path is extremely slow at times (notably around
    curves) and can cost you 100fps on a GHz machine. This new scheme is MUCH
    faster, but slightly more prone to errors. Oddly enough, it's still more
    accurate than the original id prediction code (i.e. before the CPMA fixes).
    If you have a slow machine, it's definitely worth trying. Note that
    cg_predict 2 was introduced 9 Sep 2002, the definition of a "slow machine"
    has changed since then. Most of today's computers will not notice any
    difference. 
    Note: Do not use cg_predictItems 1 with cg_predict 2. 

cg_predictItems <0|1> (default = 1)
    Toggle client-side item prediction. 0 option to not do local prediction
    of item pickup. 
    If you get many false pickups (due to lag, packetloss or high ping)
    you should definitely use 0. It's annoying when the client predicts that
    you picked up RL, only to notice a bit later that you did not pick up
    anything. 
    Note: Do not use cg_predictItems 1 with cg_predict 2. 

cg_smoothClients
    Does not exist in CPMA - see cg_xerpClients instead 

cl_maxpackets <value> (default = 63)
    Basically, the higher value, the more correct info you send to the server
    and the more you will hit and the less you will warp - set as high as
    your connection allows 

cl_packetdup <value> (default = 1)
    Set to 0 if your connection is fine - set higher if you experience much
    packet loss 

cl_timenudge <value> (default = 0)
    This still exists in CPMA, but should always be 0 unless you're so used
    to "normal" Q3 netcode that you've become dependent on it. All it really
    does now is mess up the automatic adaptive nudges. 

snaps
    snaps should NOT be set in your config. CPMA adjusts snaps value
    according to the server's sv_fps value. If you join a sv_fps 20 server
    your snaps get set to 20, if you join a sv_fps 30 server your snaps get
    set to 30 etc... 

cl_allowDownload <0|1> (default = 0)
    Toggle downloading of pk3 files from servers. Should generally be left
    at 0 as you rarely reach high download speeds. 


CPMA Colors
-----------

    CPMA uses a-y to display colors, with a-x being an HSV table and y
    being white. 
    Colors can be used in \name, \nick, \ch_crosshairText, \say_team,
    \say_teamnl \ch_crosshairColor and several others. 
    Note these colors do NOT apply to the SuperHud which uses rgba 


Chat Tokens
-----------

#A - Armor
    Current Armor level. 
    #a (lower case) does not change color according to armor level 
    say_team "Hurting bad - #H/#A" 

#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 heavily armed! RUN AWAY! RUN AWAY!" 

#E - Enemy presence
    Detailed information on all enemies in your FOV 
    "2 enemies", "EFC", "Enemy QUAD plus 1", etc 

#F - nearest Friendly player's \name
    Not the same as #N which uses \nicks when available 
    bind ? "say_team drop; Dropped weapon for #F" 

#H - Health
    Current Health level. 
    #h (lower case) does not change color according to Health level 
    say_team "Hurting bad - #H/#A" 

#I - nearest Item
    Shows the nearest "significant" (weapon, armor, powerup, or MH)
    available item, including dropped items. So if you kill an enemy
   you can just 
    say_team "#I available" 

#L - Location
    Many maps have terrible target_location entities e.g. PG on PRO-Q3DM6
    shows as YA. This shows the nearest "significant" item spawn (weapon,
    armor, powerup, or MH), whether the item is there or not 
    say_team "Took/waiting for #L" 

#M - aMMo wanted
    Lists all types of ammo for weapons you have that are empty or nearly so
    say_team "Need #M" 

#N - nearest teammate's \nick
    Note that this requires your teammate to have set his \nick 
    bind ? "say_team drop; Dropped weapon for #N" 

#P - last Pickup
    say_team "Took #P" 

#S - item in Sights
    You have to look directly at the item. The item can be a dropped item,
    healthbubble or a major one. Distance to the item is irrelevant.

#T - Target
    The last player you hit 
    say_team "#T is weak - finish him!" 

#U - powerUps
    Powerups you carry - Includes flags 

#W - Weapon
    Lists the current weapon and ammo you have. #W is red if you have less
    than one box of ammo, else white. #w (lower case) does not change color
    according to ammo level. 



Player Model & Color Cvars
--------------------------
color <string> (default = nnyny)
    Colour string codes a-y
    First # is your Railcore color 
    Second # is your Helmet/Visor color 
    Third # is your Shirt Color 
    Fourth # is your Rail Spiral Color 
    This also affects your team mates' color if you use cg_forceColors 1 

cg_deadBodyDarken <0|1> (default = 1)
    Darkens players as soon as they become corpses 

cg_enemyColors <string> (default = "iiiii")
    Formatted as RHBLX, same as \color. Requires a PM cg_enemymodel.

cg_enemyModel <modelname> (default = "sarge/pm" )
    Setting this will force all players on the enemy team to appear to have
    this model. PM model highly recommended. 

cg_forceColors <0|1> (default = 0)
    Force your team to use the same color as you. PM model and
    cg_forceModel 1 recommended. 

cg_forceModel <0|1> (default = 0)
    Force your team to use the same model as you. PM model and
    cg_forceColors 1 recommended. 

cg_showPlayerLean <0|1> (default = 1)
    Allows the disabling of viewed model leaning that was introduced
    in the 1.27x patches 
    0 is more accurate in regards to hitboxes 

model <modelname> (default = "mynx/pm" )
    Your model. It is highly recommended that you choose a pm model
    This also affects your team mates' models if you use cg_forceModel 1


General Cvars
-------------
cg_altLightning <0|1|2|3> (default = 3)
    Switch between various LG shaft visuals 
    0 - Q3 Point Release 1.27+
    1 - Original Q3
    2 - 4nTi's thin LG from 2002 
    3 - Runningman's uberthin LG 

cg_altPlasma <0|1|> (default = 0)
    0 is id's original visuals, 1 is CPMA's 

cg_autoAction <bitmask> (default = 0)
    Perform game actions such as demo recording and screenshots. 
    1 - save stats to a local text file at the end of a match
        logs are stored in: <cpma_root>/stats/<date>/<logname>.txt 
    2 - take an end-of-game screenshot 
    4 - record a demo of the game (requires warmup to be on) 
    8 - multiview the game (spectators only) 
    16 - only do these things if you're actually playing in the game 
    32 - follow power up
    64 - follow killer 

cg_damageDraw <0|1> (default = 1 - enabled)
    Obscure player's vision with blood effect when they are hit 

cg_drawGun <0|1|2> (default = 2)
    Toggles the gun being drawn. 
    0 - gun off 
    1 - gun on 
    2 - gun on, no sway 

cg_deadBodyDarken <0|1> (default = 1)
    Darkens players as soon as they become corpses 

cg_fallKick <0|1> (default = 1)
    Toggles the screen bouncing when player falls

cg_gunOffset [x,y,z]
    Moves gun along x,y,z axis 

cg_itemFX <mask> (default = 7)
    Control the cutesy gimmicks on items.
    With cg_simpleitems 1 the only difference is flags.
    1 - bob up and down 
    2 - rotate 
    4 - scale up on respawn 

cg_lightningImpact <0|1> (default = 0)
    Draw the "glowing ball" at the end of the shaft. 

cg_muzzleFlash <0|1> (default = 1)
    Specifies if there is a muzzle flash when gun is fired. 

cg_noAmmoChange <0|1> (default = 1 - enabled)
    Disables the ability to switch to a weapon that doesn't have any ammo.
    Useful for multiple-weapon binds. 

cg_nomip <bitmask> (default = 1023 - all r_picmip 0)
    Allows changing graphics to picmip 0 setting, regardless of current
    r_picmip setting. Changes require a vid_restart. The parameter for
   this setting is a bitmask: 
    1 - Lightning 
    2 - Plasma 
    4 - Rocket and Grenade explosions 
    8 - Grenades (the grenade ITSELF, not the same as 4) 
    16 - Bullets (machinegun and shotgun) 
    32 - Railgun 
    64 - BFG 
    128 - Blood 
    256 - Smoke 
    512 - Rockets (the projectile, not the same as 4) 

cg_noProjectileTrail <0|1> (default = 0)
    Removes underwater bubble trails from weapon fire. 

cg_railstyle <0 to 7> (default = 5)
    Changes the style of the rail trail. 
    0 - no trail 
    1 - straight core (line) only 
    2 - spiral only, no core 
    3 - spiral with straight core 
    4 - dotted core only 
    5 - original id style 
    6 - spiral with dotted core 
    7 - everything 

cg_smoke_SG <0|1> (default = 1)
    Controls the smoke on the shotgun blast. 

cg_smokeGrowth_GL <0|1> (default = 1)
    Controls the growth of the smoke trail for grenades. 

cg_smokeGrowth_RL <0|1> (default = 1)
    Controls the growth of the smoke trail for rockets. 

cg_smokeRadius_GL <value> (default = 8)
    Controls the size of the smoke trail for grenades. 

cg_smokeRadius_RL <value> (default = 12)
    Controls the size of the smoke trail for rockets. 

cg_trueLightning <0.0 to 1.0> (default = 0.75)
    0 - Default shaft feedback as seen in baseq3. 
    1 - Pure client side rendering of shaft graphic. 
    fractional values - Mix between server and client rendering of shaft 

cg_viewAdjustments <0|1> (default = 0)
    Replaces and unifies cg_run* and cg_bob* which are all deleted 

ch_crosshairText <string> (default = "" disabled)
    Use any text sting as crosshair

ch_playerNames <0|1> (default = 0)
    Display player names above model heads (only works during demo playback)


Audio cvars
-----------

cg_ammoWarning <0|1> (default = 1)
    Toggles the "click" sound. The visual effect can be changed in HUD cfg.

cg_nochatbeep <0|1> (default = 0)
    Allows client to supress "beeps" heard during normal chat messages.
    Especially convenient when connected to spam-riddled GTV servers. 

cg_nohitbeep <0|1> (default = 0)
    Disable hit beep (some like it for LG)

cg_noTaunt <0|1> (default = 1)
    Disable all taunts, not just voicechat ones 

cg_noteamchatbeep <0|1> (default = 0)
    Allows client to supress "beeps" heard during team chat messages. 

cg_oldCTFSounds <0|1|2> (default = 2)
    0 - TA sounds, with voiceovers on captures, flag pickups, etc. 
    1 - Near-worthless Q3 1.17 sounds, same for both teams 
    2 - Team-specific sounds, no voiceovers 
    Also controls non-leadchange FTDM end-of-round announcements. 

s_ambient <0|1> (default = 1)
    Disable ambient sounds like the gongs on q3wcp2 and the void/wind/water
    background noise on a ton of maps. 

s_announcer <string> (default = feedback)
    Set to hellchick for alternative game feedback sounds.
    Thanks to hellchick.
