Live data from Hacker News

Bunnyhopping from the Programmer's Perspective (2015)

adrianb.io

11–20 of 67 posts

Re: Bunnyhopping from the Programmer's Perspective (2015)

#12
Always nice to see implementation-focused explanations of things that are usually taught/learned by building intuition.

This[1] video does an excellent job of explaining the mechanic with visuals and code snippets.

Carmack's public post[2] on the "bug" of strafe-jumping is endearing in light of how much it influenced game design in the following decades.

[1] https://www.youtube.com/watch?v=rTsXO6Zicls

[2] https://www.gamers.org/pub/archives/plans/johnc@idsoftware.c...

Re: Bunnyhopping from the Programmer's Perspective (2015)

#13
For those interested the link below does a great job of demonstrating strafe jumping, which is similar to bunnyhopping.

https://www.youtube.com/watch?v=sXat1AEtuT8

This is great example of how an accident can contribute towards such a fun mechanic into a game. This ultimately ended up spawning new game types where a mastery of movement was a key skill.

Re: Bunnyhopping from the Programmer's Perspective (2015)

#14

The described way of increasing maximum velocity does not look realistic, it is not based in any kind of physics or bio-mechanics. So, is it a suggestion to implement a broken game mechanic.. so that experienced players can transfer their skill to other FPS games? Nice..

Getting to play again after being shot in the face is not realistic either, yet pretty much all FPS games implement this feature. I wonder why?

Re: Bunnyhopping from the Programmer's Perspective (2015)

#16

The thing I don't understand is why you would limit velocity in such a strange way to begin with.

accelerations map directly to actions of the user (forces). It seems fairly natural, not strange, to control velocities and positions in terms of accelerations. The same thing happens in real life.

Re: Bunnyhopping from the Programmer's Perspective (2015)

#17
Bunnyhopping has spawned different game modes in counter-strike aswell, separate from competitive play, including mainly kreedz's kz [0] and bhop[1], which are really really very hard by themselves and a lot of fun. I really like bhop in particular because there's a meditative thing to it.

Surfing [2] was another kind of emergent behavior in counter-strike, I believe, where players can slide through slopes in a certain way and also gain speed plus air strafing.

0: https://www.youtube.com/watch?v=wMIbJbQ2iHc 1: https://www.youtube.com/watch?v=BXs0rFitP54 2: https://www.youtube.com/watch?v=BXs0rFitP54

Re: Bunnyhopping from the Programmer's Perspective (2015)

#18

The described way of increasing maximum velocity does not look realistic, it is not based in any kind of physics or bio-mechanics. So, is it a suggestion to implement a broken game mechanic.. so that experienced players can transfer their skill to other FPS games? Nice..

There are tons of mechanics that don’t make sense from a simulation perspective but are fun and add mechanical depth to a game. A very common one is the ability to carry multiple rifles in-combat. But generally the movement in-combat is accelerated and allows for higher control, while the penalty of getting hit is much lower.

Re: Bunnyhopping from the Programmer's Perspective (2015)

#19
When original Quake code became available I spent a bunch of time analyzing the movement code to help my QW clan improve agility during matches.

> As a decidedly skill-based mechanic, competitive players love bhopping because it is so hard to master.

I have been part of QW clan somewhere between 1998 and 2002.

People learned hopping not because it was hard to master but because without it you would be at an extreme disadvantage on some maps (especially DM3 and DM6). Additionally to being able to move faster around map hopping has some other advantages: being able to jump some distances that normally would not be possible to jump (like rotundas on DM3 and DM6, over lava on DM2, etc.), being further from ground makes you get less damage from rockets striking ground and also because when you run fast constantly jumping and bobbing right and left you are harder to target directly.

Also, hopping feels good:)

Hopping isn't hard. I have been teaching people hopping by explaining how it works and giving step by step exercises. I have never had any difficulty teaching people to do this.

> This means that the player has a single frame to input the jump command without losing speed - another reason why bunnyhopping is so hard!

I don't know Quake 3 code, but at least for QW this is not true.

You can schedule the jump before you hit the ground.

What you do is the following sequence:

1. Hit the jump 2. While you in air, release the jump and press it again. Keep the jump key pressed as you are heading you are falling to the ground. 3. When you hit the ground the game engine will immediately execute the jump without applying friction penalty (provided you don't get damaged due to fall, I don't remember that part too well).

When I was teaching people to bunny hop one of foundational exercises was to learn to release and press jump again mid-flight, before you even start to learn the bunny hopping movement. You learn this standing in place before you add rotation (keep hopping while you rotate) and then add movement (start using w to move around). Only once you are comfortably timing your "reverse" jump mid flight you add strafing to the mix.

Re: Bunnyhopping from the Programmer's Perspective (2015)

#20

The thing I don't understand is why you would limit velocity in such a strange way to begin with.

It's an artifact of the projection also being used to slide off walls smoothly, and then just reusing that idea - which could be a accident, or an "accident" (choosing by what feels better).

Goldsrc surfing was most exploitable in the form of "wall-running" by strafing against rounded surfaces(e.g. the cylindrical sewer pipe interiors in cs_siege and cs_militia, I think, both did this). Same bug, different mechanism, easier to control.

Post reply on HN