Visualizing the Skill Curve

Recently in my discord, one user, Hambone, linked a study related to skill rankings in Blitz Chess, standard Chess, and the card game Yomi by David Sirlin, and how well those rankings correlated with win ratio. You can read the full study here. From it emerges this amazing chart:

This chart is a depiction of a game’s consistency across skill levels, with a spectacular illustration of how there are certain bottlenecks where consistency goes up and down. (for those with color blindness Player 2 winning is represented on the graph as yellow, losing as dark blue. Slight wins are orange, slight losses are light blue, and 50:50 is represented as teal). It’s worth noting that the skill ranking of an average player is 1200. From this chart, we can intuitively extrapolate a number of conclusions, but first lets make some observations: We can see that Yomi is less consistent across all skill levels than either variant of chess. We can see that chess has a short period near the bottom skill level where better players very consistently beat worse ones, then there’s a free-for-all near mid-low level, and another bottleneck at higher to top levels of skill. We see a mild version of this trend even in the yomi chart.

From this we can conclude that aspects of these games make them more or less consistent. From personal experience, I’m going to put forward that the big thing that makes a game consistent is execution testing, a style of game that I call an “efficiency race” (eg. racing games, games that directly compare a skill that is dependent exclusively on you and nothing else). The things that make a game less consistent are Randomness, and unweighted Rock Paper Scissors (eg. games of chance and games with hidden information, where you directly interact with your opponent). For example’s sake, there are some games where you cannot become consistent, such as a pure coin toss. The graph for this game would be teal (50:50 odds) across the entire chart. A hypothetical perfectly consistent game, where the better player always wins, would be a perfect split of yellow/dark blue directly across the diagonal center line, with almost no teal.

Continue reading

Dunkey Gets Dunked On

A friend on twitter was confused when I said Dunkey wasn’t a good reviewer recently. I asked him to pick out the video he thinks is Dunkey’s best review and I’d go over it. He picked Dunkey’s Mario Sunshine review, from this year. I know I said I wouldn’t do any more critic critique, but here you go. Hopefully this is better than any of my old stuff.

My biggest criticism of Dunkey is that he’s not a good critic, but he acts like he is, even though he does nothing fundamentally different from anyone at IGN. He’s part of the group that hates corporate reviews because they’re fake, not because they lack depth/insight, but he acts like being fake and lacking insight are the same thing (because he can’t tell the difference), so when he does an “honest” review, he thinks it’s automatically deep/insightful, because he has no idea what that actually means. The crowd that hates modern game reviews don’t hate them because they have a discerning eye. They hate them because they’re hearing the “wrong” things get praised/criticized. Dunkey praises/criticizes the things this crowd wants praised/criticized, so he gets treated like a good reviewer, even though he does the exact same thing as IGN. Same process, different conclusions, both bad reviews. Dunkey frequently has correct conclusions (relative to that crowd at least), but always bad reviews. You’re not a good reviewer unless you show your work.

Continue reading

FPS Boss Fights Don’t Have to Suck Ft. Durandal

Editors note: This is another guest post by Durandal, though I wrote most of the paragraph on encouragement/discouragement and push/pull. If you’d like to submit a guest post, contact me on discord.

Boss fights involve fighting against one or more enemies that are usually harder than what came before in the game. Story/gameplay-wise they’re an effective way of setting the climax for a level or chapter, which is why they’re so widely used. Many genres like beat ‘em ups, platformers and shoot ’em ups all often feature great boss fights, like Credo in DMC4, Death in Castlevania 1, and the Battleship in Contra 3. But then you have bosses in first-person shooters.

In the 28 years since grandpa Wolfenstein 3D, there has been no truly good FPS boss fight. Instead you get playing peekaboo with (hitscanner) bulletsponges (such as Hans Grosse in Wolfenstein 3D and the 2009 reboot, the final bosses of Wolfenstein: TNO, TNC, and Youngblood, Makron in Quake 2, Tchernobog in Blood, the Battlelord in Duke Nukem 3D and Forever, Splitter Crow in TimeSplitters: Future Perfect, The Destroyer in Borderlands 1). You get the inoffensive bulletsponges which you circlestrafe to death (the Overlord, Cycloid Emperor and Cycloid Queen in Duke Nukem 3D, the Skaarj Queen and all Titan fights in Unreal Gold, Fontaine in Bioshock 1, almost every boss in DUSK, AMID EVIL, and the Shadow Warrior reboot). And at worst you get puzzle bossesthat play nothing like the rest of the game and expect you to figure out a puzzle to beat the boss (the Spider Mastermind in Doom 1 when pistol starting, the Icon of Sin in Doom 2, Cthton and Shub-Niggurath in Quake 1, the final bosses in Serious Sam: TFE and BFE, Nihilanth in Half-Life 1). Continue reading

