Bunnyhopping in quake:運動模型如何允許這樣做?
我在 Quake 的 E1m1 中觀看了這個關於 bunnyhopping 和 speedrunning 的有趣影片:
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:
- Turning in a tight circle while strafing in the same direction provides additional speed
- Zigzagging (rapidly pressing Strafe left and Strafe right) while going forward also provides additional speed
- 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.
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.