Recently I found jb0luck.txt file on my old hard drive that I wrote between 2009 and 2011. Basically it is a deep dive into jumpbug technique and every detail that affects it. Most of existing information on this topic is incorrect, lacking, segmented, impractical or just very puzzling. Purpose of this article is to demystify it, organize all available and missing information in understandable practical way.
I don't know why I never released it publically before, but I admit I was slightly demotivated to speak about it openly due to overwhelming ignorant attitude of some individuals in the past. Instead I mostly shared all my knowledge in private with many people who bothered to ask and have a conversation directly, never intended to keep it a secret.
I don't have any expectations, simply sharing piece of my history. I'm aware that this is probably a lot less relevant nowadays, but a few people whom I shared it with recently - found it to be an interesting read, so I hope some of you may enjoy it too.
Press "read more" to expand. XJ and Pastebin links.
Jumpbug is technique to avoid fall damage. It can be done while falling on anything solid where player can stand. Jump AND unduck must be performed at the same exact moment (press space and release ctrl), when player is exactly between 0.00 and 2.00 units above the ground (unducked) - jumpbug landing zone, while still in the air and not touching the ground yet.
Is it actually random? How much luck involved?
If conditions described above are met precisely then jumpbug will happen every time without exception. However there are 3 major factors that make it random. It is wrong to describe jumpbug as luck-based, because all 3 of these factors can be negated. So lets have a deeper look what makes it random and how we can deal with that.
1. JUMPBUG CONDITIONS ARE OFTEN IMPOSSIBLE, 2 units landing zone happens to be in between frames.
Lets unravel that statement. CS1.6 game engine is fps based, meaning it processing all events and key strokes once every frame. Recording standard is 100 frames per second, so processing happens only once in every 0.01 second. If there are no events - nothing happens and engine waits for the next frame, if there are many events - they are put on hold and processed once 0.01 second passed since last frame. Maximum falling speed is 2000 units/s, which is about 20 units per frame. When player falls 20 units per frame he needs to appear exactly within 2 unit high landing zone when that frame executes jump and unduck (for jumpbug to be successful). If you do the math - chance of being in the jumpbug landing zone is 2 out of 20. 10% just to have acceptable conditions for jumpbug is terrible. But we actually can force ourselves inside of this 2 unit landing zone 100% of the time with tricks and preparations.
First trick (A) to have stable 100.0 fps without dips and drops - that will ensure space between frames is exactly 0.01 seconds. Second trick (B) is to choose THE RIGHT spot/conditions to start your drop/fall (towards jumpbug landing zone). With constant falling distance and frame lengths (A+B) all attempts are identical - you are guaranteed the same exact height above the ground right before you hit it, every time! If it happens to be in 0-2 units landing zone - you have perfect conditions for jumpbug, otherwise 2 unit landing zone happens to be between frames and jump+unduck keystrokes can never be executed at the right height above the ground - player moves past 2 unit landing zone in between frames execution times and jumpbug is impossible. In one frame player is way higher than 2 units above the ground, next frame he hits the ground. To find such perfect spot we can use jbtrainer, use different heights or jumping off with walk-off/jump/doubleduck/bhop/duckbhop/sbj to manipulate total fall distance and appear perfectly inside 2 unit landing zone, one frame before touching the ground.
Remark by FAME:
"Stamina (aka fuser2) also affects your jump height. The more time you wait before making 2nd jump (up to 1.315 seconds) the higher you jump, so if you found a spot where JB seems impossible to do, you can try jumping off with bhop 1/2/3/etc frames on ground."
Unstable fps and drops make frame length slightly longer than 0.01, which make execution timing random every time, falling 20 units per 0.01 second becomes 21 units per frame and more to adjust for real time, so jump+unduck commands execution become randomized related to the ground and we have unpredictable conditions. 100.0 stable fps can be achieved by optimizing your OS, removing active tasks, using CPU allocation/governors etc. Assigning Counter-Strike process to CPU first core usually does wonders for stability even on unoptimized maps (CPU Affinity in task manager, core #0).
If you look at jumpbug in gigablock wr - drop starts with doubleduck off the edge, with 100.0 stable fps doubleduck provides additional falling height to land player perfectly into 0-2 units landing zone for jumpbug, the moment when frame can execute unduck and jump. On giantbean I myself do edgebug with being ducked to have perfect height for landing into 0-2 units landing zone afterwards, with 100fps and unducked edgebug jumpbug is impossible. If you look at other jumpbugs - they happen from specific places with specific fall height to ensure 100% jumpbug condition under 100fps: wigbl0ck 1st jb starts with bhop and fall, 2nd just with jump and fall, 3rd with doubleduck from second top platform, most other conditions would make these jumpbugs impossible with 100.0 fps and absolutely random with unstable fps.
2. SPACE INSTEAD OF MOUSE WHEEL
Scroll does not make you jump every frame, cs1.6 engine has to skip at least one frame, so even while perfectly releasing ctrl in the exact landing zone - scrolling makes jumpbug success more random. Its surprisingly easy adapting to time space press and ctrl release at the same moment perfectly. From my personal experience its often more than one frame skip with scroll jump. After some tests performed with NumB and eDark we came to results that in perfect conditions (low falling speed, good concentration, perfect height for landing zone etc) best jumpbug success rate is 50% with space, and only 25-33% with scroll. I don't know how to explain these results, maybe I had bad mouse wheels or there are some other factors in play, but in the end its a big difference and other people have seemingly similar results in their own experience.
Do I think scroll is useless? No, I used scroll on wigbl0ck for the first jumpbug, simply because right after strafing to cover considerable horizontal distance - its hard to adjust wrist, place fingers on both ctrl and space and have good concentration on landing. For me it was way easier just to pay attention to ctrl timing with my left hand (after stopping to strafe) and use scroll for jump right before reaching jumpbug landing zone, a bit more random, but after strafing my ctrl+space timings were always awful. If after exploring both options properly you happen to have better success with scroll - you should use it.
3. HUMAN FACTOR
There are just two components: train you muscle memory for correct ctrl release in combination with pressing space (or using scroll instead if you wish); and good concentration for timing exact jumpbug landing frame. Okay, human factor brings quite a bit of randomness no matter what, but still can be minimized with experience and understanding what we dealing with in here. Depending on your definition of luck I would argue there is none involved at all.
First component requires only practice. Second one also relies on practice, but additionally you have to know exactly what your view and player eye height is when standing on the surface where you want to perform jumpbug. That should give you an initial idea of what 0 units above the ground should look like in that place. Although your eye height change when ducked in relation to player model center. Standing player eye sight is 57 units and in ducked position it is 5 units lower (when player is in air, because player center stays the same). You can see this effect by setting gravity to 0 and going onto a step and float off it, when free floating in 0 gravity and hitting ctrl you can see eye height change clearly. But that effect has very little impact in the end. Seeing ground is also not very important, focusing on a more distant objects and background may be a little harder, but can give good enough idea of your exact placement while falling and when to make jumpbug, like on invisible ground.
Important thing is to understand that jumpbug execution relies on predictionary reaction. From seeing what happens on screen, reacting to make a decision in our brain, to passing signal through synapses to muscles, to actually moving fingers certain distance to press keys etc. - all that is not instant and takes a lot of time, we simply have to figure out at what point of free fall we should start process of executing jumpbug, before player actually inside of the landing zone. We have have to concentrate on player movement (free fall) and figure out what general timings work individually with all these little details by trial and error.
(!)To practice all that and see mistakes more clearly in order to make correct adjustments - use a tool called jbtrainer, an amxx plugin made by Numb that provides decent information for all of that. This plugin makes it really easy to train jumpbugs when you understand every screen data it provides. On a side note 0.031250 units is cs1.6 player collision distance (additional player thickness to metigate game stuck bugs) so jbtrainer will show you jb between -0.031250 and 1.96875 units above the ground, so don't freak out. All information above is not secret, but I realize some of it hard to understand and extrapolate from existing pieces that exist in public, that's the reason for this article - to explain it all as much as possible.
Configure and optimize your PC to have stable fps.
Use jbtrainer plugin to choose perfect fall trajectory
(or see how others perform it in specific spots).
Use jbtrainer plugin to train and adjust your timings.
Initial learning works best from small heights
(f.e. almost any kz_*block map is perfect).
Try to get a hold of using both scroll and space.
WHAT MAKES JUMPBUG POSSIBLE (technical engine information found by Juice)
"At both, start and the end of the frame we aren't touching the ground. There are two important reasons why jumpbug is even possible. First one is that unduck code goes before the jump code, meaning that if we execute both commands at the same time, unduck still will be executed first. Second and not any bit less important reason is the teleport-to-ground-check. Allow me to explain what this is. Have you ever tried to get up a ladder while being ducked and touching the ground? If so, you must have found that engine just keeps teleporting you back to the ground. Reason for that is slow velocity. For you see, during the frame (where movement is executed), engine may check several times is there a ground 2 units below your feet, and if so - just teleports you down. Good news is, that this check is also performed each time you unduck. Meaning that when you unduck and become stretched out, you will also be teleported on ground (if there is one 2 units below). So lets pretend that we were falling at incredible speed, unducked, and got ourselves teleported on the ground... Now if we jump, our velocity will become positive, sending you up, and removing our 'bond' with the ground. Conclusion of this is simple: we weren't touching the ground when frame started, and we still aren't touching it when frame ended. Plus now we are send upwards with jump."
I'm pretty sure duckbug and slidebug work by the same principle - player leaves the ground one frame after unduck and technically never in contact with it. Instead of a jump for slidebug - it is upward slide, and for duckbug player simply moves past unduck contact point of a ramp and next frame is above the lower part of said ramp, making player to be disconnected from the ground next frame in all cases.
After successful jumpbug player is slowed down (horizontal speed) to below 150 units/s (players can make jumpbugs during normal bhops and that will slow them down dramatically). With normal jump you can climb on top of 63 unit high objects, with bhop it is around 54-56(?), despite that jumpbug resembles bhop - player still can jump up 63 units from the ground (although if player had perfomed a jump/bhop less than 1.315 seconds before doing jumpbug - stamina aka fuser2 mentioned above kicks in and jump won't be as high). At the moment of jumpbug player is still above the ground (0-2 units), but jump that follows is from the exact ground level, so that above ground distance does not add up to 63 unit high jump. Jumpbug can be done on top of anything: ground, ramps, invisible surfaces, moving map parts, other players, moving players, players who also fall down.
Common misconceptions: you have to have insane reaction, high monitor refresh rate and superhuman eyes to see the exact frame where you can perform jumpbug etc. and that jumpbug is almost impossible technique to train in a short time. I heard all kind of asinine bullsh!t that claims to prove jumpbug is luck or can't be done without cheating, even from experienced people. As mentioned above reaction is predictionary for doing jumpbugs, just need to learn what timings work for you individually. Jumpbug is also just as easy to train as longjump if not easier. Hardest jumpbug is falling with speed 20 units per frame and simply catching the right frame that is 0.01 second long. In longjump you prestrafe with ~275 units/s speed, that means 2.75 units per frame, but good jumpoff is less than 1 unit typically, so you still have only 1 frame where you are between 0 and 2.75 units from the block edge. Maybe less than 2.75 because of the arch trajectory of prestrafe. Anyway in both cases you have only one single frame for action, action for jumpbug is more complex at that moment, but longjump difficulty only increases after jump and relies on a lot more actions and timings/sync. Why jumpbug is harder you may ask? I don't think it is, not by a large margin at least, its also very different skill, imo its just not popular, not understood properly, mystified, and of course just a lot less practical part of kz compared to longjump.
IN THE END
All this information was quite hard to figure out, even though eDark and NumB helped me a lot, I still had to try a lot of different things myself and reach complete understanding of all the nuances that contribute to performing jumpbug. I made My first jumpbug in late 2007 and not long after recorded national record on gigablock. It was pretty weak and jumpbug was still random for me. I installed jbstats on some public servers and found appeal in trying jumpbugs in different parts of different maps. At that point I got a feeling I had better chances with ctrl+space rather than ctrl+scroll. In late 2008 I recorded redrock where I did 1 jumpbug, but failed that run right after, posted it on XJ forum failed wr attempts thread, doubt anyone still has the demo, maybe Flibo... in 2009 I started to communicate with NumB more closely and after getting more tips figured out pretty much the whole formula for enhancing my jumpbug skills. Results skyrocketed considering I already had pretty good timings and I did redrock wr and I started doing random jumpbug tricks, shortcuts and giantbean/wigbl0ck records etc. It was a long road for me, however I did not dedicate that much time to it as it may appear as I was never a very active kz player, so I believe its relatively easy and I've seen people becoming good at jumpbugs in a short time.
Original jb manual -link-
Very thorough, although quite confusing to many, too technical and not 100% accurate in a few instances.
You must be logged in to make comments on this site - please log in, or if you are not registered click here to signup
Guests: 2, members: 0
Total members: 548Newest member: lxr
You must be logged in to post comments on this site - please either log in or if you are not registered click here to signup
• 09 Aug, 19:51
• 26 Jul, 19:05
• 29 Jun, 10:37
• 25 Jun, 21:27
• 17 Jun, 19:34
• 25 May, 18:02
• 17 May, 21:23
• 17 May, 18:45
• 17 May, 18:39
• 17 May, 18:38