// The following are settable by the user. They are assigned to the
// default values, as if this file was empty. Comments above them
// should indicate what possible settings are available.

// Note that only things that cannot affect game synchronization are
// in here (views, etc).

// Further update: please *DO* *NOT* edit this file. Place your edits
// in LocalPrefs.ini. 

[UserPrefs]

// How long the console remains visible after it's opened via code
// popping up an error. These values are in ms, so that 1000 = 1
// second. A value of 0 should prevent that from appearing; values
// less than 0 are treated as zero. 
BZoneLoadConsoleOpenTime = 1000
BZoneIngameConsoleOpenTime = 0
BZ2EditLoadConsoleOpenTime = 3000
BZ2EditIngameConsoleOpenTime = 1000


// If this is true, then all items printed to the ingame console
// are echoed to the battlezone.log file. This'll let people see
// what's in some of the really huge hierarchies.
EchoConsoleToLogfile = false

// If true, the AIP running code will log things to disk, same effect
// as passing /aiplogging on the commandline. There is probably a
// slight performance hit when this is enabled, so I recommend that
// only modders turn this on.
aipLogging = false

// If true, when an out-of-sync is needed, it'll spam the AIP log file
// w/ extra info to try and help determine what went wrong.  Only
// testers should really have this on; you need logs from both client
// (or client that went out of sync if more than one client) & server
// to begin to dig into this.
aipExtraLoggingOnResync = false


//
//
//
// -----------------------------------------------------------------------
// Video system stuff.
//
//
//

// Show framerate: yes/no. [Adjustable ingame with the vid.framerate
// console command.] 1.2 used 'false' here.
ShowFPS = true

// VSync on/off. [Adjustable ingame with the vid.waitretrace console
// command.]
VSyncOn = false

// Max framerate targeted. Valid values are -1 (no cap), or 30..1000;
// any value specified outside of the 30-1000 range is treated as -1.
// It may help with some stuttering issues while turning if your
// framerate is capped to values in this range. [Note: actual
// framerate may be slightly higher than this limit due to rounding
// issues.] In limited testing on my laptop, I've found that merely
// having this value set to something under the max capable framerate
// produces smoother visuals onscreen, as the clamp allows the
// graphics card's drivers some cycles to process the recently
// submitted frame(s). It seems that if the graphics card is starved
// for time, it'll occasionally grab the CPU for long pauses (approx
// 1/10 of a second). You could possibly also turn on vsync to achieve
// much the same effect, but that usually clamps framerate down a LOT
// more. Experiment around.
MaxFramerate = 120

// Tuning values for letting the system catch up on frames being
// rendered, if desired.  If SleepInGame_Frames is 0 or less, this
// will never take effect. If it is 1, it'll take effect every frame,
// 2 is every other frame, 3 every third frame, and so forth. The
// Amount is passed to Sleep(), a call designed to let BZ2 signify
// that it'll take a breather and let any other high-priority tasks
// get CPU time. This is in case your particular video card drivers
// occasionally need to get more CPU time to catch up. If you see very
// regular stuttering, try setting the _Frames param to a value in the
// 5-10 range, and see if that helps any. I really do NOT recommend
// setting the Amount to a value over about 1, as that'll cause its
// own stuttering.

// If curious, I'd suggest trying some alternate values in localprefs:
// setting MaxFramerate = -1, and setting all 4 of the SleepInGames*
// values to 1. This may help when framerates drop under MaxFramerate
// value. Basically, it's better to pull down the peak/average fps if
// that helps the minimum fps.
SleepInGameSlow_Frames = 2
SleepInGameSlow_Amount = 1
SleepInGameFast_Frames = 0
SleepInGameFast_Amount = 0

// Minimum framerate for it to use the 'fast' values above. Clamped to
// 20.0 if a value less than that is specified. No max.
SleepInGameDivider = 30.0


// Shows the version at the login screen, if true.
ShowVersion = true

// Flag as to whether in SP, framerate is preferred to MW fidelity. If
// true, the exe can read a bunch of moves in at once, which can lead
// to MW pops/mispredicts. If false, it reads in only 1 move at a
// time, which may lead to slower framerates. Slower systems should
// definitely consider setting this to true. This setting is used only
// when not in a network game, and only when multiworld is on.  I'm
// defaulting this to false simply because slower systems shouldn't be
// trying to play non-networked games in MW if at all possible.
SPPreferFPS = false

// This is a value from -2 .. 2 (default 0). As the value decreases
// (towards -2), there will tend to be more pixel detail, but at the
// chance of slightly more sparkly textures. As the value increases
// (towards 2), it'll tend to be smoother, but at the expense of
// detail. Adjustable ingame with the 'vid.render.mipbias' variable.
ShellMipBias = -1
GameMipBias = -0.5

// For screen fills (e.g. the red overlay when taking damage), this
// can clamp how long it shows up. 1.0-1.3pb3 had no maximum on this.
// (This value is in seconds *AND* opacity -- it's a timer, and when
// between 0 and 1, it's also the opacity. When > 1, the opacity
// is clamped at 100%). I personally like a value like 0.8 for this,
// but I'm not willing to make such a drastic change.
MaxColorFade = 2.0

