Username:
B
I
U
S
"
url
img
#
code
sup
sub
font
size
color
smiley
embarassed
thumbsup
happy
Huh?
Angry
Roll Eyes
Undecided
Lips Sealed
Kiss
Cry
Grin
Wink
Tongue
Shocked
Cheesy
Smiley
Sad
1 page
--
--
List results:
Search options:
Use \ before commas in usernames
Hey Ho Let's Go
Help tidy up the Quake Knowledge Base:

http://speeddemosarchive.com/kb/index.php/Quake

A list of things to add:

http://speeddemosarchive.com/quake/misc/quake1-tricks.txt
Thread title:  
I love YaBB 1G - SP1!
Nice read Thomas.

I just surfed by and wow, amazing to see that new blood is still joining the community. Good stuff. I never really got to the bottom of quake physics, but I have a few thoughs that may or may not help new players, so I decided to write a few words. I'm probably wrong on many ideas, but somehow it made sense to me and I also wanted to put down some (rather murky) memories from the good old days as well on the off-chance that someone cares.

I Theorycrafted alot on Quake physics "many moons" ago, but I was never very code-savvy, so I didn't go into the code itself to look for answers. In my own way I sort of tried to understand how things worked, but I never got around to post anything on the theory behind the actual movement.

First off: I saw Dex refer to the 100m bunnyjumping as "Kay-style", but there was a few guys that had this (or similar) style before me, so to me it was always "Weixing-style", cause I saw his demo first. I know Jozsef and Timo (and probably others) did similar stuff also, so I can't take credit for inventing this style. A similar style was used in Quake 2, so it was affectionately called it "Quake 2-style", but it wasn't really quite the same as Quake 2 either. We probably all tried it because of inspiration from Quake 2 though, so maybe "Quake 2-style" would be the most politically correct name.

In newer games such as Quake 3 or Quake Live, bunnyjumping is implemented as an actual feature, but in Quake 1 speed-amplification was sort of a "happy accident" (like Quake 2's double jump or Quake 4's slide/crouch jump) that I think was discovered in late 1996 in Regular Quake/Real Quake (RQ) or NetQuake as it's often referred to. It didn't just go from crawl to a rather sophisticated bunny-style over night though, and it wasn't until later in 1997-98 that people were starting to use it online in deathmatches, to give themselves an advantage. Of course Quakeworld was released in december 1996 and as we got further into 1997 speed was picking up fast. Not everyone moved to QW though, I was still playing some RQ in 1998 (but more and more QW) because RQ had such a solid feel to it. To me QW felt "light-weight" somehow, but it was more fast-paced and had better netcode for weapons/aim/player
positioning and proxy-support was developed. So the RQ community got smaller by the day and eventually "everyone" moved to QW.

[Off-topic Rant]
You should have seen my team-say scripts for RQ. With no proxy support for reporting Armor/Weapon pickups, locs and such, I developed my own configs to do all this manually. Shouting messages by dipping into different config-files in the Quake-directory. If I pressed for example the 1 key I would go into team-position config file and report "I'm at GA" (Green Armor). If I pressed Space+1 together the Space key would open the enemy-position config file, and temporarily rebind the 1 key to say "Enemy at GA". 2 for YA, 3 for RA, and then mega, Quad, Pentagram and so forth. Further down the numbers-row the messages turned into pickup type messages like "Ra taken by me", or using the space key "Ra taken by enemy". Here's an example of how I did it. Crude and micro-intensive, but it worked for me. Example:

[Autoexec.cfg]
Alias +enemycfg "exec enemy.cfg"
Alias -enemycfg "exec team.cfg"
bind space "+enemycfg"
[Team.cfg]
Bind "1" "Say I'm at GA!"
[Enemy.cfg]
Bind "1" "Say Enemy at GA!"

Ever since then I've always used YGHJ in the middle of the keyboard for all FPS type games; the WASD or arrows area of the keyboard just didn't have enough surrounding buttons. I tried to get clanmates to use this config, but in all honesty the left-hand workout you got in a clanwar was just devastating and everyone refused. Another thing was that the number of hotkeys I needed meant that I wanted as many buttons on the mouse as I could have. I felt as if my right hand was underutilized, and I discovered Logitech Mouseman which had 4 or 5 buttons or "inputs" that I could configure, and that meant I didn't need as many keys on the keyboard for weapon swapping. So I configured mouse1 to shoot rockets, mouse2 for +attack, thumb button for firing the Lightning Gun. Later on with newer Mouseman mice with more buttons I fired most weapons straight from the mouse, and when I got into speedrunning, movement was more important to me than firing/aim, so I moved the jump button to the mouse to allow my left hand to be alittle quicker on the keys. I gave up on RQ sometime in 1998, and QW sometime in 2001 due to ping issues and bad ISP's in my area.
[/Off-topic Rant]