Getting Over It With Bennet Foddy Review

Getting Over It: Video Games Meet the Myth of Sisyphus – Professional Moron

Getting Over It With Bennett Foddy (GOI for short) is the absolute limit of how far you can get with a single game mechanic. The only mechanic is moving around a hammer, attached to a man in a cauldron.
With this control scheme you can push and pull yourself along the ground, pull yourself up using holds, fling yourself, swing under holds, pogo to launch yourself, and so on.

This method of control is incredibly sensitive, and fiddly, but the game ramps up to requiring you to use it in extremely precise and demanding circumstances, at high risk of losing your progress.
GOI can be incredibly frustrating, because there are no permanent checkpoints, and many of the toughest challenges set you up to lose massive amounts of progress. Playing the game at all with it’s strange and difficult control scheme seems impossible, so redoing the incredibly precise tricks it has you perform can seem impossible.

GOI has one level, shaped like a big cone that spreads out as it rises up, having you cross over your earlier paths as you ascend, creating horseshoe shaped level design. This means that if you fall, you’ll land on an earlier section. Because there are no checkpoints, this means you can easily restart the whole game in a matter of seconds, no matter how high up you are.

Orange Hell | Getting Over It Wiki | Fandom
Enjoy Orange Hell

GOI’s precise skill challenges combined with the potentially unlimited penalty for failure creates an environment where inevitably, no matter how far along you are, you will eventually repeat the entire game from scratch, just to get back to where you were. On a first playthrough, you will need to do this a massive number of times. The side effect of this is that if you are persistent, you will improve at each of these earlier sections until they are nearly trivial, whereas when you started they might have seemed completely impossible.

One of the other genius parts of GOI is that the physics based gameplay allows you to go extremely fast. This means that not only are early parts easier as you master them, but you’ll actually complete them faster each time, and thus it’s not quite so tedious to repeat, as long as you have that improvement mindset.

GOI is one of those rare games where I feel like the Speedrun is very representative of intended play. It doesn’t use any glitches, it just plays the game in the same way players ordinarily do very well. A first time playthrough of GOI can take 9 to 20 hours. A speedrun can complete the game in under 2 minutes. The range of variability in how quickly and consistently you can overcome the game’s skill challenges is massive, which is a strong indicator of depth. This repetition forces you to build your skills and consistency as you play, which is really awesome.

GOI’s use of physics makes it very nuanced to control. The man in the cauldron has a rotation and velocity that is separate from, but connected to the hammer. The hammer moves via an inverse kinematics rig, only the head having actual collision with the environment, and acceleration of the hammer is important and can translate to hurling yourself with more force. The hammer has a unique asymmetrical trapezoidal shape, and the cauldron has round sides, but a flat bottom. Together these all mean that your character can touch the environment in a lot of different ways, and have different interactions based on how they make contact, the direction of overall movement, and the direction that force is applied. It’s very easy to grab a hold the wrong way with your hammer, or set up a pogo the wrong way, in the wrong direction. It’s easy to overcommit or undercommit to a movement, especially since your mouse does not have 1:1 control of the hammer, and there is a slight delay.

The game is also careful to steadily ramp up its challenges, with early ones having more definitive holds to grab onto, and later ones having you pull yourself along smaller and smaller holds in stranger directions until you’re pulling along practically flat surfaces. You’re expected to use more force to hurl yourself as the game progresses, and redirect your momentum midjump to get started moving, then go the way you need around obstacles. You can then take these skills and apply them to clear earlier parts of the game more easily as you inevitably repeat them.

GOI gets a 9/10 from me, it cannot get higher without adding more mechanics, but it is absolutely a must-play. It is difficult to play and harder to master, but there’s a wide range of skillful expression possible in it. It recaptures a lot of the consistency challenge that made arcade games fun, while allowing you to complete it blindly fast as you improve, so the early parts are never stale. It goes to show the absolute limit of how nuanced a mechanic can be and is perhaps the gold standard of any single mechanic.

Mirror’s Edge Review

This is part of my 5×5 review series. I’m going to try to review every game in my 5×5, available on the About & Best Posts page. Photos courtesy of Dead End Thrills and gifs courtesy of CabalCrow from my discord.

