Zigzagging Through A Strange Universe | |
By Anthony Bailey |
An Editorial by Anthony Bailey (QdQ) |
Quake done Quick is a collective of people aiming to push single-play performance to the limit by completing Quake and its relations on the highest possible skill levels in the shortest possible times. DeathMatch is cool, but speed-running offers another way to compete at Quake. If this sounds like fun, please do check out our page here at PlanetQuake, especially if you haven't already seen the Quake done Quicker movie.
I guess I could be described as QdQ's technical support. I write little
utilities and help brainstorm ideas, even though my own Quake abilities
are woefully lacking. In this way I get to bask in the glory afforded to
the very skillful players who comprise the rest of the
team.
One of the things I do is investigate the physics of
the universe
of Quake, trying to understand more about how the engine underlying
the game works so that we can turn it's little nooks and crannies to
our advantage. You could call it research if you liked, but basically
it's just running around, having fun and blowing things up same as
normal, except maybe with a few little numbers flashing up on the
screen monitoring the engine's vital
statistics.
It's experimental physics in a whole new universe. Of course,
sometimes I can double-check the Quake-C code underneath this
particular universe, which is something physicists in the real world
don't have access to.
Now, this article has two themes. The motivating one is to explain
some techniques that QdQ have recently discovered for making the
Quake-guy run faster than normal without cheating. These techniques
depend on a peculiar anomaly in the physics implemented by the Quake
engine that came to light in the course of my, er, research. You could
see the trick I describe as the Quake version of
DooM's strafe-running
.
The second, broader theme is a more general look at anomalies like this one; things that started as bugs, or at least were unexpected by id Software, but which have turned into well-loved features over the course of time. I take a fairly close look at some of these and explain some of the technicalities involved. If you are interested, you can use this article as DooM and Quake Physics 101. But you don't need to read the details if you aren't bothered; they are displayed separately from the basic article.
If you just want to know the very basic fundamentals of the techniques that let you move faster in Quake, you may want to jump straight to the simple explanations of how to zigzag and bunny-hop.
Back before Quake, there was DooM. Although DooM demos
(or *.lmp
s) are less flexible than Quake
*.dem
s, this is where the tradition of competitive
speed-running started. Indeed, DooM running still continues
today. Check out the
COMPET-N, which has
been going for years now.
In the DooM engine there was an physics anomaly that allowed a player
to run faster than usual using a special technique. By running forward
and strafing sideways at the same time, you could run along the
diagonal of a square in the same time that it took to run along either
of its sides. This anomaly and the technique that took advantage of it
became known as diagonal running
or strafe-running
.
A more specialized form of the anomaly,
the
wall bug
,
allowed one to get up to ridiculous velocities by strafe-running along
certain walls.
Speed-runners saw strafe-running as a feature. It was more awkward to do than normal running, since you had to face in an angle different from the direction you actually ran in, so you could no longer fire at what was directly in front of you. And maneuvering whilst turned at an angle was harder than normal maneuvering as well. But this was good - it meant that extra skills were required to use the tactic. The runners who were good enough to master strafe-running were the ones who could turn in demos with the lowest times.
DeathMatch players took advantage of the technique too. Speed kills in DeathMatch, and it kills your opponent. Strafe-running helped you cover more ground in the same time and get more of the goodies. And when you were on either end of a chase, whether in hot pursuit and ready to dish out some punishment, or low on health and running like a rabbit to escape your foe, the extra speed obtained by strafe-running could mean the difference between life and death.
Because of this, strafe-running became familiar to most DooM players. Although it was never intended to be there, it became a well-loved feature of the game.
However, id Software didn't take quite the
same view
of this "feature", understandably so. After all, this was pretty
strange behaviour that bore no relation to the physics of the real
world. At the end of the day, they saw it as a bug in the DooM engine
rather than a feature. As a result, the same anomaly didn't turn up
in the Quake engine. No matter what angle you run at, Quake attempts
to keep your velocity under the value of the server
variable
SV_MAXSPEED
.
Quake is relatively realistic compared to DooM, the universe of which
was a pretty bizarre place when all was said and done. There were
quite a few other strange bugs
and anomalies
in the engine apart from those I've already mentioned. Most of them
ended up adding to the game in the long-run, though. That's just part
of the magic involved in the miracle that was DooM, I guess.
Despite all the bug-fixing, the physics of the Quake engine can also
be used in some ways that id didn't expect when they programmed the
thing. One interesting anomaly is that you can jump higher by making
use of sloped
surfaces. A rather unfair one is that owning a faster computer
allows you to
swim
through water more quickly. But the most obvious is the trick known to
every Quaker - rocket-jumping. In fact, rocket-jumping is only one of
several applications of a more
general
principle
of Quake physics which can be briefly summarized by saying that when
you are hurt, your velocity is changed. Once you've understood this
principle, and have got to grips with the
way
explosives
work in Quake, you can take advantage of some of the finer points
of
rocket-jumping
.
Of course, in the real world, if you are hurt, your velocity doesn't change. (Otherwise hospitals would be rather confusing places in which to work!) So you could argue that this is a pretty strange thing to be going on in the game. id certainly put the "damage knock-back" effect into the engine on purpose, but they claim they never realized that players would end up making such good use of it with tactics like rocket-jumping, and that this ability is just a happy accident. (Although I've always wanted to know how you were supposed to get to that Ring of Shadows secret in E4M4 (The Palace Of Hate) without making an assisted jump into the teleport.)
However, fortunately for speed-runners and DeathMatch players
alike, id
have no intention of getting rid of rocket-jumping. After
all, although damage may not change your velocity in the real world,
it certainly makes sense that all the things that cause the damage
(like huge explosions and impacts) should. Also, At the end of the day,
Quake isn't about realism at all costs. It's about fun. And, as many a
Quaker will attest, rocket-jumping is as much fun as you can have
without gibbing something. Hey, sometimes you can even combine the
two!
So worry not; damage will affect velocity in Quake2 as well. In fact,
we understand that id are planning to make it work on monsters too, so
we can all have great fun pushing monsters off of cliffs with a few
blasts of the super shot-gun.
Strafe-running was fun for speed-runners and a useful tactic for
DeathMatch experts, but at the end of the day I guess such players are
only a small minority of the Quake-playing public, and the anomaly
made far less sense in terms of real-world physics. So until now, it
appeared that for Quake, players had to live in a more conventional
and realistic world where, despite being able to have fun blowing
themselves up into the air, it didn't matter what angle you
ran at, SV_MAXSPEED
was as fast as you could go.
An id game without any useful bugs? An id game without some strange,
arbitrary physics than a cunning runner can take advantage of? You
have to be
kidding!
Don't worry, the Quake done Quick team aren't going to let a little
thing like
SV_MAXSPEED
stand between them and low times!
What we've discovered is indeed a way to increase the speed at which
you run without cheating. The speed-up isn't as good as that provided
by strafe-running in DooM; at best, one can manage about a 22% speed
increase, which is approximately only half that which strafe-running
gave (that is, if you were doing
it right
.)
And, like strafe-running, it is awkward to use and takes a bit of
practice. But we think this is all to the good - the more skillful
you are and the more you practise this technique, the faster you will
be.
This is a brand new technique. Although we've known about it for some time, QdQ haven't yet made purposeful use of it in runs like Quake done Quicker. (We've recently learnt that the technique has also been independently discovered by some other people, such as Andrew Crawshaw and Ben "Mandalore" Kovalik.)
OK, here's how it works:
By doing this, you can increase your forward velocity from the
intended limit of 320 pixels per second to anything up to 410 pixels
per second, especially if you understand all
the technicalities
.
I call this technique zigzagging because of the tight
little zigzag path that you end up following. You meander around, but
not quite straight along, the main direction in which you want to
travel.
If your keyboard arrangement is anything like mine was, you'll
probably want to change it around a bit so that you have two keys in
convenient places that you can pound away at. Maybe you'll want to
define two new keys altogether for this sort of strafing; you just
need to bind them to +MOVELEFT
and
+MOVERIGHT
.
It is worth noting at this point that, in the past, conversions of the arcade games I talked about before that used this sort of control technique for evaluating how fast you were going were notorious for damaging input devices on the old home computers they ran on. So be careful you don't hurt your keyboard by pounding away at it too furiously. Of course, you can get as good or better results with this sort of left-right alternation using a joystick, a mouse, or perhaps best of all for very quick alternation of direction would be a track-ball. The best results can probably be achieved by having a different person altogether providing the speed, so that one player has control as usual, and a second pounds keys (or wiggles a joystick, or palms a trackball) whenever the first is moving in a straight line and could benefit from the extra speed. Puts a funny spin on the term "single-player Quake", though.
At this point, you are probably thinking "Hmmm, repetitive
behaviour... automation... MACROS!" And indeed you would have thought
that with Quake's complex console system of aliases and bindings, it
ought to be possible to make yourself a key that when pressed goes
forward and strafes quickly to the right and then the
left alternately. But we have not found a way to do this, for
various reasons
.
There's a second technique with utilizes the same physics anomaly that zigzagging does. It doesn't require you to hit any controls fast, so maybe some people will prefer it. It gives good performance, not as good as the best zigzagging, but not half bad once you get going.
Whenever you leave the ground, you carry on with the same horizontal velocity you had at the instant you jumped. There's no air resistance in Quake, just friction from the ground and from liquids. So the idea of this technique, which I call bunny-hopping, is to escape the frictional slowing effects by spending as much time in the air as possible.
Here's how it works:
It looks a bit strange, and you don't have quite so much instantaneous control (because you are up in the air most of the time), but it works, and since each jump lasts the best part of a second you don't need to worry about hitting the controls so fast.
Both these new techniques need practice to get good at, and some
feedback to let you know how you are doing when you practise can be
obtained using a QdQ Quake-C modification
.
How useful they will be in real-life play remains to be seen. It takes a bit of practice to get good at zigzagging, but you can certainly achieve better results using it. Although QdQ haven't utilised the technique in contests or in our long demos yet, we know you can use it to get better than normal times. We expect speed-runners to start using it slowly but surely, and maybe more so as people begin to win contests because they used it.
Zigzagging may also turn out to be one more trick it is useful to have
up your sleeve if you are a DeathMatch player, I expect. DM isn't
really my scene (am I allowed to say
that? )
but even I know there are times when speed is of the essence
(especially, when a healthy Quadded player is in hot pursuit of a
worried unhealthy one!) So the extra speed-up could well end up
saving your life or giving you that extra gib in some
circumstances. Just as nobody plays seriously without running rather
than walking, being faster than your opponent because you have
mastered zigzagging or bunny-hopping can do you no harm.
It will be interesting to see whether or not zigzagging or bunny-hopping become an unintentional feature of Quake, just as strafe-running did before them in DooM.
Right, I want to blast something nasty into little giblets. Time to do
some more research I
think...
- Anthony
Comments on this Editorial? Send it to Feedback.