// Number of mipmaps that should be autogenerated for loaded
// textures. This ought to improve graphical performance, at the cost
// of a little more memory on the graphics card (and main memory). BZ2
// 1.0-1.2 used 0 for some textures, 3 for others. Valid values are
// 0-16, with illegal values resetting to 4. Using a value of 0 here
// will cause in-game graphics to be REALLY sparkly. You don't want to do
// that. Note: the DXT textures used by 1.3pb3 and higher ignore this
// value.
DesiredMipCount = 8

// Forces a desktop refresh (redraw) on exit. Asked for by a beta tester,
// made an option so this can be turned off if it annoys you.
RefreshDesktopOnExit = false

// Target framerate, used during MP (and optionally SP). This value is
// used as the framerate below which the game will start dropping
// graphical features. This value can be anywhere from 15-1000, clamped
// on reading. [If you're trying to sustain 1000fps, good luck!]
MinFramerateInSP = false // if true, apply MinFramerate in SP and IA
ShowFramerateTweaks = false // set to true to debug

// Shows game histogram (toggleable w/ game.histogram) 
ShowHistogram = false

// Sort order for which graphical features are dropped. These numbers
// must be between 1 and 100. The values in a sequence (e.g. SkyOff ->
// SkyLow -> SkyHigh) must be in increasing order. Entries in
// different sequences may have the same value. Lowest priority items
// (whose FPS matches) will be disabled. If nothing is disabled for a
// period, then it checks for things to enable, highest priority to
// lowest priority (whose FPS matches)

ObjsLow = 28 
ObjsMed = 27
ObjsHigh = 26
LightsNone = 25 
TerrainLow = 24
SkyNone = 23 
PropsNone = 22 
ShadowOff = 21 
LightsOne = 20
TerrainMed = 19
SkyLow = 18
ShadowMed = 17
PropsMed = 16
SkyHigh = 15
TerrainHigh = 14
LightsNoHeadlights = 13
PropsHigh = 12 
ParticleLow = 11 
ParticleMed = 10 
ParticleHigh = 9 
ReflectionsOff = 8 
LocalFogOff = 7 
WeatherOff = 6 
LightsAll = 5 
ReflectionsOn = 4 
LocalFogOn = 3 
WeatherOn = 2 
ShadowHigh = 1

// Framerate target for the above functions. These values must be
// between 15 and 999. There must be a spacing of at least 6 between
// sequenced values, e.g. SkyOff -> SkyLow -> SkyHigh. If the
// framerate is below than the value, it'll be applied. If above the
// value, and this is the top entry in the sequence, the feature will
// be applied.

ObjsLowFPS = 15.0 
ObjsMedFPS = 21.0 
ObjsHighFPS = 27.0 // People like this, so make it show back up first 

LightsNoneFPS = 15.0 
LightsOneFPS = 20.0 
LightsNoHeadlightsFPS = 25
LightsAllFPS = 47.0 

TerrainLowFPS = 23.0 
TerrainMedFPS = 29.0 
TerrainHighFPS = 37.0 

SkyNoneFPS = 24.0 
SkyLowFPS = 30.0 
SkyHighFPS = 36.0 

PropsNoneFPS = 25.0 
PropsMedFPS = 33.0 
PropsHighFPS = 39.0 

ShadowOffFPS = 26.0 
ShadowMedFPS = 32.0 
ShadowHighFPS = 260.0 // buggy for most, so never enable (unless you want it to) 

ParticleLowFPS = 34.0 
ParticleMedFPS = 40.0 
ParticleHighFPS = 46.0 

ReflectionsOffFPS = 41.0 
ReflectionsOnFPS = 48.0 

LocalFogOffFPS = 42.0 
LocalFogOnFPS = 50.0 

WeatherOffFPS = 45.0 
WeatherOnFPS = 51.0

// Values for the LOD layer at level 0, 1 or 2 (low, medium, high,
// respectively). Changing these could cause serious problems, so be
// careful
LOD0_MRM = 3.0
LOD0_SortTransparent = false
LOD0_DoGlowTextures = false
LOD0_FarDist = 400.0
//
LOD1_MRM = 2.0
LOD1_SortTransparent = false
LOD1_DoGlowTextures = true
LOD1_FarDist = 500.0
//
LOD2_MRM = 0.6
LOD2_SortTransparent = true
LOD2_DoGlowTextures = true
LOD2_FarDist = 600.0

// Tuning values for the building preview display. 

// Alpha values for the building preview light & heavy display. Values
// are from 0 (transparent) to 255 (opaque). This is for the color of
// the object as a whole
BuildingPreview_LightAlpha = 31
BuildingPreview_HeavyAlpha = 160
// Alpha of the wireframe in light * heavy mode, values as above
BuildingPreview_WireLightAlpha = 127
BuildingPreview_WireHeavyAlpha = 127

// Values used to reposition the mapradar onscreen. Width, Height
// should be self-explanatory. For the positioning, it takes the
// screen size, multiplies that by the multiplier, then adds the
// diff. That is treated as the top-left coord, unless that would push
// it (partly/fully) offscreen, in which case it's treated as bottom
// and/or right, respectively. Experimentation should make this
// clear. Two sets of values exist, one for play and one for the
// editor.

// Note: these settings are adjustable with the ingame console, see
// "gameprefs.Play_*" and "gameprefs.Edit_*" variables