Mirror’s Edge is one of my most-played games because I used to speedrun it. My best time was about 55 minutes, which isn’t that impressive, but in the process of learning to speedrun it, I learned a lot about what makes an interesting speedgame. I also had a massive amount of fun learning the various techniques involved in the game, from the easy to the hard, and refining my run.

On this blog, I define a game as a “contract” that the player agrees to play under, either a contract with themselves or other players, as in a multiplayer or co-op game. With this in mind, the game isn’t necessarily the software you play with, but rather how you choose to use it, and different players can play different games with the same software. Speedrunners are playing their own game with the software relative to everyone else. For that reason my blog doesn’t tend to focus on the “speedgame” for a piece of software, but rather the “canonical” game that represents more of the lowest-common-denominator idea of what the public thinks the game is, which is usually something closer to what the developers intended than anything else. What’s possible in the speedgame sometimes can influence the “casual” game (what speedrunners call the more default ruleset), but it’s very situational per-game. Continue reading

Isomorphism & Asymmetry

Isomorphism is a concept in Graph Theory, where 2 graphs, if they have the same nodes, connected by the same edges, are the same graph, no matter how they’re shaped. Basically this means that if two seemingly different systems have the same shape, they’re actually the same system.

One of the most popular examples of this is the Rest system in World of Warcraft. MMOs are known for being addictive. You pay a subscription to them, so there’s only so much time before your subscription runs out, and you want to get the most out of it. To avoid encouraging players to play constantly, many MMOs implemented penalties for playing continuously, to incentivize players to log off. Naturally players didn’t like having their xp gains drop to 50% as they continued to play during the WoW beta, so the developers tweaked the interface so that the “unrested” penalty became a rested bonus, granting 200% xp gains. The actual numbers didn’t change at all, but player reception to them did.

Another example I’ve described on this blog is the Hollowing systems in Demon’s Souls, Dark Souls 2, and Dark Souls 3. In the Souls series, your character has 2 states, Human and Hollow (Body and Soul for Demon’s Souls). Human form lets you engage with online functions, and has access to your full health bar, hollow form locks off online functions and has a reduced health bar. You can spend uncommon, finite supply, consumable items (Stone of Ephemeral Eyes, Humanity, Human Effigy, Ember) to regain your Human form, and thus your full healthbar. Naturally, the Souls games are all tuned such that you still take 3-4 hits to die from common enemies even if your healthbar only has half its max value, but the idea of being punished doubly for dying is offensive to a lot of people.

Perhaps in response to this, Dark Souls 3 framed its hollowing system as a bonus rather than a penalty. Your max health in Dark Souls 3 is smaller proportionally to your min health than in the other games, but it’s not displayed as a chunk of your health bar that is missing all the time, and you’re not hideous looking without an ember active. The actual numbers aren’t any different, but people seem to like it better.

In Breath of the Wild, weapons have a low durability and cannot be repaired. Almost all weapons of a category (sword, spear, heavy blunt) have the same moveset with different attack values, durability, and properties, so any given weapon is nearly 100% interchangeable for any other weapon in a given category. This means that rather than having an inventory of weapons like most fantasy RPGs, you instead have more of a loadout of whatever you’ve picked up recently, making the inventory system more similar to a modern First Person Shooter, where weapons are disposable, interchangeable, and very few are really situational. So rather than thinking of your inventory of weapons as your babies that you love, it’s more practical to think of them as a pool of damage to be unloaded into enemies and refilled with whatever they drop. Your total pool of damage is a weapon’s attack power times the number of hits it can do, plus the next weapon down the list until you get to the end. Thus in a manner rather similar to a FPS, you might have a higher damage weapon that’s good for finishing off strong foes quickly, but once the ammo (durability) empties out, you’re gonna have to find another one. So you may want to conserve ammo with your strong weapons, instead of seeing your weapons as persistent upgrades to your character like they would be in another game.

BotW cleverly stacks the deck in your favor in a subtle way, by having a “leveling” system chugging along in the background as you kill enemies. Every enemy has an xp value for defeating them, proportional to their strength. As you gain more xp, the enemies across the world get scaled up to stronger versions of themselves, and their equipment gets scaled up too, and becomes more likely to have advanced bonuses. This means that the pool of weapons available in the world gets stronger at a faster rate than the enemies do, and of course many enemies, such as bosses, remain unscaled regardless of your level. Since weapons always knock enemies down when they break, forcing them to drop their weapon, you’re constantly getting fed a supply of weapons that progressively grow in strength, so you can’t be left behind on the power curve unless you deliberately throw your weapons away (and Eventide Isle is designed to show how Link can still succeed, even starting with an empty inventory).

