← All Glitches

Bunny Hopping

Half-Life · PC · 1998 · Competitive Exploit · Discovered by Community

Jumping continuously while strafing in Half-Life's Quake-derived engine allows players to maintain and exceed normal running speed indefinitely — a consequence of the air-acceleration code not applying the same speed cap as ground movement.

Bunny hopping in Half-Life is a direct descendant of Quake's strafe-jumping, inherited through the GoldSrc engine. By jumping at the precise moment of landing and strafing in rhythm with the jumps, a player avoids the ground friction that normally limits running speed. Each airborne period allows the engine's air-acceleration code to add speed in the strafe direction; because the player is only on the ground for one frame before jumping again, ground friction barely reduces the accumulated velocity. In unpatched Half-Life, sustained bunny hopping allowed players to reach and maintain speeds far exceeding any designed movement option. Counter-Strike, built on the same engine, initially inherited the mechanic but Valve progressively capped air velocity in successive patches — a series of changes that became a continuous negotiation between the development team and a community that viewed bunny hopping as a legitimate skill expression. Speed-runners of Half-Life and its expansions developed optimal bunny-hop routes for the single-player campaign, and the technique remains one of the most practised skills in GoldSrc-engine games played competitively today.

Key Facts:
  • Inherited directly from the Quake engine via Half-Life's GoldSrc codebase
  • Avoids ground friction by spending only one frame on the ground between jumps
  • Valve progressively patched Counter-Strike to cap bunny-hop speeds over multiple updates
  • Remains a central technique in Half-Life speed-running more than 25 years after release

GoldSrc and the Quake Inheritance

Valve licensed the Quake engine to build Half-Life, modifying it extensively but retaining the core movement physics. The air-acceleration system that enabled Quake's strafe jumping transferred directly, and Half-Life's addition of a crouch-jump mechanic gave players additional options for maintaining speed through tight geometry. The bunny hop emerged within weeks of Half-Life's November 1998 release as players familiar with Quake movement immediately tested whether the same techniques applied.

Half-Life's single-player campaign had not been designed with bunny hopping in mind, which made it a powerful sequence-breaking tool. Sections designed to take minutes could be traversed in seconds; enemy encounters could be bypassed entirely by moving too quickly for AI to respond. Speed-runners built routes that treated the game's designed pacing as an obstacle to be circumvented by maintaining bunny-hop velocity through areas the designers expected players to walk cautiously.

Counter-Strike and the Ongoing Patch War

Counter-Strike's competitive community split over bunny hopping from the earliest versions of the mod. Players who had mastered the technique argued that it represented legitimate skill expression — a high-difficulty movement option that rewarded practice. Players who lacked the skill argued that it violated the game's intended tactical design, where movement speed should be bounded and predictable. Valve's response was a series of patches that progressively capped air velocity, reduced the speed gain from hopping, and eventually added a random velocity penalty for sustained bunny hopping.

Each patch generated community debate and, in some cases, split the player base between patched and unpatched servers. The Counter-Strike community's dedicated surf maps — custom environments designed specifically for sliding physics derived from the same air-acceleration system — represent a parallel adaptation of the engine's movement quirks into deliberate gameplay. Bunny hopping and surf maps together demonstrate how a single engine quirk can branch into multiple distinct play cultures, each treating the underlying physics as a feature worth preserving rather than a bug requiring correction.