Play_MapRadarHeight = 128
Play_MapRadarWidth = 128
Play_MapRadarXMult = 0.0
Play_MapRadarXDiff = 30.0
Play_MapRadarYMult = 1.0
Play_MapRadarYDiff = -10.0

Edit_MapRadarHeight = 128
Edit_MapRadarWidth = 128
Edit_MapRadarXMult = 1.0
Edit_MapRadarXDiff = -30.0
Edit_MapRadarYMult = 1.0
Edit_MapRadarYDiff = -10.0

// Same as above, but for the 3D cockpit radar. [applies to play &
// editor, actually] You may need to keep the aspect ratio constant
// here; if not 1.85:1, the XSI may need tweaking
Play_CockpitRadarHeight = 140
Play_CockpitRadarWidth = 260
Play_CockpitRadarXMult = 0.0
Play_CockpitRadarXDiff = 35.0
Play_CockpitRadarYMult = 1.0
Play_CockpitRadarYDiff = 0.0

// Color for the 3D cockpit radar. Adjustable ingame w/ the 
// gameprefs.Play_CockpitRadarColorR .. B values
Play_CockpitRadarColorR = 0
Play_CockpitRadarColorG = 120
Play_CockpitRadarColorB = 255

// Positioning of the ingame histogram for MP. If these numbers are 
// negative, it's treated as a position from the right/bottom edge of
// the screen; positive numbers are from the top/left, respectively.
Play_HistogramPosX = -260
Play_HistogramPosY = 70

// Values to allow the user to pull in (but never extend) the
// visibility, fog ranges on maps. If the values below are under the
// values set by a map, they are used. If they are above, they are
// ignored. These settings don't affect the Editor build, where you'd
// want higher draw distances.
// Note: also adjustable with "gameprefs.MaxVisibility", and similar
MaxVisibility = 99999.0
MinFogRange = 99999.0
MaxFogRange = 99999.0

// Multiplier applied to default visibility, fog ranges on maps. This
// value must be between 0.1 (can see only 10% as far as normal) and
// 1.0 (normal).  This multiplier is applied before the maxes are
// applies above, and may be more useful in trimming view distances.
VisibilityMult = 1.0


//
//
//
// -----------------------------------------------------------------------
// General game stuff.
//
//
//

// What key (when used with the control key) is used to toggle the
// ingame console on/off. See the bottom of this file for what values
// are valid here; this is NOT an ascii code, but rather a DirectInput
// keyboard char. Made editable after so many non-US keyboards had
// issues with this key. For US keyboard, this default key is the one
// with ~ ` on it. For UK keyboards, this default key is the one with
// ` ¬ on it.
ToggleConsoleKey = 0x29


// Ability to tweak how remote craft are smoothed onscreen. Valid
// values are -1 .. 4; adjustable ingame with game.smoothcodepath :
//
// -1: 1.3 Optional - shows raw data, no smoothing (remote humans + bots)
//  0: 1.3 default
//  1: 1.2 code (fixed max speed, will be very warpy if craft exceeds it) [REMOTE HUMANS ONLY]
//  2: 1.2 code, but uses max speed from craft's ODF  [REMOTE HUMANS ONLY]
//  3: 1.2 code (fixed max speed, will be very warpy if craft exceeds it) [REMOTE HUMANS + BOTS]
//  4: 1.2 code, but uses max speed from craft's ODF  [REMOTE HUMANS + BOTS]
//
SmoothCodePath = -1


// Range for a percentage of a craft's normal forward velocity it may
// be smoothed by when multiworld is on. This value should be between
// 0.0 and 5.0, where 1.0 means that the craft is allowed to travel up
// to 100% of its forward velocity per frame.
//
// Setting the min down to 0 is not recommended, as craft rotating in
// place w/o any position changes won't have their changes shown until
// it moves.
//
// Setting the max number higher will be slightly more jumpy, while
// lower numbers will tend to induce warp if remote players maneuver
// really quickly.

MinMWSmooth_DTPercentage = 0.5
MaxMWSmooth_DTPercentage = 1.5


// Some other clamps on the smoothing code ranges. These are in absolute
// dt values, not percentages of current frame. Values less than 0.00001
// mean that this value is ignored. These can be adjusted with the
// game.minsmoothdt and game.maxsmoothdt console commands
MinMWSmooth_dt = 0.01
MaxMWSmooth_dt = 0.5


// Feedback factors for MW smoothing. Each of these may be between 0.0
// and 1.0, with 0.0 meaning "use 100% of the traditionally-calculated
// value for this, 1.0 meaning "use 100% of the new calculation for
// this", and 0.5 meaning "average the two exactly." In limited
// testing, values closer to 0 than 1 tend to work better.
//
// PositionFactor is used to blend between the just-calculated
// position and the last frame's position. A value of 0 will use only
// the highly-smoothed position, a value of 1 will use the 'best
// guess' position of where they are, and a value of 0.5 will use 50%
// of both values. Values between 0.75 and 0.999 will probably be
// intolerable. This value is applied on a per-frame basis, so as
// your framerate goes up, PositionFactor will seem to get stronger.
//
// VelocityFactor is used to blend between the true (physics)
// velocity (value of 0) and the velocity needed to get it going
// towards its true position (value of 1).

MWSmooth_PositionFactor = 0.15
MWSmooth_VelocityFactor = 0.00