And of course, while this system in BotW might be really fun for gameplay enthusiasts who grok how the system is supposed to work and how they’re supposed to interact with it, it outright contradicts the more common framing of weapons being tools instead of ammo. This means that many players who can’t dissociate the theme and function of the weapon system just see the whole thing as a frustrating mess. This is amplified by cases like the Lightscale Trident, which is thematically the most powerful Zora Spear ever forged, and a sacred heirloom of the Zora Royal Family, but it breaks about as easily as most other weapons. Most people expect weapons to be semi-permanent upgrades that can be selected from at any time, with a durability system as some mild flavor that adds a sense of realism. So when a game breaks that framing and treats durability as an ammo counter, it’s aggravating to a lot of people.

In the pursuit of depth, it’s important to avoid having isomorphism within the same game; meaning, there shouldn’t be systems whose relationships are identical to one another. This means avoiding things that are proportionally the same in scale, rotation, mirroring, etc. 10 hp with 1 damage is proportionally the same as 30hp with 3 damage, unless there’s a 3rd factor that doesn’t scale along with those. Most RPGs have self-similar proportionality between the characters’ health, damage output, and enemy health and damage output across a game, meaning that the experience at the beginning frequently feels the same as the experience at any other point in the game.

In a blank endless room, the absolute (relative to the world, not each other) rotation of 2 characters locked onto each other is self similar, regardless of how much to the right they move, the only thing that can vary in proportion is how far away they are. The same is true of their absolute world position. If the two of them are translated any number of units away from the world’s origin point, in a blank endless room, there’s no real difference between any possible positions, except as relative to each other. If the characters are locked onto each other perfectly, then they’re not allowed to have different rotations relative to each other, therefore removing 3, and even 2d, space entirely. Avoiding isomorphism means avoiding symmetry, perfect mirroring, perfect rotation, perfect scaling, where nothing really changes.

Tekken attempts to avoid this mirroring/rotation problem by having characters be more dominant on their left or right side, able to catch people who sidestep to one side or the other, so even though you might be playing on an endless stage, sidestepping around your opponent in either direction is still important and different per-matchup. Not to mention that they otherwise avoid the problem by introducing terrain, which characters can be closer to or further from, and the rotation of the characters can orient them against the wall, or into corners, which might be harder to escape from. This makes the absolute position/rotation of the characters important.

Games with movement that’s locked to 4 or 8 directions (2d Legend of Zelda, except Link Between Worlds; Princess Remedy) have a weak form of this baked into the movement system, where relative positions of each character become more important to line up attacks, since they can’t be aimed at an arbitrary angle. In these games it’s really important to approach your opponents from either the cardinal or diagonal lines of the movement axes, depending on where your attacks are oriented relative to your character, and where the enemy’s attacks are relative to them. A Link to the Past and the gameboy zelda games accentuate this more by having Link’s attack originate from his side, rather than appearing straight from his center, as in Zelda 1. This has a weak effect in most cases, but it’s there. Since sword wielding enemies frequently have their sword a little off to the side, moving carefully can sometimes allow you to poke around their sword, which is interesting.

Most fighting games have what’s called “Guts Scaling”, where characters take less damage as their health gets lower. Since this is applied uniformly to all attacks, the effect is that characters have a little more health concentrated at the bottom of their health bar than they appear to. This doesn’t make it easier to come back from behind, but it does mean that matches spend more time in the stage where players look like their health is low. In other words, this is isomorphic in most fighting games, it’s purely a psychological trick. In Guilty Gear, the guts scaling is more extreme than other games, but chip damage and throws are exempt from this scaling, dealing their full damage, meaning that as someone gets lower in health, chip damage and throws become proportionally stronger, which means blocking is proportionally stronger at the beginning of the match, and weaker at the end.

Symmetry can frequently be useful however, for guaranteeing consistency and fairness. Multiplayer games are frequently symmetric in order to maintain fairness between teams. Asymmetric multiplayer games (Counter Strike, Overwatch, TF2, who serves in Tennis) are frequently played with the sides reversed to create symmetry, to give each team a chance to play each side. Many hitboxes for competitive games are designed to standardize oddities to create consistent outcomes (such as projecting 3d hitboxes orthographically). In boxing, left handed boxers (called southpaw) are frequently said to have an advantage, because they fight with their strong hand on the same side as their opponent. This breaks the mirroring of strong right arm versus strong right arm, closed stance, or open stance. The general rule is that asymmetry creates interest and breaks up redundancy, but symmetry creates fairness and consistency.

