======================================
Overbounce Detection/Prediction (OBD):
======================================
Allows display of overbounce locations within a map.

usage:
------
Overbounce detection occurs internally, and is it's results are displayed through the Crosshair Stats (CHS) display system (see that section for more info.)  Note that if the CHS is not displaying any overbounce detections, than the overbounce predictions are not run.  Turning on overbounce detection is accomplished by assigning one or more detection types to one or more Crosshair Stats information positions.

to quickly turn on all overbounce prediction types (JGB):
---------------------------------------------------------
/df_chs1_draw 1
/df_chs1_info1 54

config variables:
-----------------
/df_ob_fast [ default: 0 (off) range: 0 (off) to 1 (on) ]

Turns OB fast prediction on or off.  OB fast prediction uses a different algorithm internally to detect OBs.  This algorithm is much faster, and is not dependant on the distance/height to the floor the player is looking at, and therefore has absolutely minimal effects on display framerates.  It is, however, very slightly inaccurate (due to floating point rounding errors, etc.).  General players may wish to enable fast detection.  Map makers should not use this feature if they are looking to find new OB heights for usage in a new map.  Using noclip to move up and down while using OB detection should definately use df_ob_fast off, as it is much more accurate.

overbounce detection types:
---------------------------
There are 3 types of overbounce detection that the system will do: (GO, JUMP, BELOW)

- GO (G): OB detection for the floor the player is looking at.  GO indicates that for a player to OB, the player must go to this location.

- JUMP (J): OB detection for the floor the player is looking at.  JUMP indicates that for the player to OB, the player must jump from the current position and then fall towards that location. JUMP predictions only occur when the player is on the ground.

- BELOW (B): OB detection for the floor below the player.  If the player is currently falling, B indicates that an overbounce will occur if the player hits the floor directly below.  If the player is currently standing on the ground, B indicates that an overbounce will occur if the player jumps and lands on the same floor.  This detection type is useful in that it allows the player to see overbounce locations without looking at the floor below - a nice mode to keep on even when the player is not out actively seeking new OB locations.

how client/server settings effect overbounces and overbounce detection:
-----------------------------------------------------------------------
OBs (and therefore OB detection) is dependant on certain settings: pmove_fixed, pmove_msec, g_synchronousClients, sv_fps (as well as gravity).  Essentially, OBs will/will not occur for certain vertical distances depending on these settings, as they ultimately effect how fast a player falls, etc.

OB occurence:
OBs occur normally for a map (where a known OB location exists) with 1 of 2 configurations:
1: pmove_fixed 1, pmove_msec 8, g_synchronousClients 0/1, sv_fps ---
2: pmove_fixed 0, pmove_msec -, g_synchronousClients 1, sv_fps 125

adjusting OBD for different (non-standard) settings:
----------------------------------------------------
if pmove_fixed is not used (0), and sv_fps is not 125, then OB detection must be adjusted for the proper sv_fps value.  This is done through the pmove_msec value (since it is not being used if g_synchronousClients is off).  To do this, set your pmove_msec to 1000/sv_fps.  (pmove_msec 8 (the default) works with sv_fps 125, since 1000/125 = 8)

additional information:
-----------------------
An overbounce occurs when a player is falling, hits the ground (a floor, not a slope), and bounces back up to the players original location.  The downward Z component of the velocity vector is "reflected" or inverted - a negative z vector component becomes positive.

An overbounce occurs due to a bug in the id software q3 code.  This bug only occurs at certain starting heights.  (Ultimately, it occurs when a player is falling and the player position during a given server snapshot is within .25 units of the ground).

Overbounces are usually executed by walking off of a platform, falling, and hitting a platform below.  But overbounces can occur in some locations by jumping off of a platform (instead of walking).  Also, overbounces can occur from bouncepads, stairs, etc.

Overbounces are generally classified in 3 different types:  OB, HOB, SOB

- OB (overbounce): this occurs when a player has 0 velocity in the XY components of the velocity vector (no horizontal speed).  The player will bounce back up to the original starting height.  Often players accomplish an OB by walking/using air control to manuever into a corner before hitting the ground, thus causing the horizontal speed to equal 0.

- HOB (horizontal overbounce): this occurs when a player has >0 velocity in the XY components of the velocity vector (horizontal speed exists), and the player presses jump (+moveup) after hitting the ground.  In this case the player's downward velocity is transferred to the horizontal velocity.  Especially useful for crossing gaps.

- SOB (sticky overbounce): sticky overbounces are a bit strange.  Essentially, there are times that the q3 engine will not place a player directly on the ground (although all visual and physical properties would indicate that one IS on the ground).  The player technically may be some very small distance away from the ground (something like .192 units away from the ground).  This occurs from various things - walking up or down a small stair, a bouncepad, a bouncepad lip, etc.  If the player is in this state (very close to the ground, but not at 0.000 distance), then a sticky overbounce may occur.  There are two types of sticky overbounces - same height platforms, and differnt height platforms.  A sticky overbounce (same height platforms) essetially will cause the player to overbounce on the next jump, assuming that the landing will be on the same platform where the jump originates, or another platform that is at the same height.  A sticky overbounce (different height platforms) may also create an OB height for a platform below - for a height that is not normally an OB height.  SOBs for same height platforms are useful for small speed boosts (good usually for that single next jump, as the next jump tends to place the player correctly on the floor at a distance of 0.000).  The OB detector shows SOBs by simply showing a "B" for the floor below (if BELOW OB detection is on) or "J" for the floor the player is looking at (if JUMP OB detection is on). 