// The above 4 values can be adjusted at the console with game.minsmooth,
// game.maxsmooth, game.smooth_posfactor, and game.smooth_velfactor . Older
// variables and console commands have been removed.


// How much the smoothing can change dt by in a frame. A value of 1.0
// means a 100% decrease/increase is allowable, any decrease/increase
// over that is clamped. A value of 0.5 means a 50% change is allowed.
// Valid ranges for these values are 0.01 .. 10.0. Adjustable ingame
// with game.maxsmoothincrease, game.maxsmoothdecrease console varbs.
MaxSmoothDTDecrease = 0.15
MaxSmoothDTIncrease = 0.15

// Time, in seconds, at which the smoothing code is allowed to run at.
// 0.01 is approx 100x/second, or 100fps. Setting this to 0 is
// allowed, but seemed to make things appear to stutter at the TPS
// rate once the framerate on my system hit 400+fps.
MWSmooth_MinDT = 0.01

// Flag that tunes behavior of what to do when the multiworld
// buildworld is really late. Setting this to true will force it to
// burn a little more CPU in hopes of catching up sooner rather than
// later. Previous builds essentially defaulted this to false.
AggressiveCatchupWhenLate = true


// Initial setting of the variable adjustable w/ game.altremotepredict.
DefaultAltRemotePredict = false


// Maximum rate the 2D terrain map can be refreshed at, a fairly
// expensive operation. This is mostly an issue in multiplayer, where
// the multiworld frequency can cause spurious requests to refresh the
// 2D map. This value is in 1/10 seconds, i.e. 10 = 1 second, 25 = 2.5
// seconds. Setting this value too low can hurt your framerate.
// Setting it too high may mean the 2D map lags reality, especially on
// building creation/destruction. Most of the time, I doubt you're
// looking at that map, so an up-to 2.5 second lag isn't a problem
TerrainRefreshRateTicks = 25


// Teamcolors for MP games. 0 means off, 1 is team colors on,
// individual teams, 2 is team colors on, teamplay colors (teams 1-5
// the same, 6-10 the same). Use -1 for default (BZ2 1.0-1.2 behavior,
// which is 0 in SP, 1 or 2 in MP). Invalid values treated as -1
TeamplayColors = -1


// If this is true, the Free For All (i.e. non-teamplay) colors will
// be scrambled by each session's server so that there's a little more
// variety in their use. If false, the 1.0-1.2 teamcolor list is used.
ScrambleTeamplayColors = true


// If true, the shell will do a Sleep(1) at the end of the frame. May
// improve performance-- the idea behind this is to tell Windows "if
// there's any other task needing CPU time, let it have some," which
// DirectX and/or the graphics drivers may want right after a frame is
// finished and it's their job to get it onscreen.
SleepInShell = true


// If true, the shell will do a Sleep(15) while the network thread is
// receiving Gamespy server info packets (i.e. during a refresh). Will
// probably improve accuracy of ping times.
ExtraSleepInShellGamespyScanning = true



// If true, the game will rebuild the cliffs database on loading a
// savegame.  Recommended from the beta board.
RecalcCliffsOnLoad = true


// If true, the game will show debugging info for the currently
// executing AIP plans onscreen. Mainly useful for modmakers.
// The ingame console command game.debugaip will toggle this.
ShowAIPInfo = false


// Position of the onscreen AIP debugger. Positive values are treated
// as offsets from left/top respectively; negative values measure from
// bottom/right. It's possible for these values to push things
// offscreen, so check your math!
// Note: this is adjustable with the ingame console, see
// "gameprefs.AIPDebug_PosX" and "gameprefs.AIPDebug_PosY"


// 640 resolution
AIPDebug_PosX = -610
AIPDebug_PosY = -175

// 800 resolution
//AIPDebug_PosX = -765
//AIPDebug_PosY = -175

// 1024 resolution
//AIPDebug_PosX = -980
//AIPDebug_PosY = -175

// 1280 Resolution
//AIPDebug_PosX = -1250
//AIPDebug_PosY = -175

// Same coordinate system, for the framerate & audio info strings
Info_FPS_PosX = 0
Info_FPS_PosY = 0
Info_Audio_PosX = 410
Info_Audio_PosY = 0


// If true, the game will save the post-game statistics to disk, in
// the 'GameStats' folder (which will be created as needed). Stats
// are filenamed with system date and time of writing; do not play
// more than one game per minute or files will be overwritten.
SaveStatsToDisk = true


// If true, uses 1.0-1.3pb1's method for trying to reassociate
// ordnance across multiworld swaps. 'true' may be faster; 'false'
// may look better visually.
OldOrdnancePath = true


// Multiplier on how fast the screen scrolls by in Shift-F9 mode.  1.0
// should be patch1.2's speed, 2.0 = double that speed, 0.5 = one half
// that speed.
ShiftF9ScrollScale = 0.5

// How many map clusters are cached in memory at once. More may help
// with expanded view distances in custom maps, or editor/satellite
// views. (May be especially noticeable when clicking on the map in
// those views to bounce the camera around; framerate may take a dive
// as it recalculates some things.) However, increasing this costs
// memory -- notes in the code say about 2KB per cached item, or about
// 2MB for every 1024. 1024 has been used for quite some time, and is
// the minimum value; 16384 is the max.
MapClusterCacheCount = 1024