Developers should recognize framing and be careful with whether they label something a bonus or a penalty. If it’s more common to be “penalized” than to not be, players would probably prefer if that lack of penalty were framed as a bonus instead. Skilled players should recognize isomorphic game systems and not assign meaning based on whether the developer calls something a bonus or penalty. Developers should attempt at every stage of development to try to have relationships between different elements change in proportion, rather than retain the same proportion at a different scale, rotation, or so on. This means introducing reasons why the characters might want to rotate or not, or move around relative to each other or not. It means making levels, attacks, scaling, asymmetric relative to rotation, position, distance, and time.

Kill Your Sacred Cows

A long long time ago, I used to like Zelda, Okami, and Mad World, among others. I thought they were good games, and I never really questioned it. I remember before I played Ocarina of Time how much everyone said it was the best game of all time. There were memes back then of the OOT box, with a warning label, “Warning: Playing this game will make every game you play following this a slight disappointment.” I played OoT and somewhere at the back of my head thought, “huh, it’s not the greatest game I’ve ever played”, but I completed it, and all the sidequests, and never looked back.

I never really questioned liking the Zelda games until Tevis Thompson’s essay, “Saving Zelda” released in 2012. Dark Souls and Zelda: Skyward Sword had released around the same time the previous year, and I came home from college and played them both over winter break, jumping back and forth between them. I was completely on the hype train for Skyward Sword. I’d played a demo of it at New York Comic Con. I pirated that demo shortly before release, and I was hyped to see motion controls finally get their moment in the sun after being disappointed with how Twilight Princess used waggling as a substitute for the sword button. Despite that, with the actual game in my hands, I found myself playing a lot more of Dark Souls and I didn’t really know why.

Then “Saving Zelda” dropped a couple months later, and I read it, thinking, “This is ridiculous, Zelda’s a great series. Everyone loves Zelda. Skyward Sword is amazing”, but it planted the seed of doubt.

I played more Skyward Sword, and saw more and more of what Tevis was talking about. And I’d had the same experience he did with his comparison to Demon’s Souls. I had beaten Demon’s Souls and loved it, and I was playing Dark Souls directly next to this overhyped Zelda game, and at some point I realized, “Oh wait, the entire time I’ve been playing this game, I wasn’t actually having fun.” I was bored, waiting through mini-cutscenes, excessive dialogue, the reminders that my battery was low. The combat was rote and not very thoughtful, unlike the better game I was playing beside it. The Wii Motion+ was not calibrated very well at all. The game was a dull slog which consisted entirely of doing exactly whatever was laid in front of me, which was *entirely* Nuzzles, especially since the new motion+ combat meant that even combat was now a Nuzzle.

Around this time, I was also getting involved with the dregs of the Icyclam community. It’s worth nothing that Icyclam is a criminal and a megalomaniac who shouldn’t be bothered with, but his community, and the dregs surrounding it (which are more sane than his direct circle, but still share his core values), tend to have pretty good taste in games, and I ended up playing a ton of old and obscure games I otherwise wouldn’t have if I didn’t take their suggestions. I’d considered the idea of starting a youtube channel, or games criticism site with friends because I felt like game reviews didn’t have their priorities straight (I thought Gamespot’s Twilight Princess 8.8/10 score was a crime against a masterpiece).

I had always heard, “gameplay is the most important part of a game” as like, a truism, and I joined the Icyclam spinoff community I did because I thought they’d be the hardcore community of gameplay enthusiasts I was looking for, instead of just believing in Icyclam’s same immersion ideology that I abhorred. I wanted to find people who took gameplay seriously, and I found a community of people who liked difficult, complex games, while seeming to reject Icyclam’s fanaticism. I ended up disappointed as I eventually realized that no, they hated glitches, they loved fancy graphics, and they didn’t really care about gameplay that much, just whether a game was hard or not (and they rationalized that masocore games weren’t “really” hard, to avoid the obvious contradiction of a hard game that was bad).

