I was watching this interesting video about bunnyhopping and speedrunning in Quake's E1m1:

I must confess I've never really understood how bunnyhopping works (in Quake, or any other game for that matter).

The video provides a few clues, such as:

  1. Turning in a tight circle while strafing in the same direction provides additional speed
  2. Zigzagging (rapidly pressing Strafe left and Strafe right) while going forward also provides additional speed
  3. Jumping itself doesn't provide a speed boost, but rather preserves speed because there is no friction when you're airborne.

But these facts don't elucidate why bunnyhopping was possible in Quake, yet impossible in other games like Unreal.

How does the movement model of quake allow for the increase of player velocity through bunnyhopping and other techniques?

I am also interested in how bunnyhopping works in other games like Quake 2, Half-life and Half-life 2, but as I understand it, the movement models are slightly different, and so I'll limit this question to Quake.

I should also note that the Quake source code has been available since 1999, so this question ought to be perfectly answerable.

  • What is preventing you from using said source code to find an answer? – Dr_Bunsen Oct 11 at 13:45
  • 1
    You've already answered your question in your bullet points. There is no friction in the air and strafing while moving your mouse in the same direction makes your character accelerate so as long as you time your jumps correctly to not get slowed by the ground you keep generating speed. – Cloudzzz Oct 11 at 15:04
  • @Dr_Bunsen Not knowing code, mainly – Ingolifs Oct 11 at 19:49
  • @Cloudzzz I Haven't. There is some aspect of the quake code that allows this to happen that is not present in the code for other games, like Unreal. – Ingolifs Oct 11 at 19:49
  • 1
    Sorry, we don't deal with game coding and such. – Wrigglenite Oct 11 at 21:56

Bunnyhopping an artifact of how the game handles space, and specifically unit speed along diagonals. Without a deep understanding of source code, its difficult to get more specific than that. Some games, especially ones that are built on the source or HL engine, use physics that causes bunnyhopping to be possible; some of the later games using this engine just preform speed checks at regular intervals to prevent this.

If you're interested in the mathematics behind why this happens, I would suggest reading this article that explains it.

Not the answer you're looking for? Browse other questions tagged or ask your own question.