// Some threading and multi-CPU tuning values. For all priority
// values, they can be one of the following values:
// -2 : THREAD_PRIORITY_LOWEST
// -1 : THREAD_PRIORITY_BELOW_NORMAL
//  0 : THREAD_PRIORITY_NORMAL
//  1 : THREAD_PRIORITY_ABOVE_NORMAL
//  2 : THREAD_PRIORITY_HIGHEST
// Values outside of -2..2 are treated as 0.
MainThreadPriority = 0
NetworkThreadPriority = 1
OggDecodeThreadPriority = 1

// Thread affinity masks. These are bitfields, with 1 being the first
// CPU in the system, 2 the second CPU, 4 the third CPU, etc. If a
// mask specified here refers to a CPU that doesn't exist, it is
// treated as 1
MainThreadAffinityMask = 2
NetworkThreadAffinityMask = 2
OggDecodeThreadAffinityMask = 1



//
//
//
// -----------------------------------------------------------------------
// Audio system stuff. The sound code has been rewritten for the 1.3
// to support DirectSound/DirectSound3D thru DirectX 8.0 or better.
// [1.2 handled Aureal 1.x/2.x, though that code had a ton of bugs.]
//
//
//

// If this setting is true, 3D sounds will be attempted. If false, 3D
// sound will be off. This is possibly perferable to the /nods3d
// commandline flag. If your sound card says it can't do 3D, this
// value will be set to false(disable).
Enable3DAudio = true


// Audio mixing rate, selected from the following list:
// 0 = 8000 Hz
// 1 = 11025 Hz (BZ2 1.0-1.2 default)
// 2 = 22050 Hz
// 3 = 44100 Hz
// No other values are allowed, and 22050 will be used if an illegal
// value is specified
AudioMixRate = 3


// Audio mixing bits. Drop this to 8 if your audio board is *really*
// underpowered. Only 8 or 16 is valid here, with 16 being the
// default.
AudioMixBits = 16


// Size of audio cache. If this is 0, it is autodetermined by the
// following:
// Physical RAM <= 64MB  :  4MB . [Upgrade already, dangit!]
// Physical RAM 64-128MB :  8MB
// Physical RAM 128-192MB: 16MB
// Physical RAM 192+MB   : 32MB
//
// If this number is not 0, it is taken as a number of MB of memory to
// use (valid values are 1-64MB). If you're running a box with 2GB or
// 4GB ram, this autodetect may give strange results-- see the
// battlezone.log file to see what value it really used.
//
// It may make sense to set this value to 16+MB, even on 64MB boxes.
// The reasoning behind this is as follows: doing so would cause a lot
// of swapping in windows. However, that swapping may well be faster
// than BZ2's reading the disk (for the same amount of data),
// unpacking, and the like. Experiment with this if you want.
//
//   (Note: if your soundcard says it's got a particular size of
//   ram onboard, that overrides the above)
AudioCacheSize = 0


// Faders for various parts of audio. This is a multiplier on the rest
// of the volume, so that 0.0f means "off, completely", 0.5f means
// "half of slider volume", 1.0f means "use slider volume", and 2.0f
// means "double slider volume."
//
// Note: maximum value for audio in code is clamped to 1.0, so if any
// of these are over 1.0, then your in-game slider must be under 1.0
// to fully take effect. (i.e. if you set one to 2.0f, your ingame
// volume slider must be 0-50%, so that that category can go from 0-1
// w/o clamping). Valid values are 0 to 2 (double).
AudioMultiplier_UNKNOWN = 1.0f // fallback
AudioMultiplier_UNIT_DLG = 1.0f
AudioMultiplier_MISSION_DLG = 1.0f
AudioMultiplier_INTERFACE = 1.0f
AudioMultiplier_WEAPON = 1.0f
AudioMultiplier_ORDNANCE = 1.0f
AudioMultiplier_EXPLOSION = 1.0f
AudioMultiplier_ENGINE = 1.0f
AudioMultiplier_AMBIENT = 1.1f


// Distance ranges for various classes. These values must be between
// 2.0f and 250.0f. The values here seem to work well. 
vehicleMinDist = 10.0
vehicleMaxDist = 225.0
explosionMinDist = 10.0f
explosionMaxDist = 225.0f
weaponMinDist = 10.0f
weaponMaxDist = 225.0f
ordnanceMinDist = 10.0f
ordnanceMaxDist = 225.0f


// Various 3D setup flags. These are the defaults, I believe, and
// ought to work. See the DirectX SDK docs for info on what they are.

// D3D listener params
flDistanceFactor= 1.0f
flRolloffFactor = 1.0f
flDopplerFactor = 1.0f


// D3D Buffer Params
dwInsideConeAngle	= 360
dwOutsideConeAngle	= 360
vConeOrientation_x	= 0.0f
vConeOrientation_y	= 0.0f
vConeOrientation_z	= 1.0f
lConeOutsideVolume	= 0
flMinDistance		= 10.0f
flMaxDistance		= 225.0f


// Use the new shell background music volume setter. This is
// recommended to be true for my Soundblaster Live and Hercules
// Gamesurround MUSE XL cards at home, but false for my Turtle Beach
// Santa Cruz. Basically, if you alt-tab in the pregame shell and the
// music is very loud on return, try reversing this setting.
NewShellMusicBehavior = false