And being in that community, I ended up constantly arguing that no, graphics aren’t really that important, and I had it pointed out, “Well don’t you like Mad World and Okami? Those are pretty, but the gameplay isn’t actually that good.” And oh shit, he’s right. I had just like, assumed these games are good and I liked them even though I could reflect on them and remember how I was bored the entire time I was playing them. They’re made by a company with a good pedigree. They both have gorgeous unique art styles, unlike anything else before or since. They both have a lot of content and mechanics and seem like they should be interesting. And in practice, they’re both actually boring and I had cognitive dissonance about liking them. So from that day on, I stopped attempting to defend games I wasn’t confident about, and I stopped regarding games favorably based on their prestige among other people or the prestige of the company that produced them.

And of course, I’ve looked back on a lot of games this way. Some games I’ve bounced off of without realizing why, before I ultimately concluded that they’re not very fun, like Majora’s Mask or Planescape Torment. Did I actually enjoy the moment-to-moment of them? Not really.

And I feel like if I did this type of self-deception so commonly before (played games that bored me and said I liked them because they seemed like they should be great) then wouldn’t this be common among other people? Have you ever convinced yourself you liked a game, ignoring the feeling of actually playing it?

Designing AGAINST Speedrunners

Speedrunners are terrible. They ruin games for everyone, and love to talk about how your coders are buffoons when they perform intricate tricks with elaborate setup and tight inputs that no ordinary player would ever think of doing, let alone be able to perform. Here’s how to drive these pests away from your games.

First, make an inaccurate ingame timer. Include load times (multiplied by 2, so now everyone needs to buy an SSD), cutscenes, character creation, time since the game was started. Hide it until they beat the game so they can’t reliably check if it’s accurate without cross referencing another timer.

Next, make file management annoying, or impossible. Utilize cloud saves, have events in one save affect events in a new game. Store savedata in the game files, encrypted, so they’re difficult to access, and difficult to modify. This makes starting completely fresh annoying.

Include unskippable cutscenes or autoscrollers that are about a minute or more, and vary their length randomly. Unskippable cutscenes are intensely irritating to speedrunners who just want to play the game. If they’re too long, the runner can take a break, but if they’re only a minute or so, they can’t comfortably do anything but sit and wait. Prompt the player to continue with text to make them all the more annoying.

Add RNG to practically everything. Damage, speed, enemy behavior, drops, etc. Be sure to include a big time saver powerup or item as a random drop that can only be obtained about a third of the way through the game, so speedrunners are obliged to obtain it, and need to waste time playing the game to see if it’ll drop. If you can work multiple of these in, all the better.

Ruin the wrists of speedrunners by including actions that go faster or deal more damage per second when they mash harder. Make the speedup from mashing grow exponentially as they mash faster, so the fastest possible mash has a significantly bigger benefit.

Next, don’t implement deltatime correctly for framerate independence. Make it so the timescale is faster at lower FPS, so that in order to move fastest, you need to reduce the FPS to as low as possible. Additionally, don’t benchmark the game to any specific FPS, just let it do whatever it wants, so then speedrunners need to argue about where to set the framerate standard, and need to force it to behave with outside programs. Make the input delay vary randomly over time, and don’t have a buffer for actions. This makes any frame-perfect input more difficult, and in general makes the game more frustrating to play.

Vary the speed of things like elevators and doors based on the difficulty picked. Higher difficulties should have faster elevators and doors, but also higher self-damage where applicable, forcing runners to play on the highest difficulty in order to get the fastest times.

Include drop-in online elements like Dark Souls so runners need to intentionally disconnect the game from the internet. Combine this with Denuvo, or other always-online DRM, which should also be set up to avoid tampering with Cheat Engine, which speedrunners use to practice and occasionally mod out RNG. Between these, runners will either need to accept that runs include online elements, they’ll need to authenticate with denuvo and play offline until authentication expires, or crack the game outright to disable always-online.

Make the game fast, make it linear (or open world, but with a linear sequence of objectives), and make it so the player snaps onto a bunch of environmental features, but has random animations of random length for traversing them. This helps narrow the skill gap, and introduce more random variation in timing. Making it linear makes the routing less difficult, and making it fast is something that you’d think would appeal to speedrunners, but they’re actually indifferent about. Making it open world means everything takes longer than it needs to. When making it open world, be sure that every event flag checks for multiple prerequisite event flags, so nothing can be completed out of order.

Don’t allow players to bind anything to scroll wheel, especially not jump or use. This has been used in countless games for various exploits.