So to my knowledge it started in late 1996/early 97 with zigzagging and wall-hugging. Some have suggested Illka as one of the pioneers of bunny-jumping, and that may very well be true, but to be honest I had never heard about him when I first started exploiting speed tricks. I don't know the early history of SDA, so that should probably be commented on by the early SDA staffers. I just sort of figured out stuff on my own throughout 1997-98 based on rumors that were floating around on the net back then and stuff that we discovered on late nights when we were just dicking around with rocket jumps, tired of all the fragging. Heck, I still remember trying to master the curve-jump at the moving platform in the Red Armor lava area of DM 2. Again based on rumors that someone had jumped clean around the wall without touching the platform or falling into the lava. A seemingly impossible jump. Of course at that time we didn't know anything about aircontrol either.

I got my Quake copy early in the summer of 1996, and at the time I had a crappy Cyrix processor that was lagging extremely, so I had to buy a Pentium 150mhz (I think) to run it decently. I remember that I was amazed by just watching the intro demos (demo1, demo2, demo3). The "freelook" control and the aim of the guy who recorded it (John Romero?) was so smooth. Of course we we're getting into mouse-aim back in Doom, but we were locked in pitch, so we couldn't look up or down using the mouse. When Quake arrived it all changed, and we had full freedom of aim, but it was pretty hard to get control of. I played for a long time with only the keyboard and pageup/down keys to look up and down. It wasn't before I started getting together regularly with some Swedish guys in 97 that I really got control of the aiming aspect. But by then I had figured out that clinging to a wall was equal to greater speed. I can't remember that I exploited wallhugging in Doom, but I guess it was discovered there. Rocket-boosting was discovered in Doom for example. For me those were the days of holding down the Alt key to strafe with the arrow keys, and firing with the Ctrl button. Nuff said.

Zigzagging is the art of running forward, always touching the ground, while mashing the strafe left and right keys alternating. Wall-hugging is running forward while strafing up against an adjacent wall. The downside to both these techniques is that ground friction will determine how fast you can go. It's still faster than plain running though, so it's useful to know in areas where you are unable to jump, or if you need to go up a staircase or similar.

Bunnyjumping started for me sometime in late 1997, possibly into 1998. As mentioned earlier I preferred RQ to QW for a while, partly because of it's solid feel, but also because I had some friends that swore by that version. I had a great ping back then on ISDN, and pinged about 80-100 ms to Denmark, Sweden and Finland (which would later gradually deteriorate to 150-200ms pings and massive packetloss around 1999-2000 due to congestion). Bunnyjumping in RQ on your own local server is hard compared to QW, but if you add say 100 ms ping it's even more difficult in RQ, though still easy in QW. I was never able to put together a continuous string of bunnyjumping online on RQ, so I would do the single "boost-jump" just over and over again, and thus reach greater speeds in small bursts. Even then I felt it added something fun to the gameplay. Every move was like trying to lasso/rope an animal, just a fun little thing you could do while searching for someone to frag. I quit QW sometime in 2001, and got into speedrunning in 2003 I think
(though I'd known about it for years), but even after practicing bunny jumping in the regular Winquake.exe, Glquake.exe and later Joequake.exe, doing it online with 100 ping was still very difficult. I've never studied netcodes but I'm guessing the QW client handles movement in a very different way compared to RQ.

So how to explain how you can generate speeds in excess of what the server allows. Well, lets make an example. Probably all games in a 3d environment use a Grid type system to determine position and velocity of the player. Lets for arguments sake say that in Quake the Grid square sides are 1 unit long, and that the server will allow you to move 1 unit 320 times pr second (sv_maxspeed 320). If you run North, East, South or West, you will be moving 320 units in one second. But what happens if you run North-East (or that the engine thinks you are doing it)? Since the diagonal of the square is 1.41 units long you'll be covering 41% more distance, while still moving 320 units pr second.



Moving across the Grid while trying to utilize as many diagonals as possible is what I believe creates speed. This doesn't explain everything though, since in theory you should be capped at about 450 units pr second. So lets examine what happens when you jump off the ground. First of all, you have no friction while in the air (you're not rooted to a plane where certain rules apply). There's nothing there to slow you down. The engines rules while airborne is basically that you maintain whatever speed you had when you left the ground, until you touch a surface again, where different rules apply. But since we have a Grid system to determine our position and velocity in the horizontal plane, what happens when we in addition to that start moving in the vertical plane as well. We're no longer moving on top of the square, but we are moving through a cube. Travelling from vertice to vertice, so to speak.



The diagonal of the cube is the square root of 3 (1.73). This hints towards a theoretical maximum speed of around 550 units pr second if we move continually through opposite vertices of the cube. It's not that interesting though for speedrunning, because with gravity enabled as normal, we don't have full control over our movement in the vertical plane (we jump up and fall down), so the theoretical maximum speed of 550 units will never be achieved in a situation where we are only allowed to move from one vertice to another adjacent vertice.



What if the rules are modified as you progressively gain speed. Maybe when the speed picks up, the engine have to reduce the workload of the tracking and must skip some of the vertices, or the maps tracking "check-points". There is a maximum speed in Quake. Boosting around with Quad rocket jumps should achieve that speed, but the faster you move in a direction, the harder it becomes to utilize the diagonals, since you're mostly travelling in one direction (think more North than North-East across the square surface).