// Whether /nobodyhome on the commandline is a 1-time option, or
// persists until you relaunch w/o that option. 1.0-1.3pb3 used a
// value of true for this
NobodyHomeIsPersistent = false

//
//
//
// -----------------------------------------------------------------------
// Network stuff
//
//
//

// Default name to be in the session name box 
DefaultSessionName = ""


// Default password to be in the password box
DefaultPassword = ""


// Default server message
DefaultMessage = ""


// Default Max ping (until edited). Default is 2000
DefaultMaxPing = 2000


// If this is true, BZ2 will attempt to contact any UPNP-supporting
// devices on the local LAN, and have them open BZ2's network ports
// automatically. This applies only when hosting, and on gamespy
// (i.e. LAN Only is off)
UseUPNP = true


// How long UPNP is registered with your local router (if it's enabled
// & working). I think this is in seconds, but could be wrong Use 0 to
// make it 'unlimited' -- i.e. it'll remain registered until you
// manually close out a BZ2 session. (Crashes will leave an
// 'unlimited' session open, which is why this isn't 0)
UPNPTimeout = 0


// Flag to make UPNP very chatty to console/chatbox. Set to false to
// make it quieter
VerboseUPNPLog = true


// How many game info queries received that are logged to the
// console/chatbox, per session. This is useful to see if others can
// see your session online. Set to 0 to disable this, or set to a
// really big # to make permanent.
NumGameQueriesLoggedPerSession = 2


// Flag to start off in LAN only mode (true), or Gamespy (false)
LANOnly = false


// Flag to start off in 'Power User' mode (true) or normal (false)
PowerUser = false


// # of seconds the multiplayer in-game messages window (mid-right
// screen) appears for in normal mode
MessagesWindowTimeoutNormal = 20


// # of seconds the multiplayer in-game messages window (mid-right
// screen) appears for in poweruser mode
MessagesWindowTimeoutPowerUser = 9999


// Max # of bots in DM. This can go as high as 256 if you want to
// really crush the system. Note: if your framerate sucks with a large
// number of bots, then the official response is: "don't do that,
// then."
MaxDMBots = 32


// Ingame score info on by default (control-enter to toggle)
ScoresVisible = true


// # of seconds between refreshing the Gamespy server list
GamespyServerListRefresh = 120


// # of seconds between refreshing the LAN server list
LANServerListRefresh = 30


// Length of LAN scan, in seconds
LANScanLength = 3


// Shows all games in the server list, regardless of versioning.  If
// false, only shows games with the same Gamespy version.
ShowAllGames = true


// # of machines to query at once in a Gamespy server scan.  BZ2
// 1.0-1.2 used 20; this may be too high for a modem. If this is too
// high, a modem user will get congestion and thus higher ping times
// than correct. A user on broadband can probably safely increase
// this.
ServersToQueryAtOnce = 10


// Default port # for games (LAN & Gamespy) to be hosted on. Changing
// this shouldn't be necessary unless you're trying to host multiple
// games off a machine at once. Valid values for this are 1024 thru
// 65530.  Ports N thru N+2 are used for the game. Thus, for the
// default of 17770, ports 17770-17772 are used. Also used in LAN
// scans-- scans base to base +20. Thus, all machines on a LAN must
// have the same base.
GameBasePortNumber = 17770


// Default amount of time (in seconds) for an opened connection to
// start talking as a BZ2 app. Connections will be dropped if this
// timeout is exceeded. Range of possible values is 1.0 .. 99.0.
InitialJoinTime = 5.0


// # of concurrent joiners (before they authenticate) to support at
// once. -1 means "up to playerlimit". Setting this value too small
// could block out legit players trying to join
NumConcurrentJoiners = -1


// Flag as to whether IPs are added to an autoblock list after
// multiple bad joins. Note: the /clearautobans chatline command
// should flush this list.
AutoblockBadJoiners = true


// How many bad joins are needed to be added to the autoblock list
// Note: the /clearautobans chatline command should flush this list.
RejectionsBeforeAutoBan = 3


// Bans for specified addresses. To use these, you must fill in the
// address (replacing the "aaa.bbb.ccc.ddd/eee"), and uncomment it
// (remove the // from the start of it). No support is currently
// present for unbanning while BZ2 is running. Items in the following
// list may be commented out; subsequent items will be read. More IPs
// may be bannable that there are lines here; the exact number is
// undisclosed.
//
// The /eee component is a netmask of how many bits of the first part
// are checked. If it is 32 (default), the IP must match exactly. If
// it is 24, it is as if the 'ddd' component was wildcarded -- some
// would write 'aaa.bbb.ccc.ddd/24' as 'aaa.bbb.ccc.*'. If the netmask
// is 0 (not recommended), it'll block every IP (not recommended).