Practice good coding conventions, don’t mutate state unnecessarily, use a strongly typed language with collections and avoid using pointers. Have each element interact with as few others as possible. Validate and sanitize your inputs. More safe coding practices means less glitches. Design mechanics to have a singular purpose that it accomplishes with no variation in output and no interaction with other elements. This reduces the chance of players finding unexpected uses of mechanics.

Thoroughly wall off areas that aren’t supposed to be accessed. Include kill planes in out of bounds areas. Don’t spawn loading zones before they’re supposed to be accessed. Lock players in rooms/arenas until they’re done with their current objective, or defeating all enemies. If players aren’t supposed to reach an area yet, make sure it’s unreachable, either with walls, or by making sure it doesn’t exist until it’s supposed to be reached. If possible, define levels in terms of areas the player is supposed to be, so they can’t exist outside of the places you want them to be.

Bundle bugfixes with new content patches, especially new bosses and new areas, because it forces all bosses and 100% runners to run on the patched version of the game in order to meet the category requirements.

Of course, a lot of these things make the game worse, even for casual players, but there’s no price too high to remove the speed demon menace!

Designing for Speedrunners

One of the most powerful tools speedrunners have to save time is Skips. Games are usually designed where goals are supposed to be completed in a certain order, a skip is where you complete later goals without completing the prerequisite ones. This can mean completing story flags out of order, or simply going to an area before it’s supposed to be accessible. The thing that makes such skips possible is usually level design in the shape of a horseshoe, where the start and the end are close to each other in physical space, but are separated by a wall inbetween. The Valve Developer Wiki helpfully has some examples of this, which they call Loops and Bounces. Hub areas that unlock into more areas also tend to facilitate skips, if you can find a way to get past the gates blocking you.

John Romero, one of the level designers of Doom, remarked on the Horseshoe level design in the Hangar map in this lets play, as well as some of the benefits of it. You get to see where you’re going, you’re not traveling in a literal straight line, even if you only have one way to go, and you can cut across the horseshoe to the end.

Getting Over It with Bennett Foddy is designed as a series of horseshoes laid over each other, which sometimes makes skips possible, but more frequently is used to dump the player back into earlier areas. The whole map looks like a serpentine pattern, crossing back and forth over itself. Many areas in Super Mario Odyssey are structured similarly, letting you get to later parts of the level if you can perform the advanced jumping tricks. Even ancient games like Castlevania have skips based on connecting the ends of a horseshoe, using the small boost they get from taking damage to climb up and over ledges they can’t quite reach otherwise.

The most practical form of designing for speedrunners that you can do as a developer is simply to make horseshoes in your level design all over the place, and leave it up to them to find a way to connect the ends. Incidentally, this happens to be good level design practice in general, as it gives players sight of the areas they’ll go to in the future (and thus clear eyes on their goal), and frequently gives them more routes through the level.

Speedrunning is fundamentally a big optimization puzzle, similar to the traveling salesman problem. Speedrunners tend to enjoy games that are difficult to route, where they have freedom to choose to pursue a lot of different goals, that each have an effect on completing their other goals. Metroidvanias are popular among speedrunners for this reason, because they typically afford a lot of freedom in which order bosses can be tackled, and powerups can be collected. Those powerups frequently open new routes around the map, or make traversal faster relative to certain geographic features present on some routes. These types of optimization problems can be quantified in how complex they are, through their complexity class, or Big O notation.

Making a game difficult to optimize is difficult in-of itself, but some easy steps are to have multiple active goals at once, to open and close routes relative to certain events, and to give the player multiple routes across the map at any given time, as well as limit teleporters to locations that are out of the way, and avoid central hub locations that are connected to all the other objectives.

Having alternative or optional objectives is also helpful for speedrunners, because they frequently incorporate these into alternative categories (alternative speedrun rulesets whose runs are compared against each other, instead of the general crowd). The most common of these is 100% or all bosses. As skips are found for intended goals, speedrunners make categories for avoiding the use of major glitches, and completing some of the intended goals. More whimsical categories sometimes get introduced as well, such as collecting all the items, or playing with a restriction, such as no jumps, or the fewest powerups possible.

While it might be tempting to leave bugs in, in order to entice speedrunners, or to patch bugs out in the name of releasing a polished product, the real consideration should be: Will a casual player run into this bug by accident? And does this bug create new interesting choices with regards to saving time, or playing the game? For most bugs, the answer is no, but sometimes the answer is yes. A common policy is to leave in any bugs that affect the speedrun after the game is released, unless they’re easily triggered showstopper bugs, such as a crash, or softlock. If the QA team can’t catch it, most players probably won’t either. Rather than blindly sticking to the value that all bugs are bad bugs, it can be helpful to consider more abstractly what creates value for the customer.