Most of the speed generation is done on the ground (accelleration-jumps or boost-jumps if you will), but in Quake 1 you can actually also create speed while in the air, in a no-gravity situation, from a dead standstill. I think Jozsef or Peter made a script that took this to the extreme, but it's doable to some extent manually, and you'll often see people "wiggle" their way forward while in the air, to reach a far ledge, or to start a forward motion coming out of a wind-tunnel, or a vertical drop. So there is even more mystery at play that I have a hard time explaining.

I think this is what I was thinking back in 2003-4, but this wall of text got so long that I've forgotten what I'm doing here, so I'll draw up some quick pictures. Some of the coders should definitely look into this very interesting subject. I probably will have to look at this again since I'm alittle tired. The point wasn't to provide a definitive answer, but maybe get a discussion going.

And Jozsef: Fix widescreen support, my brain can't handle 4:3 aspect ratio anymore. Frag on guys! =)

Hey Ho Let's Go
Hi Kay, nice to see you're still alive and kicking :-) Come join #qdq some time.

I read your post with great interrest, and I'll try and comment on it later.
sda loyalist
Wow, Kay posted Smiley
Some interesting stuff, though I think the diagonal movement thing doesn't work quite like you described though. It certainly does on Doom, where merely holding forwards and right makes you move faster, but on Quake if you just hold those keys on the ground nothing special happens. It's something to do with it adding discrete chunks of velocity onto your total and not normalising it afterwards.

Still, a lot of that is spot-on. You might also be interested to find out that we've completed solved the "lightning shooting through walls" bug!
I always felt that just turning(as in looking around) around has influence to, maybe you techheads could similute a situation where there's no velocity and friction,start with a fixed horizontal speed (i doubt you can gain speed with just turning when speed=0), and see if you increase this with just turning.

And if so most likely the xy vs xyz think kay rambled about on moving, aplys to looking

It be intresting to compare three wiggle scripts where one uses just wiggling of diagonal movement, one just looking around wiggling and one uses both.

Gee I stimulate using scripts? Hell froze over Smiley

[edit: that was Orbs, by the way]
things that are/might be missing:
slopejump, also downwards, not only upwards

double grenadejumps off monster
triple grenadejumps off monster
ogre grenadejump + another midair (could maybe be put under double ogre gljump) - think rutgers new short demo on jailbrk
death knight jumping, is that off their fire (or whatever it is?) - but death knights and knights can also boost you up a bit higher, that's another assist.
fiend boost + rl (e1m5 er or nr?)
fiend boost + rl (elin)
fish boost (someone got a tiny burst of speed from that didn't they?)
boosting on top of fish

monster manipulation:
getting monsters killed by traps
shamblers vs zombies
monster infighting so everything dies without player doing anything. I had that idea, and connor showed it could work with a demo he posted in the forums. vore vs death knight I think?

getting killed by monsters should be in somewhere too. like how fiends or dogs sometimes can cause higher damage than normal (landing on top of you). and gibbed by shambler etc.

quad usage should be there somewhere too. how it changes killing stuff. like zombies etc.

solid monsters. i.e. fiends sometimes becoming solid for a short period of time after being killed.

Coop should become another issue, boosting each other etc



other stuff:
isn't "wiggling" a better term than "waggling"?
Hell is where the heart is.
Quote:
fish boost (someone got a tiny burst of speed from that didn't they?)


Daniel Anderson, Court Despair Nightmare Run, January 2002.
I love YaBB 1G - SP1!
Quote from guest/Orbs:
I always felt that just turning(as in looking around) around has influence to, maybe you techheads could similute a situation where there's no velocity and friction,start with a fixed horizontal speed (i doubt you can gain speed with just turning when speed=0), and see if you increase this with just turning.

No you can even gain speed from nothing... (see for example most e1m8 demos). You of course need to press forward or strafe keys... (otherwise turning has no influence on the speed)

I have experienced a long time ago. I try the map 100m, putting at the beginning sv_gravity to 0. So you never touch the floor, there is no friction, but you cannot run too. However you have air-control. If you start from nothing, you can gain a little speed from pressing forward, then with "bunny", you can get quicker and quicker (see the demo 100m_sv_gravity0). With better "bunny" you could go much faster. I even think that for a 200m, a sv_gravity 0 demo could be faster than a normal gravity. Of course at the beginning with normal gravity you could go faster, but the top speed in normal gravity is far more limited, as you lost speed each time you touch the floor. In sv_gravity 0 you never lost speed, I think the only limit is max_velocity, which is 2000.

I also try a demo with sv_friction set to 0. However there is a new "trick", I am not sure how it work, you can even do some "bunny" on the floor, so you gain much more speed as the floor-control is better than the air-control, and as you do not lost any speed with friction you can reach ridiculous speed very quickly...
Attachment:
sda loyalist
Yeah, I recorded a few runs on some levels (and possibly a contest) using sv_friction 0, as a joke. It's quite the insight into how the quake physics work.