Note: Only IWAD game entries link to this page, in order to avoid insane clutter in the header. PWADs should link to GameResources/DoomEngine instead.
Introduction to Doom movement mechanics:
Movement values
The player can move back, move forward, strafe left, and strafe right. They cannot jump or aim/look vertically (if you've seen otherwise, you've seen modern sourceport features, not the original game behaviour). Directional movement is not just either occurring or not occurring with the push of a button, such as is the case with a D pad for example, it is instead applied in values of 0 to 50 left/right and forward/backward. There are also 256 turning angles per frame, resulting in a possible 2,611,456 movement combinations per frame, before considering using switches, opening doors and firing at enemies. Of course, you generally just go as fast as possible in a given direction, but VERY often these values are very finely and deliberately adjusted to allow for movement precision and tricks where fractions of a map unit become a crucial degree of accuracy.
Movement Calculation
Momentum and distance travelled are calculated separately along an X & Y axis. If you travel north east, the game doesn't think you have 'north-east momentum', it thinks you have 'north momentum' AND 'east momentum.' I'm not just being pedantic, it does matter! Most obviously when considering...
Diagonally Running
Running diagonally is faster than just running forward or strafing sideways. Since Doom calculates your X & Y momentum separately, both movement vectors are applied to the resulting speed. This means that running diagonally has a 41% higher top speed than running in one direction, and also crucially means that acceleration is faster. This is why I run diagonally through the demo, except for some instances where I do a .000000 trick, explained later.
Wallrunning
If the player runs parallel to a wall in a precise enough direction and location relative to the wall, distance moved per frame is doubled. Note that this is different than the *momentum value* doubling, which means that if a wallrun ends the player will appear to take a massive hit to their speed; *momentum* did not lower, the wallrun effect simply stopped. There are several important considerations to wallrunning. It (almost always) only works when travelling north or east, which is why it doesn't occur on many walls where it may seem very obvious to do so. A particularly obvious example is in map 12, "The Factory", where I do not wallrun while approaching the blue key (moving west, wallrunning impossible) but do while running back (moving east, wallrunning possible). Sometimes it's faster to not wallrun in order to get around a corner faster, since wallrunning doubles your distance travelled in one direction but kills momentum in the other; if you're wallrunning north, you're going north REALLY fast but (generally) cannot have east or west momentum at the same time, so sometimes it's better to not wallrun and instead smoothly turn around a corner so that you have more momentum when the wall ends, ultimately reaching your goal around that corner faster. These different approaches were considered, individually tested, and optimised in each instance.
Because the distance travelled only doubles when player momentum is high enough, the exact frame in which I intercept a wall must be optimised, so that the wallrun can begin on the very next frame. Reaching a wall too early means having travelled less overall distance before the wallrunning effect is possible, and doing it too late means missing an opportunity to wallrun on that frame, so the approach must be tested and optimised to be frame-perfect in each instance. In addition optimally "colliding with" the wall is an optimisation effort in itself, since you want to be as close to the wall as possible on the frame before wallrunning, without actually touching the wall. This hopefully means getting around .01 to .001 (ideally as close to the latter as possible) units' distance from the wall on the frame before wallrunning, but while having maximum speed on that frame, which involves the monitoring and adjustment of many frames of running leading up to the wall, not just the frame where you get to it. For reference the player is 32 units wide, so the distance between the player and the wall ideally requires something like a precision of 1/3,200 (if it's a bit sloppy) to 1/32,000 (if it's pretty damn good) of the width of the player. Without diving into unnecessary specifics the closer you are the more "stable" the wallrun will tend to be so the closer the better. Actually colliding with the wall instead will result in a massive speed decrease. Optimising your exact position to be as close as possible to the wall involves altering your movement values and not just angle travelled. For a simple example, "Move forward 50, strafe left 50, turn left 10 angles" will give you a very slightly different movement to "Move forward 49, strafe left 50, turn left 11 angles" or "Move forward 50, strafe left 49, turn left 9 angles".
Momentum Preservation
Momentum preservation techniques exist and can avoid the typical result of colliding with a wall, which is the instant loss of nearly all speed. The "Door Boost" occurs when a player runs alongside a wall exactly perpendicular to an opening door, allowing the player to maintain & accumulate momentum against the door while it opens, resulting in the ability to run through the door at a very high speed as soon as a door opens. Similar to wallrunning, getting into this position requires a very high degree of precision which can be attained by very fine manipulation of movement values while approaching the position. A quite obvious example is where I run into the corner of an elevator as it raises on map 03. By facing south east and running forward and left, I'm accumulating eastern momentum, but also must occasionally adjust my movement values so as to very slightly accumulate north momentum at the same time, necessary for the trick to work.
.000000 Trick
The .000000 trick is where Doomguy gets *perfectly* close to a wall, being .000000 units away, hence the name. Due to the way that momentum and wall collisions work this position cannot be reached by simply running into a wall without inhuman precision and luck and therefore requires automated brute forcing of inputs. It typically requires testing somewhere between about 200,000 to 2,500,000 input combinations at a time depending on the range of inputs brute forced, every single time to work out the movement values needed. The ability to brute force in this way is built into the TASing tools.
When you're perfectly close to a wall, momentum behaviour changes and you can accumulate speed in multiple directions. Two catches: this only works on south and west axis-aligned walls, and when doing this trick your X and Y momentum is limited to 14.5 units/frame (there's a catch to this second catch: there's no such momentum limit if the wall happens to be directly on a line of the 128x128 blockmap grid overlaying each map) - if this is exceeded, momentum is not capped, it completely reduces to 0, meaning more effort must be put in to be as close to this limit as possible while not exceeding it. An example of this trick is the start of map 03, "The Gantlet", where the trick is done on the wall to the right at the very beginning. Doomguy travels east towards the door, but accumulates east and south momentum while doing so, meaning that as soon as the player gets to the end of the wall they travels south-east very quickly towards the shotgunner. This trick is useful in getting around corners well, particularly in cases where you can use it in combination with a door boost. If you perform the trick on a west wall and travel north, or a south wall and travel east, you can take simultaneously take advantage of both wallrunning & accumulating momentum in multiple directions.
Rocket Boosting
Explosions from rockets fired by the player or Cyberdemon enemy give a very significant speed boost. The closer to the explosion you are, the more damage you take but also the more momentum is given to the player. Sometimes this can be used to sequence break a map, such as the jump map 03, and sometimes this is just used to save time, such as the end of map 11. Because rockets and health are resources that must be managed, these jumps and boosts are used sparingly, but using them to maximum effect has been extensively considered and planned. There are instances where the use of them may have saved a second on one map but more significantly compromised routing later, leading to a net time loss. Apart from sequence-breaking tricks, they do save time but typically the time saved is overrated and the health implications are underappreciated.
Damage boosts by other enemies is possible, but its effect is so dramatically inferior that gaining boosts specifically from rockets should not be thought of in the same way as regular damage boosts.
Thingrunning
Similar to wallrunning except against "things", considered by the game to be enemies, barrels and many solid decorations. This is useful, but limited in that monsters cannot always be manipulated to be in a good spot for a thingrun while not compromising other movement, so sometimes it is faster to skip the thingrun even if it seems optimal. Momentum is also maintained in multiple directions while running into things, without any of the position specificity required by the .000000 trick. Optimisation can still be done, however, by getting as close to "things" as possible while thingrunning.
Squeeze Glides
The player can fit through gaps that are their exact size, which is 32 units wide. A TAS can accomplish this instantly but the level of movement precision is deceptively high and does require brute forcing. I think it's worth watching a human run to compare the difference. It generally takes a very good human player at least a few seconds, but a TAS can accomplish it instantly and without slowing down.
Void Glides
"Void glides" are where the player can clip out of bounds of the map. There are rare instances where this is possible and even rarer instances where it is useful, as you often cannot accomplish anything while out of bounds. The OOB area of nearly every map is filled with invisible walls that obstruct your path, you cannot always re-enter the map, and not every map has a switch to exit the level.
Zero-Presses (or "impse glides")
It's possible to press switches from the side and not from the front, meaning you can press them from unintended places for large sequence breaks. This requires a player position precision of a small fraction of a unit. It's possible non-TAS, but definitely not instantly. In this TAS, some were brute forced and some were manual. This trick only possible from the left side of a switch ('left' if you are standing in front of the switch and facing it).
RNG
Enemy movement, player and enemy weapon damage, whether enemies attack you, whether enemies stop attacking you when you're no longer in the line of sight, projectile spread, and which enemies are spawned by the final boss are affected by RNG, which I'll often manipulate by firing at different times or at different enemies and moving in different ways. While there are many occasions I'll shoot a wall or just punch the air in front of me, there are 0 wasted shots in this demo, I'm often firing to manipulate RNG for more favorable results later on. For the same reason I'll occasionally fire a shotgun and hit an enemy with only some projectiles where I could have killed them had more projectiles hit them. This is because a different amount of projectiles hitting an enemy affects the RNG in different ways. Similarly, I'll at times make extremely small variations to my movements in order to more favorably affect enemy movement, or have them not shoot me, or have them deliberately shoot me.
Item Bumping
You can sometimes grab items through walls, and items on high ledges that you normally should not be able to reach. To do this you need to be very close to the wall and have a high momentum value on the frame before colliding with it. The game checks to see if you would have grabbed the item had the wall not been there and gives you the item if so, and AFTER that checks to see if you hit the wall. This can be used for various sequence breaks such as by grabbing the yellow key in Doom 2 map 12 and blue key in map 13 through walls but can also just be used to speed things up, such as by grabbing the yellow keys sooner in maps 6 and 13.
Air Control
Movement can't be affected by running or turning while mid-air, which can be a good thing and a bad thing. If you manage to get a high speed just before becoming mid-air, you maintain that high speed (often higher than the game will allow you to get while on the ground) the whole time you're in the air. This also means that your ability to affect your movement is obviously compromised while you're in the air, leading to lower opportunities for movement precision.
This does allow for a unique ability to improve visuals though, in that you can often smooth out some turns while in the air. If I'm in the air for 9 frames, hit the ground on the 10th frame, and on that 10th frame need a turn value of 50, instead of making a visually jarring sharp turn that large in one frame, I can have a turning angle of 5 for all 10 of those frames. The movement values will be identical, but it will look visually smoother and superior. The unfortunate exception to this is that sometimes I need to 'use' a switch or door while in the air, or shoot an enemy, and these are things that actually do require me to be facing a certain direction.
Angle Transposition
This is purely a visual improvement. 256 turning angles are possible and a turning value of 64 equates to 90 degrees, meaning that 64 sets of 4 angles are somewhat related. By this I mean: your movement is exactly the same whether you face north and moving forward, or face east and strafe left, face south and move backwards, or face west and strafe right. This remains true when considering combinations of running values, strafing values and turning values.
This means that for the entire demo I considered not only what movement would be optimal, but also what would be the most visually appealing angle to run at, and I had 4 options all the time. This sometimes meant I could look at slightly more interesting things, and sometimes meant I could avoid turning as sharply.
Interestingly however, 4 of the 256 possible turning angles do not transpose accurately. The other 252 will result in perfectly accurate movement, but 4 of the angles will make a very small change to momentum and position, ultimately desyncing the demo. Honestly I don't know why this happens, nor does anyone I've asked about it.
Weapon Choices
Obviously different weapons are more or less powerful and have different viability with different enemies, but there are several other considerations. First, shooting different weapons has different effects on RNG since different weapons have different numbers of projectiles. Second, the time taken between shots and the time needed until you can switch to a different weapon are sometimes critically important to maximize frames saved.
Linedef Skips
Linedefs are invisible lines on the ground that trigger certain events when crossed, and sometimes it is preferable to not activate them, which we can avoid with a linedef skip. This involves being very close to a line on one frame and having high momentum so that on the next frame the game thinks we're on the other side of it but doesn't realise we've passed it. Tons of examples of this kind of thing in plenty of games. It's not particularly hard and is often accidentally done in casual play, but there are notably cases where it is deliberately done.
Wall Collisions
It's impossible to avoid walls altogether, but aside from the above tricks we want to deliberately control what happens when we contact a wall. This depends on our distance from the wall on the frame preceding contact and the movement values on the contact frame. Sometimes we want to crash into a wall and lose the most possible speed immediately because that allows us to run backwards faster, and sometimes we want to avoid as little forward momentum as possible.