//BanIP1 = "aaa.bbb.ccc.ddd/32"
//BanIP2 = "aaa.bbb.ccc.ddd/32"
//BanIP3 = "aaa.bbb.ccc.ddd/32"
//BanIP4 = "aaa.bbb.ccc.ddd/32"
//BanIP5 = "aaa.bbb.ccc.ddd/32"
//BanIP6 = "aaa.bbb.ccc.ddd/32"
//BanIP7 = "aaa.bbb.ccc.ddd/32"
//BanIP8 = "aaa.bbb.ccc.ddd/32"
//BanIP9 = "aaa.bbb.ccc.ddd/32"
//BanIP10 = "aaa.bbb.ccc.ddd/32"
//BanIP11 = "aaa.bbb.ccc.ddd/32"
//BanIP12 = "aaa.bbb.ccc.ddd/32"
//BanIP13 = "aaa.bbb.ccc.ddd/32"
//BanIP14 = "aaa.bbb.ccc.ddd/32"
//BanIP15 = "aaa.bbb.ccc.ddd/32"
//BanIP16 = "aaa.bbb.ccc.ddd/32"


// IRC options. These are used in the chat system.
// Server address and port to connect to.
IRCServerAddr = "irc.gamesurge.net"
IRCPort = 6667


// Default channel to connect to.
IRCDefaultChannel = "#bz2" 


// If this is true, BZ2 will run a small server on port 113 (identd)
// when irc is started up. This may make joining irc a little faster.
// If you're running a firewall app, you may need to add this port to
// either the 'reject' list (not just silently drop, it must actively
// return a "connection reset" error), or forward this port to the
// machine you run BZ2 on.
RunIdentd = true


// If this line isn't commented out, it's used as an alternate
// nickname to be used by IRC if your first one is flagged as in use.
// CHANGE THIS BEFORE UNCOMMENTING!

// IRCAlternateNick = "SomeNickname"

// Setting to use strict usernames (all lowercase, can't start with
// punctuation) Not all servers require this, but it's probably a
// good idea to have on by default.
UseStrictUsername = true


// userid to tell irc. Please fill this in with correct info. This is
// not your irc nickname (which is inherited from your BZ2 login name), 
// but what is reported to the irc server.
IRCUserID = "player" 


// Full, real name to tell irc server. Please fill this in with correct info
IRCFullName = "Battlezone 2 Player" 


// Flag as to whether the IRC MOTD (Message Of The Day) is shown on
// startup.  This is mostly the same info, so some people may choose
// to avoid this spammage.
IRCShowMOTD = true


// Setting to change the default usage of the NAGLE algorithm. Turning
// this to true will try and push packets thru with less latency (lag)
// at the expense of possibly flooding slow connections. 1.2 defaulted
// this to false.
DisableNAGLE = true


// Setting to send KeepAlive packets down the socket
// connections. BZ2's constant traffic should be sufficient, but just
// in case, here's another kick. 1.2 defaulted this to false except
// for when a server was changed.
UseKeepAlive = true


// Settings for logging chat to disk. ChatLog is for ingame chat;
// IRCLog is for the pregame chat. If these settings are true, then a
// timestamped file will be created in the 'Logs' subfolder from
// bzone.exe. These files are created on demand, so if you start BZ2
// and play only SP or IA, no logfile will be created.
//
// As shipped, these are off. If you turn these on, please monitor
// disk space over time if you install BZ2 1.3 to a HD with less than
// a gig free.
KeepChatLogFile = false
KeepIRCLogFile = false


// If true, chat/irc logs files will have a timestamp added to the
// start of each line printed
TimestampChat = false


// Host name, port a created session will register itself with for
// matchmaking, and potential clients will use for searching. DON'T
// CHANGE THIS UNLESS YOU'RE DARN SURE YOU KNOW WHAT YOU'RE DOING!
HostMasterServerName = "master0.gamespy.com"
HostMasterServerPort = 27900
ClientMasterServerName = "master0.gamespy.com"
ClientMasterServerPort = 28900



// -----------------------------------------------------------------

// Possible characters for the ToggleConsoleKey above.  Note: the
// "DIK_" part of each line is the DirectInput name for each possible
// key, which should help you find a suitable key.  DIK_GRAVE is the
// default, which means that 0x29 is copied to the "ToggleConsoleKey"
// line well above. These constants come from Microsoft's
// DirectInput.h

