I usually talk about whatever hobby project I’ve been hacking together when the inspiration to write strikes. In a sense this is a similar ramble, just on a wildly different topic, namely video game design.
The Meat and Potatoes #
For some time now I’ve been attempting to wrap my head around why I find games like Doom Eternal to be boring, while games like Ultrakill and Quake are some of my favourites of all time. And I think I’ve found the answer.
Doom Eternal has location based damage and various enemy weak spots. For instance, shooting the Mancubus’ arm cannons causes them to be disabled, making the Mancubus significantly more manageable. Likewise, shooting a grenade at a Cacodemon causes it swallow the grenade and be stunned for an easy Glory Kill. The Arachnotron has a turret that can be shot and disabled; the Makyr Drones can be shot in the head as quick ammo piñatas; the shields on the dudes carrying them can be easily disabled using the Plasma Rifle, causing a shock wave… so on and so forth.
Initially, I found these to be really neat ideas. However, it rather quickly became boring when I found out shooting the weak spots is really the only viable way to get rid of enemies, especially on higher difficulties. Sure, Doom Eternal allows you to be very creative in how you shoot those weak spots, but the moment you stop bothering with them, the difficulty curve starts to resemble something closer to a vertical line than an actual curve. The end result is that the combat feels pre-baked and static if you want to be remotely efficient.
Ultrakill does this right. It has – as far as I’m aware – two ways the trajectory of projectiles can be influenced. One being by punching a projectile as it is about to hit you. The other is with a shock wave, often caused by an explosion. Shock waves can be caused using the Knuckleduster (heavy melee attack), the Core Eject (shotgun altfire that shoots a grenade), the rocket launcher, parrying your own shotgun blast as it exists the barrel and several that I can’t think of right now. This is the only rule regarding projectiles that is set in stone. Because of this simplicity and how many enemies have projectile attacks, you can get very creative in how you kill them, while keeping all approaches equally viable at any given moment. When an enemy has just shot a projectile at you, you can chose to dodge it, answer it with a shotgun blast; punch it back to the culprit using a light melee attack; switch to heavy melee and shoot it back using a shock wave; overcharge the pump action shotgun, dodge out of its explosion damage using the I-frames received when dodging, while using said same explosion to send the projectile back to the unsuspecting enemy; use those I-frames from the dodge to go through the projectile and punch the enemy in the face retrieving some health in the process, etc, etc.
All of these are viable stratagies depending on how much health you still have and how many other enemies there are. Getting out of the way of overcharge explosion damage by dodging is no small feat, but might save you from more damage if you’re surrounded by a lot of high level enemies. Punching a single enemy isn’t something you’ll want to do when still surrounded as it means doing less damage in that moment and only damaging a single enemy. I could go on and on, describing how and when one might chose any given strategy, but I’ll try to stop here.
The result is an incredibly dynamic combat system that allows for endless creativity in dealing with any given scenario. If Ultrakill’s design philosophy were closer to that of Doom Eternal, there would be a dedicated “redirect projectile” button/weapon. It wouldn’t serve much of a purpose outside of deflecting the occasional projectile. On top of that, each enemy attack would have one and only one viable way to answer it.
For me an encounter in Doom Eternal would go something like the following:
Mancubus, take out its cannons using machine gun altfire; Arachnotron, ditto; Cacodemon, switch to shotgun, shoot grenade using altfire, Glory Kill; “oh hey, shield dudes”, switch to Plasma Rifle and pepper them a bit…
There is (usually) one “proper” strategy to deal with each enemy. As a result, instead of improvising throughout the entire fight, I’m focussing on what hoops to jump through and in what order. And I guess I don’t like being treated as a circus lion. In Ultrakill, I just do what comes natural in any given situation without feeling like I’m being forced down a rather face-paced-yet-impressively-boring path.
Doom Eternal’s movement is even more strict. There is a double jump, double dash and later on a grapple hook. Sure, there are some interesting things you can do here, but short of exploiting the physics engine by manipulating the framerate by opening the weapon wheel, you’re not going to see any crazy movement strategies.
Ultrakill has a triple dash, a slide, dash jump, ground pound and the player character can be knocked about by explosions and shock waves. On top of that, there is also the very intricate interplay between these elements due to how the physics engine works.
The result here is a set of extremely complex mechanics that are never set in stone; instead emerging from a few laws of the game that don’t have total death grip control over their domain.
There is no way I could write an article about emergent mechanics without mentioning Quake. So lets do that now.
None of the high level mechanics in Quake are intended. Everything from straferunning, to wallrunning, to rocket jumping, to bunnyhopping and power bunnyhopping (also called strafejumping in the context of Quake) is the result of a few basic rules and wack physics.
- “The player can turn”
- “The player can move in 8 cardinal directions”
- “The player can jump”
- “The player can sprint, increasing their speed”
- “There are entities that are affected by physics”
- “The player is one such entity”
And that’s it as far as I’m aware.
All the of the complex movement mechanics emerge from the interplay of these rules. One of the first that was found was straferunning. What this means is sending both a move-forward and strafe input. Due to the way velocity is calculated, this results in a slight speed increase. Shortly after this, it was discovered that doing this while running into a wall causes a greater speed increase. As did wiggling the mouse left and right. When jumping you don’t lose any momentum. Put all of these together – with the exception of wallrunning – add little finesse on top and the result is strafejumping.
To me there is something about using these emergent mechanics that is infinitely more satisfying than the pre baked equivalents in modern games. Figuring out how to (ab)use the game’s rules to your advantage is half the fun if you ask me and games like Doom Eternal take most of that away from you by giving you one or very few viable strategies to approach a given situation and then telling you most of them from the get go. Getting it to do something that the developers never originally intended.