Bunnyhopping is yet another extension of Strafe Jumping. At its basic level, bunnyhopping occurs due to an engine quirk in the movement system. Turning in quake-engine based games results in a slight acceleration; this acceleration is negligible when on the ground, as friction slows the player down. However, when constantly airborne, a player is not subject to ground friction. When a player jumps with good timing, they are deemed to barely touch the ground, so the friction is discounted. Hence, turning while repeatedly jumping can build up a great deal of speed. The simplest way to illustrate the air acceleration effect is to load up a map, set the gravity to a very low value and then:
Bunnyhopping is simply the same technique, but with jumps performed in a timely fashion every time you touch the ground. Note that the game has also been coded with an autoqueue. With this enabled (default), a player needs to simply hold the jump key and the game will always jump immediately when they touch the ground. This can be turned off with the cvar cl_jumpqueue set to 1.
Bunnyhopping is unrestricted up to 140% of the base speed of each class. Upon breaching the 140% cap, every subsequent jump saps some of the player's speed until they are no longer breaching the 140% cap. The formula for this is:
(current_speed - soft_cap_speed) * 0.65 + soft_cap_speed note: soft_cap_speed = run_speed*soft_cap or run_speed*1.4
Due to the nature of the soft cap, it is possible to maintain speeds above the soft cap. This speed can be thought of as the "effective cap," and works out to being around 150% of the base speed of each class.
The hard cap is set to 180% of the base speed of each class. If you jump while above this speed, your speed will be immediately set to the hard cap speed.