// DIK_ESCAPE          0x01
// DIK_1               0x02
// DIK_2               0x03
// DIK_3               0x04
// DIK_4               0x05
// DIK_5               0x06
// DIK_6               0x07
// DIK_7               0x08
// DIK_8               0x09
// DIK_9               0x0A
// DIK_0               0x0B
// DIK_MINUS           0x0C    /* - on main keyboard */
// DIK_EQUALS          0x0D
// DIK_BACK            0x0E    /* backspace */
// DIK_TAB             0x0F
// DIK_Q               0x10
// DIK_W               0x11
// DIK_E               0x12
// DIK_R               0x13
// DIK_T               0x14
// DIK_Y               0x15
// DIK_U               0x16
// DIK_I               0x17
// DIK_O               0x18
// DIK_P               0x19
// DIK_LBRACKET        0x1A
// DIK_RBRACKET        0x1B
// DIK_RETURN          0x1C    /* Enter on main keyboard */
// DIK_LCONTROL        0x1D
// DIK_A               0x1E
// DIK_S               0x1F
// DIK_D               0x20
// DIK_F               0x21
// DIK_G               0x22
// DIK_H               0x23
// DIK_J               0x24
// DIK_K               0x25
// DIK_L               0x26
// DIK_SEMICOLON       0x27
// DIK_APOSTROPHE      0x28
// DIK_GRAVE           0x29    /* accent grave */
// DIK_LSHIFT          0x2A
// DIK_BACKSLASH       0x2B
// DIK_Z               0x2C
// DIK_X               0x2D
// DIK_C               0x2E
// DIK_V               0x2F
// DIK_B               0x30
// DIK_N               0x31
// DIK_M               0x32
// DIK_COMMA           0x33
// DIK_PERIOD          0x34    /* . on main keyboard */
// DIK_SLASH           0x35    /* / on main keyboard */
// DIK_RSHIFT          0x36
// DIK_MULTIPLY        0x37    /* * on numeric keypad */
// DIK_LMENU           0x38    /* left Alt */
// DIK_SPACE           0x39
// DIK_CAPITAL         0x3A
// DIK_F1              0x3B
// DIK_F2              0x3C
// DIK_F3              0x3D
// DIK_F4              0x3E
// DIK_F5              0x3F
// DIK_F6              0x40
// DIK_F7              0x41
// DIK_F8              0x42
// DIK_F9              0x43
// DIK_F10             0x44
// DIK_NUMLOCK         0x45
// DIK_SCROLL          0x46    /* Scroll Lock */
// DIK_NUMPAD7         0x47
// DIK_NUMPAD8         0x48
// DIK_NUMPAD9         0x49
// DIK_SUBTRACT        0x4A    /* - on numeric keypad */
// DIK_NUMPAD4         0x4B
// DIK_NUMPAD5         0x4C
// DIK_NUMPAD6         0x4D
// DIK_ADD             0x4E    /* + on numeric keypad */
// DIK_NUMPAD1         0x4F
// DIK_NUMPAD2         0x50
// DIK_NUMPAD3         0x51
// DIK_NUMPAD0         0x52
// DIK_DECIMAL         0x53    /* . on numeric keypad */
// DIK_OEM_102         0x56    /* <> or \| on RT 102-key keyboard (Non-U.S.) */
// DIK_F11             0x57
// DIK_F12             0x58
// DIK_F13             0x64    /*                     (NEC PC98) */
// DIK_F14             0x65    /*                     (NEC PC98) */
// DIK_F15             0x66    /*                     (NEC PC98) */
// DIK_KANA            0x70    /* (Japanese keyboard)            */
// DIK_ABNT_C1         0x73    /* /? on Brazilian keyboard */
// DIK_CONVERT         0x79    /* (Japanese keyboard)            */
// DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
// DIK_YEN             0x7D    /* (Japanese keyboard)            */
// DIK_ABNT_C2         0x7E    /* Numpad . on Brazilian keyboard */
// DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
// DIK_PREVTRACK       0x90    /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
// DIK_AT              0x91    /*                     (NEC PC98) */
// DIK_COLON           0x92    /*                     (NEC PC98) */
// DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
// DIK_KANJI           0x94    /* (Japanese keyboard)            */
// DIK_STOP            0x95    /*                     (NEC PC98) */
// DIK_AX              0x96    /*                     (Japan AX) */
// DIK_UNLABELED       0x97    /*                        (J3100) */
// DIK_NEXTTRACK       0x99    /* Next Track */
// DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
// DIK_RCONTROL        0x9D
// DIK_MUTE            0xA0    /* Mute */
// DIK_CALCULATOR      0xA1    /* Calculator */
// DIK_PLAYPAUSE       0xA2    /* Play / Pause */
// DIK_MEDIASTOP       0xA4    /* Media Stop */
// DIK_VOLUMEDOWN      0xAE    /* Volume - */
// DIK_VOLUMEUP        0xB0    /* Volume + */
// DIK_WEBHOME         0xB2    /* Web home */
// DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
// DIK_DIVIDE          0xB5    /* / on numeric keypad */
// DIK_SYSRQ           0xB7
// DIK_RMENU           0xB8    /* right Alt */
// DIK_PAUSE           0xC5    /* Pause */
// DIK_HOME            0xC7    /* Home on arrow keypad */
// DIK_UP              0xC8    /* UpArrow on arrow keypad */
// DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
// DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
// DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
// DIK_END             0xCF    /* End on arrow keypad */
// DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
// DIK_NEXT            0xD1    /* PgDn on arrow keypad */
// DIK_INSERT          0xD2    /* Insert on arrow keypad */
// DIK_DELETE          0xD3    /* Delete on arrow keypad */
// DIK_LWIN            0xDB    /* Left Windows key */
// DIK_RWIN            0xDC    /* Right Windows key */
// DIK_APPS            0xDD    /* AppMenu key */
// DIK_POWER           0xDE    /* System Power */
// DIK_SLEEP           0xDF    /* System Sleep */
// DIK_WAKE            0xE3    /* System Wake */
// DIK_WEBSEARCH       0xE5    /* Web Search */
// DIK_WEBFAVORITES    0xE6    /* Web Favorites */
// DIK_WEBREFRESH      0xE7    /* Web Refresh */
// DIK_WEBSTOP         0xE8    /* Web Stop */
// DIK_WEBFORWARD      0xE9    /* Web Forward */
// DIK_WEBBACK         0xEA    /* Web Back */
// DIK_MYCOMPUTER      0xEB    /* My Computer */
// DIK_MAIL            0xEC    /* Mail */
// DIK_MEDIASELECT     0xED    /* Media Select */