In some ways, the way the game is coded or designed can influence what tricks are possible in a game. A lot of glitches in older games involved memory manipulation and corruption that isn’t really possible in modern games, largely because modern engines and modern languages have a level of type safety and memory safety that games from the 90s didn’t. Programmers working in assembly or C frequently made mistakes with pointers, arrays, or structs. They would transform data using a process meant for a different set of data, or jump to the wrong location in memory. This is what made so many glitches possible in pokemon, ocarina of time, and other games from that time period.

Beyond just coding conventions, glitches or exploits are made possible by simply making detailed unique mechanics that had interactions with a number of other elements, which is good game design. Good games tend to also be good speedgames, with the exception of autoscrollers, and beat em ups, because those tend not to allow for much routing freedom, and playing beat em ups for speed tends to deemphasize what makes the combat in beat em ups interesting. When a mechanic is designed to accomplish many different purposes, interact with many other elements, and modulate its output based on the input, it’s almost inevitable that some unintended outcomes will occur. The iceless skip in Megaman X isn’t some weird quirk of the code, it’s just the natural result of giving the player the freedom to jump off walls and near perfect air control.

A general quality of life feature for speedrunners in any game is having a good in-game timer. A good in-game timer will not count loading screens, and sometimes pause time or character creation, but will count every other part of gameplay. Good in-game timers avoid the need for speedrunners to manually remove load times in their video software, or with complicated timer splitting programs that need to be developed per-game. Another quality of life feature is a speedrunner mode where the RNG is deterministic, or where you can input an RNG seed to always get consistent results. Making sure that players can cleanly wipe their save and start from complete scratch is also important.

Building a game that accommodates or even encourages speedrunners is not usually a development goal for most games, but for the few projects that aim to entice speedrunners it can be helpful to know what actually makes a speedgame more interesting instead of assuming that speedrunners want something like a racing game with a single path forward, and you happen to move at a fast unbroken pace. Most games deliberately oriented around speedrunning, such as Speedrunners or SEUM: Speedrunners from Hell, tend not to actually be very popular speedgames, because they don’t really consider what speedrunners enjoy about speedrunning various games, instead building for an aesthetic of speed. It’s more important to build a good game than a good speedgame.

It’s also nice to do the bare minimum to accommodate anyone choosing to speedrun (timer without loads/character creation, good save file management, not actively patching out speed tech). For any game, it’s helpful to avoid actively burning your players. It’s up to the player to decide how they want to play your game, whether it be pacifist, speedrun, or modding. Intentionally snubbing players who play a certain way may not impact your overall sales numbers, but it’s kind of a dick move and many games get a second life from the speedrun community.

How Dark Souls Changed Combat

Most games with 3rd person combat have enemies with slow reactable attacks, and player characters with very quick unreactable attacks, such as Ocarina of Time, Devil May Cry, God of War, Batman Arkham, Witcher, and so on. The Soulsborne series made a bold decision with regards to this. The standard attack speed of most weapons is roughly the same speed as enemy attacks. This means that attacking after an enemy does generally means they’ll hit you first, interrupting you, unlike other series where your attack will come out first. This means you can no longer react to an enemy’s windup with an attack of your own.

By slowing down your attacks, the souls games put you on the same timescale as enemies. Enemies need to be slow so you can react to their attacks and defend against them, and slowing down your attacks to match theirs means there’s more of a risk that they’ll interrupt you before you interrupt them. This means that enemies can afford to rely on hitstun less to be threatening. Overall, it creates more of a neutral game between you and your opponents, where you jockey for position and try to use attacks strategically. Because you’re less sure to hit first, whiff punishing becomes more important to safely hitting enemies.

Slowing down attacks also means that attacks could be more diverse in the time at which they hit, and thereby exhibit a wider range of tradeoffs between damage, range, and speed, which Dark Souls leveraged to create a diverse assortment of weapons. Nioh then leveraged this further by attaching a bunch of moves to the same weapon, and finding ways to distinguish them all using the stance system.

There isn’t a lot to say about this. Slowing down attacks while keeping your defensive options fast is a simple effective trick for emphasizing more of the neutral game in any game with 3rd person combat. It makes individual enemies more threatening, and multiple enemy fights more dynamic too. Obviously not every game should work this way, but it’s cool in the games that use it.