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.

Why the Hell Does Depth Matter?

Depth is my primary metric of quality for a game. I believe depth is a good metric because it is “simple” and “generic”. Unfortunately it’s not simple in the way of being simple and relatable to understand. It’s simple like GDP is simple. It’s one final number that represents a whole ton of things going on under the hood. Depth is the emergent result of a lot of different things coming together in a game. Depth, like GDP, is a generic metric in that it doesn’t care what’s being invested in, it could be medical, military, education; puzzle game, RTS, RPG, FPS, or fighting game, it only matters what the final outcome is. Depth doesn’t encompass everything about a game, the same way GDP doesn’t encompass everything about an economy, but both are fairly important metrics regardless. Unlike GDP, there are less ways to fake depth and end up with a cheap result.

I define Depth as the number of states that are differentiated from one another, balanced against each other, and currently known about/preferred by the playerbase. State is the current condition something is in at a specific time. A state with regards to games is the current condition of everything present in a game at a moment in time. Depth is the sum of these states after passing through 2 filters: redundancy, and relevancy.

We start with Possibility Space, which is every single state possible. We filter those into Absolute Depth first by removing all states that are redundant, that are just copies of one another, such as rotations or mirror images of the game board in Tic Tac Toe or Go, or more powerful but functionally identical weapons in RPGs. Then we filter Absolute Depth into Relevant Depth by removing all states that are underpowered and therefore not commonly used in play, or the ones that are unknown to the player community at a given time, such as those that use undeveloped techniques or unknown mechanics. The final result is a measure of the effective complexity of the game.

depth venn

Okay, so, why the hell would the effective complexity of a game matter? What does it matter if a game is more complicated? For this, lets go back to Raph Koster’s Theory of Fun. The gist of his theory of fun is that fun is derived from winning at something inconsistently, like a coin flip. Fun is also derived from improving your consistency over time. Something you can win at effortlessly is boring, and something you never win at is frustrating (this is backed up by Flow theory too). Random things can trick the brain, which is why gambling can be fun, but most people eventually catch on and stop playing, unless they delve into superstitions about luck.

However there’s also a bit of a contradiction there, if you improve your consistency over time, then won’t something that’s fun now eventually become boring when you’re 100% consistent? That’s true. Depth gives players many different measures of consistency, so while you may be consistent at one thing, now you have something else to get consistent at.

Raph Koster’s Theory of Fun posits that fun is the joy of learning (probably because learning things makes us better at surviving, so we adapted to reward learning neurologically). A deep game has a lot to learn about. Therefore a deep game is a fun game.

On top of that, the experience of playing a deep game is different from playing a shallower one. Deep games typically have more choices, and more possible consequences for those choices, requiring more complex thought about each choice. Many board games with less board states are easily solved (connect 4, checkers), where more complex ones require more arcane heuristics in order to perform well at (Go). Simpler games are more about doing 1 thing right, where deeper games are about thinking about future consequences more. Deeper games involve more interesting decisions, as per the Sid Meier definition.

Smash Bros Melee might have less buttons and less attacks than a traditional fighting game, but you can get more results from each move than you can in a fighting game, because Smash Bros is highly responsive to the relative positions of each character, and the timing with which attacks are hit. This isn’t to say that Smash Bros is necessarily better than a Fighting Game though, because both a few nuanced moves, and many differentiated moves are equally prioritized under depth theory, as long as they shake out to the same number of relevant states.

Later Smash Bros games did a lot of work to remove a lot of the nuance in Smash Bros Melee moves, by making them less responsive to differences in timing and spacing (less sweet/sour spots, reverse hits no longer work), by reducing the effect of defensive mechanics during combos, and removing options outright. These games are comparable in their options, but have less depth. This makes progress less clear, since there are no longer an array of clear techniques and strategies to master, and requires players to work harder to get smaller rewards for their effort.

Cultivating Possibility Space

If the goal of depth is to create as many states as possible, how do we arrive at a system with many possible states? When thinking about how to build depth, we need to think about the effect that every element has on every other element. We need to consider the bang for our buck. This coincidentally plays on an age-old idiom about games, “simple to learn, hard to master”. No production has unlimited funding, and arguably there’s an upper limit to the complexity humans can process in a given game. More practically, many people don’t want to play a game with a high upfront complexity.

Thus there are different ways to build a game that are more efficient than others. There are certain ways to configure rules that will result in more states for less effort. Depth is a criteria that is agnostic to the means by which it is achieved, so we could manually build a large amount of diverse content and carefully balance it all to be relevant and that would be fine, but practically we need to pick our battles and be strategic with how much we invest into development. Additionally, if we attempt to imbue our designs with traits that result in larger state spaces every step of the way, then if we have the budget to make a lot of content we’ll end up with more depth in the end than if we didn’t.

To this end, I have what I call the 4 criteria for depth, though realistically they’re more like rules of thumb from a designer’s perspective.

  1. Give everything a niche, don’t let stuff completely invalidate each other (make your elements differentiated)
  2. Allow everything to have multiple functions (don’t build stuff to do just one thing, let it do a bunch of different stuff)
  3. Let the way players input modulate the output of the move (like mario holding jump to go higher/lower, and controlling your speed as you move in the air. Add nuance to a single mechanic)
  4. Create ways for elements to affect one another, producing combination effects.

The first two aren’t directly related to state space, the second especially is more about design elegance than necessarily anything practical. The first helps make sure your elements are differentiated and you’re not adding additional content just to have the appearance of a lot of content. The second plays off of the 3rd and 4th criteria, giving you a more tangible way to judge your success. The third and fourth criteria by contrast, are purely interested in cultivating raw possibility space.

The third criteria is about the nuance of a single element. A game that exemplifies this is Getting Over It: With Bennett Foddy; a game about a man in a pot who holds a hammer that you can control with the mouse. It only has one mechanic, moving your hammer. It does not have any enemies, or level design gimmicks. It just has the physics of your own character, and some diverse levels, and it manages to do a massive amount with these two things. The range of motion and propulsion possible just by moving your hammer is tremendous. The game is responsive to the full range of motion across which you move your hammer, the speed at which you move it, the direction you move it, the angular momentum of the hammer and the character, the friction of the hammer and character’s contact on surfaces, the weight of the character and hammer. Across all of these factors, the number of ways you can approach any given obstacle in the entire game is so vast that you are guaranteed to never approach anything the same way twice. This single mechanic is everything a mechanic should be, and possibly the most deep single mechanic I have ever encountered in a game.

The depth of this mechanic is in no small part due to the amount of information delivered through the mouse. The mouse delivers a series of [x,y] coordinates over time. From this there are many emergent properties, such as location, speed, angle, curve of motion, and gesture. Buttons by contrast are just an on/off switch, but even from those there are many emergent properties that can be gleaned, tap versus press versus hold duration, mash speed, rhythm, press and release timing. Mario’s jump is based on how long you hold the button down. Nero’s Red Queen in DMC4 revving is based on pressing and holding the rev button in a rhythm. Many fighting game characters have different moves for pressing (attack), holding (charged attack), and releasing (puppet character attack) buttons. Multiple button and stick inputs can be combined together to create even more dynamic results. Buttons can act as modifiers for other buttons. Tilts and smashes in Smash Bros are based on the synchronicity of your button press with the stick input, and how far the stick is tilted over what time interval. Gestural inputs of multiple directions in sequence are the basis of fighting game moves.

Tying inputs to outputs that are modulated over a range is especially effective for creating depth. Again, Mario’s variable height jump is a classic example of this. The analog range of time that you hold the button down is converted into the analog range of jump height. In many games, the range of speed you mash buttons at is converted into a range of possible output, such as speed escaping from stun, or maximizing a bonus. In Tony Hawk, you balance yourself by attempting to keep the reticule in the center of the line as it veers from right to left. Matching analog input to analog output is a powerful strategy for creating state space. Matching discretely differentiated inputs to discretely differentiated outputs is similarly effective.

The fourth criteria is about allowing elements to interact in order to create combined states they wouldn’t create alone. The designers of Breath of the Wild referred to their style of design for the game as “multiplicative”. This is a good term for it. Supposing that every element can uniquely interact with every other element, for every element you add to a game the total number of interactions grows. This can look a lot like a Punnett Square, mapping all the possible combinations. With 2 elements, there’s 4 resulting interactions. With 3 elements, you get 9, and so on.

waterfox_ewI5ZAcIQ2.pngwaterfox_YiYUgd3Itj.png

However you might notice that this includes elements interacting with themselves where element 1 crosses on the punnett square with element 1, element 2 with element 2, and so on. Another thing you might notice is that this is assuming that element 2 interacting with element 3 is different from element 3 interacting with element 2. In most games, this isn’t true, there isn’t a directionality to influence from one element onto another, and elements tend not to interact with themselves. When you take these rules into account, then the Punnett Square is reduced to only one half, and none of the diagonal row where elements cross over themselves. So a square with 2 elements only has 1 interaction, not 4. A square with 3 elements has 3 interactions, not 9. It’s about the number of combinations, ignoring permutations.

waterfox_u3oMl332li.pngwaterfox_bfIg99LJKk.png

However the number of combinations still grows at a compounding rate as you introduce more elements. With 4 elements, you have 6 combinations. 5 makes 10, 8 makes 28, 10 makes 43, 20 makes 189. Of course, you don’t have to limit yourself to this. If you can build ways for elements to affect each other directionally, where it’s different based on which one affects which, you’re creating a larger state space. If you allow multiple instances of the same element to interact with itself, then increase the range even more. And then on top of that, if you build every element with respect to the third criteria, AND have the particular modulation of each element reflected when those elements interact with other elements, then you have an explosion in state-space.

waterfox_rmCbtcknbx.pngwaterfox_cTW1lBq4fR.png

waterfox_U2iXujLXJo.png

waterfox_phgQhhlDyR.png

waterfox_6eMtU4lLHe.png

These dynamics can also be represented with a node-graph. Elements (nodes) that can interact with each other are connected by edges, with the directionality of the edge indicating which one has an effect on which, bidirectional indicating they can affect each other. This creates a clear goal, create elements that have as many connections as possible. Every cell on the Punnett Square starts out null, and is activated when there is an edge connecting it in the node-graph. If it’s a one-way interaction or a symmetrical interaction (like mario collecting a powerup), only the cell on one side gets activated. If it’s a bi-directional interaction (like mario either stomping an enemy, or getting hit by an enemy), then the cells on both sides get activated.

waterfox_yvEQ3gDWOr.pngwaterfox_QUv4xvSsuG.png

This can help make tangible exactly how much possibility space there is in a game, in a way that’s not too complicated to implement. There are more complex types of interaction, such as chains of objects having effects on each other (like Mario hitting a block, bouncing something on top of the block), but that’s a bit harder to represent in this format.

waterfox_vrSLyiio49.pngwaterfox_RG3XelRLJA.png

This also makes clear why it can be dangerous to segregate a game into different modes of gameplay, like with minigames. By doing this, it creates localized ghettos of elements that have connections with each other, but not any elements outside that particular mode. Reusing elements between different modes alleviates this problem.

waterfox_RlHlQ7nFwC.pngwaterfox_d83KIavH7A.png

Another shortcoming of this model is fairly representing things like loadouts. In the abstract unabridged graph, there may be many possible interactions, but loadouts require to to slim those down to only a few interactions, but when a loadout is selected, the graph gets a lot smaller. This does not mean loadouts are inherently bad, because there’s other considerations like balance and differentiation that are also important to depth, where this article is focusing purely on state-space. If everyone has access to everything at all times, then much of that might be redundant, or irrelevant to play, resulting in a samey game experience where only a few options are chosen, so only a few interactions are shown off, even if vastly more are possible overall. Card games have to contend with this type of problem and do their best to encourage variety when players can assemble a deck with practically any card available, but imagine how much worse it would be if you didn’t have to assemble a deck, and could simply play any card you wanted at any time. For that matter, imagine how impossible a game like that would be for a human to play.

Additionally, not everything neatly fits this model. Some games don’t have discrete elements that interact, and have a lot of ways the same element can interact with itself such as in Go or Reversi.

waterfox_kKi8svA0Hi.pngwaterfox_tye8HWxfdF.png

Here’s a graph of the super effective interactions in Pokemon. I’m not graphing out everything, because I’m not insane.

“Fun,” The Deepest Buzzword?

Is “fun” just a buzzword?

I don’t treat fun as a buzzword, but of course I have a more specific definition of fun than other people.

The big deal is, Fun is a conclusion. Fun isn’t a reason or justification. You need to say why something is fun, not just that it is fun.

I go on about Depth a lot, but if I just said, “This game is deep” then I wouldn’t be saying much of anything. Same for “This game is balanced” or “This game is hard.”

It makes sense to have words for these conclusions, they’re not buzzwords, but the trouble is in assuming that the conclusion alone is self-evident. It’s useful to be able to say a game is fun, hard, deep, or balanced, but we shouldn’t take these conclusions to be self-evident.

This is in reference to your answer to that “is fun a buzzword” question from a couple months back. What is depth’s relation to how fun a game is? Does a game’s amount of fun differ based on the person playing it?

There’s no relation between fun and depth, I just like depth a lot, so I try to make people think there is!

Alright, I’m kidding. So if fun is the base human drive to make something inconsistent produce the results you want, then depth is practical in the pursuit of fun, because it gives people many different outlets for this phenomenon. If you have a deep game, then you can fail and succeed at many more things to many more degrees than in a shallow game, so you are constantly going through that loop of what constitutes fun.

Arguably, this is a component in the success of penny slot machines. Penny Slots have a lot of different ways to win, so even if you’re losing overall, you’re getting a win of some kind every time you pull the crank (or push the button when you get tired of pulling the crank), and this is a big part in why they’re so successful at draining people’s wallets compared to traditional slots. As for whether penny slots are truly deep or not is debatable, but there is a confluence here.

Depth affords a number of positive design ramifications. It means that if you’re having trouble doing something one way, you can try other ways and those may work, resulting in people not getting stuck as easily. It also means that the game can be played in different ways on repeat playthroughs, preventing it from getting boring after a single completion. It means that even when repeating sections, things are likely to go differently than the previous time. These help keep the game fresh over an extended period of time, both for new and old players.

Depth also means that as players improve, becoming more consistent at easy things, harder things move in to fill the place of the easy things the player has mastered. The saying, “easy to learn, difficult to master” is an allusion to the principle of depth, and has been taken as the mark of a good game.

As for whether the fun of a game differs depending on the player, that’s a matter of perspective. Different people will be of different skill sets, and so will find games more or less fun based on how much of the depth of the game they can access. Street Fighter doesn’t get fun until you get over a certain threshold, so for a beginner, the game might not be fun at all. However if we’re going to address how fun a game is in general, I think it’s reasonable to consider it in the context of a skilled player. If you want to plan for success, then you need to consider it at all skill levels though, like Smash Bros Melee or DBFZ does.

I’ve heard people say Tekken is really fun for people who don’t know what they’re doing, because they can mash buttons and get a ton of different strings and all this crazy shit happens, but trying to learn the game on a low level is really frustrating, then it gets fun again when you get it, and then it gets really frustrating again once you have to learn how to defend and punish every move in the game, and fun again when you get over that hurdle.

Depth Done Right

The concept of depth is interesting but very abstract to me. Can you give some in-game examples games with depth done right?

https://critpoints.wordpress.com/2016/08/10/games-for-learning-about-depth/

Doing examples of depth is tricky because games are complicated. A game being deep means it has way more depth than its competitors, so it’s especially complicated. So to explain depth I tend to use simple examples, like mario’s multi-height jump, or the way you can double jump at any point during a jump, and hope that people can extrapolate from there.

So lets try a more complex example for a change, imagine a fighting game like street fighter. Depth is the sum of all the possible states, minus the redundant and irrelevant ones, so what are all the states possible in a fighting game? First, think of all the different possible positions both players could be standing on the stage. They could stand in the corners, mid-screen, close together, far apart. Imagine every possible individual position on the entire screen that they could stand, then the combination of every possible position they could both stand relative to each other.

So first there’s some redundancy there. Fighting game stages are (mostly) symmetrical. This means that if one dude is in the corner on one side, it’s the same as them being in the corner on the other side. So half of those possible positions in the earlier example are redundant.

Next, fighting game characters can jump, so imagine every possible position they could jump from and to across the stage. Imagine every possible position they could occupy at any given time in the air, and the velocity they’d have applied to them at that moment in time.

Next, think of all their moves, think of how they could perform any of their moves in any of these possible positions and relative positions across the entire stage. Think of how they could both be performing moves at different times relative to each other.

Then think of all the possible amounts of meter they could have at any given time.

If you’ve ever played with an emulator before, you can think of every one of these combinations of things as a save state. Imagine the way all of the things above can be combined to create a tremendous number of distinct save states. The idea of depth is to figure out exactly how many different possible states a game can contain, then to weed out the states that are either effectively the same state, or are made irrelevant by balance issues between different elements, or are unrelated to the goal of the game.

The more complex the game, the harder imagining all this is. Complexity does not necessarily create depth, because a game can be complex, but highly redundant, or most of that complexity could be irrelevant, but increasing depth means either increasing complexity, or better leveraging the complexity that is already there. Complexity creates state space, and depth is a limited selection of that state space. To increase depth, either the state space needs to get bigger, or more of it needs to be useful.

So lets get back to redundancy and irrelevancy. Just because a game has all these states doesn’t necessarily mean they all matter. One might point out the obvious: if a game runs at 60fps instead of 30fps, doesn’t that mean that it has twice the number of possible states? Since the game is stepping half as much each frame, and therefore can pass through twice as many positions? While this is technically true, the majority of those states are so barely different that we can say that they’re effectively redundant. So a game isn’t going to double in depth by going to 120fps. For the majority of cases (every single case you can imagine), FPS can safely be disregarded as a source of depth, even though it technically multiplies state space.

However theoretically this isn’t always the case. A 5fps game is probably fairly limited in what it can express in terms of intervals of timing. A bump up in fps for a 5fps game would probably dramatically improve the fidelity of interactions and range of spacing/positioning/timing choices a player can make. The principle here is that converting a range from being more discrete to more continuous does increase the depth of the game, but as the range becomes more continuous, there’s a falloff in how much depth you actually gain and past a certain threshold you’re not gaining depth anymore. The advantage of discrete ranges is they have more clear differentiation between states, a lack of redundancy, and the advantage of continuous ranges is they have a higher number of total states. Go and Chess don’t let you move half a square, they have totally discrete states, which means that no state is redundant (unless it’s a mirror or rotation of another state).

In a fighting game, you might be able to stand at an infinite number of precise positions relative to your opponent, but if you’re within range to do a move, it doesn’t really matter that much if you’re slightly closer or slightly further, unless that distance changes what moves you’re in range of or in range to do. In Smash Bros, being slightly closer or further can change which hitbox of your move hits, changing the effect of the move slightly. In this way Smash Bros is frequently able to make less of its state space redundant than might be true otherwise. So this infinite continuous range of positions is in reality limited to just the positions where your options or your opponent’s change, give or take a bit (after all, you could have them engulfed deep in your range, or at the very edge of your range, and the difference between those is worth accounting for, even if it doesn’t count for much).

Reducing redundancy is about making every state count, about making every state have a functional difference from all the other ones.

With relevancy, you might have a ton of distinct states, but many of them might have nothing to do with winning and many of them might be things that nobody ever does, either because they’re sub-optimal, or because they just don’t know those states exist. If redundancy is a systems-wise evaluation of depth, then relevancy is depth as it pertains to the playerbase. Relevancy is a reflection of the balance of elements, player opinions, cosmetics, and simply what players even know about a game. If state space and non-redundant state space are unchanging then relevant state space is not just in flux, but it’s different between different people, and the same group of people over time.

Relevancy is probably most impactful when it comes to balance. There’s a lot of different types of balance to consider. There’s balance between characters, balance between weapons/equipables, balance between moves, balance between strategies, balance between playstyles. The thing you want to foster is interesting choices, making it difficult to choose between one thing and another. You want to give people convincing reasons to pick between these things, make it so everything has a situational use, a reason to use it over other things depending on circumstance, but you also don’t want to make it so there’s only one option for any given situation. A basic trick some games use is to create situational factors that change over time, to change what the best option is, so you’re not always doing the same thing, but if you’re really only responding to each situation with that situation’s specific solution, then that obviously doesn’t have as much depth as having competing options for any given situation. If the options compete, then people will choose inbetween the two, meaning more relevant states.

So the thing with balance is, it’s the case where increasing the state size of the game, where adding new elements, can actually decrease the depth of the game. Keeping things in balance is about making sure they have tradeoffs, so nothing is ever a flat-out better version of something else, but also that they compete with one another, so that while you might use both options situationally, they never become the undisputed master of their particular domain for any situation. You don’t want any character to be the best, you don’t want any move to be the only thing people use, you don’t want people to play defense only or offense only, you don’t want people to only play with sweep and throw.

Balance is also a struggle between making sure all the elements are in line with all the others, and making sure they’re differentiated in function. An easy way to balance is to make things more homogenous, but if you do that, there might be more relevant states, but there will also be more redundancy, resulting in overall lower depth. So you need to make sure everything is as “strong” or as relevant as everything else, but you need to make sure it stays differentiated in the process.

Choosing relevancy as the word to describe depth as it relates to players is also helpful because it can represent shifts in how the game is understood. A game might have a high number of non-redundant states, but players might think it’s a shallow game simply because they don’t know how to play the game. There can be new discoveries about the game that make the game deeper, like finding a new technique that combines with every other mechanic in the game. Or there can be new discoveries that actually make the game less deep, because they overshadow other mechanics, are poorly balanced. Or they could do both, and the game might end up gaining new relevant states and losing others and come out as a better or worse game overall.

In this way, games can become deeper over time as more is figured out about them, or shallower as they get closer to being solved, and you can examine how deep the game is relative to a group of players, like low level players who may not play the game like the pros do. Some states might never be relevant because they’re too hard for anyone to access, so there might be a TAS-only trick that is not part of the game’s depth because it never comes up when a human plays the game.

Now, this might lead you to think, “Okay, so does this mean that players can just define depth as whatever set of states they want?” The way I’d frame it is that the relevant group of states in a game is not chosen by any deliberate decision of the players, it’s a consequence of the way the game is designed, and given a devoted playerbase, the relevant group of states will be arrived at inevitably. The players don’t choose who the top tier character is, it’s a product of how the game is designed, and how much they know about the game. Meaning that even though the relevant states are defined by the playerbase, the way they’ll end up is baked into the game design and revealed when it comes into contact with the players.

This means developers can deliberately design the game to develop differently over time when it comes into contact with the playerbase by making things more/less obvious (also called affordance), and it also means that if you want to patch the game for balance later on, you need to wait for players to figure it out, so you can see what the relative strength of various elements actually is, because it’s an emergent property of the interaction between the game and the playerbase, which you can’t totally predict in advance.

There might also be states that don’t actually affect the outcome of the game, like picking a color for your character, or particle effects that cannot influence other game objects. These are irrelevant to the depth of the game, so irrelevant sums them up fairly well.

So that’s a lot of stuff to keep in mind, and it can be a bit hard to visualize for any particular game, but all of it provides a framework for understanding the impact of nearly everything you can create in a game. You want to build the largest state space possible, make sure as many states are differentiated from other states as possible, and as many of the states as possible commonly occur in play.

What Makes a Dynamic Platformer?

You’ve criticized the shallowness of super meatboy for basically being an execution challenge, but where would you say a pure platformer can get depth from, If there isn’t a dynamic element that responds to player input, such as enemies? multiple paths don’t really add dynamism necessary for a game.

Okay, so a lot of this depends on your definition of “pure platformer”. Is Mario a pure platformer? Is Mirror’s Edge a pure platformer? Castlevania and Megaman probably are not. Is Ori and the Blind Forest? It kind of straddles the middle, but also not really.

Mario has dynamic elements that respond to player input. Mirror’s Edge does not in most parts of the game. Super Meat Boy has a few (like the homing worms, and disappearing blocks, which you’ll notice aren’t duplicated in replays).

Multiple routes don’t have much dynamism, true. The idea is more routes on top of routes, on top of routes. Rather than totally distinct and separate routes, you make every little part have overlapping means of execution that have different results/tradeoffs. Continue reading

The Fine Line Between Depth and Approachability

For a developer, in your eyes, is it a necessary evil to sacrifice the complexity that translate to depth, in order to prevent alienating their target audience? It is a dilemna I struggle with. I want my game to be deep, which comes from complexity, but not if it means people won’t play it.

I think there’s ways of getting both, and I’d cite Smash Bros Melee for this. It was a commercial success, but it’s also tremendously complex and deep. It was able to accomplish this because the majority of people who played the game have no actual fucking idea how to play it, or what most of the functions are. It has a very simple foothold for people getting into the game. You move around like a platformer, you attack in the direction of your opponent and it usually works. Super simple.

Making a game deep but understandable is about connecting with what your audience actually wants and actually can understand. The key is building a low “skill floor”, the minimum level of skill necessary to functionally play the game.

Street Fighter has a very high skill floor in comparison to Smash Bros. To play on a basic level, you need to know a LOT more and be competent at a lot more, otherwise you can’t even make real decisions.

I think this is what holds back a lot of action games, they have these complex move lists and people take one look at that and go, “like fuck I’m gonna remember all that” or they just mash buttons and it usually works, so they call it a button mashing game.

A ton of really complex games are extremely successful, like league of legends, but they do that by making the players’ most basic means of interaction with the game really simple. You can move, you can shoot, you have like 4 abilities. A lot of the other stuff is more advanced and you don’t need to know immediately. You can feel like you actually understand the game well enough to play fairly quickly. Similar deal with Pokemon, which has hundreds of actual pokemon, hundreds of moves, abilities, and weird other shit, but kids don’t need to know all that just to play.

I think the key is layered complexity, and introducing things one at a time, while not holding advanced players back. It’s a fine line to walk.

The Line Between Content and Depth

Would you say it’s possible to define the line between giving more options and just adding more stuff? An extreme example, let’s say a bigger weapon loadout contributing to the same combat system versus a jetskiing minigame in a shooter.

A minigame is segmented off from the rest of the game. It cannot interact with any of the other elements, therefore it cannot multiply or exponentiate the number of game states, only add. Think about how many matchups a fighting game can have, based on the number of characters. If you have 10, then there’s 45 different matchups. If you add 2 more, then that’s 66 different matchups (12 characters). 2 more on that is 91 matchups total (14 characters). Adding even a small number of new options can vastly increase the state size of the game. And the state size doesn’t merely get bigger additively, it has a rate of increase that is similar to an exponent, because you’re increasing the number of combinations. So as you add more elements, the state size increases drastically more depending on the number of existing elements.

This is why Go is so much more complex than Chess, you’re allowed to pick many more things on any given turn. There are many many more ways the stones can be combined.

Imagine if you made a fighting game with 10 characters, then you added 4, but those 4 new characters can only fight each other. 10 characters is 45 matchups, 4 characters is 6 matchups. Together that makes 51 matchups, which is significantly less than the 91 you could have if you integrated the cast together.

This isn’t a perfect example, you could nitpick it by examining whether each of these matchups themselves is deep (which for evaluating the game’s quality would be more important than just the sheer number of matchups, because you can consider each matchup segmented off from the others in much the same way as the segmented off mini-game is). The point is to make the math behind state size a little more concrete.

Given the way the number of combinations is related to state size, we can infer that an increase in depth translates to a perceptual increase in quality across an exponential, or logarithmic scale, similar to the way decibels are measured, rather than a strictly linear scale. Of course, this is theoretical and measuring the depth of a game precisely, I don’t know if it’s really possible except for extremely simple examples like tic tac toe. Especially because state size is not the only determining factor for depth, but also redundancy, and relevancy to the playerbase (in terms of their skillset and knowledge of the game).

Because redundancy and relevancy are also a factor, things that are pure increases to the state size of a game can ironically decrease the depth of the game, because the number of relevant states might decrease because of how new elements affect the existing elements, and the new states introduced might just be rehashes of the existing states. I have my 4 criteria/rules-of-thumb for depth to prevent this.
https://critpoints.wordpress.com/2016/09/18/4-criteria-for-depth/

Simple Actions with a lot of Depth

What are some simple actions in games that actually have lots of deph? I’d say Mario’s jump is a good example due to the level of control you have over it. Got any others?

Double Jumping
My goto example a lot of the time. You can jump at many different points during your first jump to get a variety of combined effects, meaning that between both your jumps there is a lot of depth.

Weaving through projectiles (shmups)

Wavedashing (smash)
Different angles give you different lengths, you can jump up through platforms and do it, and as you land. Can also get you off platforms and be done out of shield and other actions.

Edge canceling (smash)
Can be done at any point in a move and off of many moves for varied effect

Strafejumping (Quake and derivatives)
Lots of variance possible on each frame, lots of variance possible in the overall arc and trajectory.

Kick Glitching (Mirror’s Edge)
Is modulated based on input speed, look angle into the wall, and time you kick off the wall. Allows different followups too

Side Boosting (ME)
You get different amounts of speed off it based on how cleanly you do the motion, both turning to set it up, and turning when exiting the boost.

Pointing and shooting while moving (especially rockets)
Pretty obvious, you can aim in a lot of directions, move in a lot of directions. Rockets and other projectiles you need to lead are really interesting too. Aiming is fundamentally tricky and has a lot of possible places your cursor can pass through and become active on.

Skiing (Tribes)
Activating the jetpack and going up and down the right hills to gain speed requires good timing and reading of the environment.

Drifting
Depending on the game this requires good prediction ability for where to start drifting and how long to drift, as well as what direction to hold during it, such as to get the right angle.

A lot of Micro stuff in Starcraft Brood War
Moving units around and having varied results for different formations is fundamentally deep. Like pulling weakened units off the front line and having them assist from the back, or using tighter or wider or shaped formations versus certain other enemy types.

Directional Influence (smash)
I’m kinda cheating with this one, DI is deep because of a lot of assisting mechanics too. Actually trying to control your trajectory in the moment is kind of simple, just point the stick perpendicularly to the angle of knockback.

Tossing objects with gravity.
Getting parabolas right is tricky. Humans have natural physics simulating mechanisms that assist us with this.

Attacking in Chivalry
The sword moves and you can look to control it as it moves. Control over these two simultaneous elements means there’s a lot of different trajectories you can send your sword in. You can delay your swing in place by rotating your view the opposite direction, or spin wildly to slash everywhere and potentially around blocks.

Rebounding off a corner or incline
Judging angles of reflection is tricky, and can go a lot of different ways. Can quickly become too chaotic for humans to easily judge though.

Shooting an object that bounces off surfaces
Same as the above, but an object instead of you.

Staying atop an object moving under you.
Not quite the same as balancing below, this is more about

Balancing
Walking the Slack Line taught me that there’s a lot involved with balancing properly. Even in the Tony Hawk games, trying to balance on a fine line has a fair amount of complexity, even if it’s a simple action overall, and being good at it can be tricky.

Trying to get maximum coverage of many objects with a limited area or set of areas.
This is a pure math thing. It’s the knapsack problem basically. A lot of math problems like this are inherently deep, like the traveling salesman problem. They require the use of heuristics to properly analyze. Actions like placing sentries, towers, or AOEs typically fall under this category.

Getting an object that is attracted to you gravitationally to orbit you, or redirecting it in general.
Lots of variables operate in synchronicity in these cases and you can get a lot of different results out of them with careful movement.

Bashgliding (Ori)
This one is cool primarily because you kind of need to balance the direction you bash with how much velocity you want to get off of it. Also the input is cool, you literally release the stick at the moment you bash. Then you can glide and double jump, and as long as you don’t press the stick, you’ll keep all the bash momentum. It’s possible before you gain the ability to glide to do this, but it’s obviously not as effective, and you definitely need double and triple jumps to really make it useful.

Divekicking (divekick)
All the divekicks and different styles of divekick in that game are so expressive. Like The Baz deserves a special shoutout for both versions of his divekick, the original one where he could jump straight up and then press and hold kick to choose an angle to fire, and he had to draw a line behind him that would be what actually hurt people, as well as the new one where he presses and holds in the air to extend a rope further or shorter, to determine the radius of the arc he will swing in, then he can do this again off the first swing. The fact this works SO WELL with the existing divekick characters is fucking incredible. It has a totally different type of counterplay where you need to basically kick him in the crotch, into his body, rather than at him the same way as the other characters, yet every character counterplays against this great.

Shielding (smash)
It has variable density, depending on how hard you hold down the trigger, which can have variably more pushback/shieldstun/damage taken when you hold it lighter, and it can even be tilted to cover different parts of the body. So truly effective use of the shield can be really nuanced.

Palmbombing (psychonauts)
It’s like the reflection examples and tribes skiing above, you can use the palm bomb to reflect off a surface, then redirect this velocity elsewhere. Helped by the fact that bunnyhopping conserves momentum in psychonauts.

Damage boosting
This one goes back to Quake, but involves a lot of games. There’s many forms of this, from rocket jumping, to grenade jumping, to getting hit by enemies to abuse mercy invincibility, to getting hit by enemies to get boosted forwards faster, to many other things. It can vary by position, by angle, by when you jump, many factors. Usually has incredible depth.

Canceling an animation with variable velocity over the course of the animation to keep the velocity.
There’s a lot of examples of this in different games, but one of my favorites is the DACUS in Smash bros. You can cancel dash attack into grab or up smash and keep the momentum of the dash attack (which for most characters boosts them forward rather quickly).

Dash cancel to keep invincibility (Slayer in Guilty Gear)
You can do this to add iframes to moves like bloodsucking universe to make them function like pseudo DPs. You can combine this with all of your specials and to jump forward invincibly whenever you want.

Divekick canceling (faust in guilty gear)
You can divekick (like dhalsim’s yoga spear) with Faust, then cancel with faultless defense, then do another aerial at any point in your jump to change your jumping trajectory and do aerials lower to the ground. It’s amazing to see in action and gives Faust amazing air to air and air to ground abilities.

Roman Canceling (guilty gear)
You can do this at any point in a move (after it hits) to instantly cancel the move. The Xrd implementation is even more deep because it can be before or after the move hits, vastly opening up the range of options. You can whiff cancel fireballs to act simultaneously to them, you can extend blockstrings at the cost of meter (I love Kusoru at Final Round XV roman canceling two sweeps in a row to set up a tick wild throw, that’s fucking retardedly cool). You can also YRC moves that put you in the air to do quick aerials, like YRC Bandit Bringer, or Millia’s 6K.

Movement on Ice
It’s tricky, you have a few variables going at once, and you need to judge how much movement will be enough to get you to a place, and how much is overboard. Sometimes you need to move fast, sometimes you can afford to move slow. You need to think into the future about the effect of friction to approximate where you will end up. The range of different speeds and attempts to affect your speed more or less create depth.

Tried to keep this limited to single mechanics, but couldn’t in all cases. Left off a lot of things that were obviously combinations of a lot of mechanics working together, or being decided between.

Micropositioning: Another Source of Depth

Editor’s Note: I have slightly edited some of these conversations to be slightly more clear in the absence of context, and to elaborate more on details.

Um, Contra is deep? Always thought of it as very constrictive rather than “deep.” Is your argument that the (slightly) different weapons add depth?

Yes, it’s deep. No, I don’t mean the slightly different weapons, I’m more talking about the movement around enemies and the enemy variety and attack patterns. It’s about micro-positioning, same as Zelda 1.

Depth doesn’t just mean the explicit technical stuff. I defined it as relating to tiny game states because I wanted to capture the difference between say Mario’s jump and a castlevania jump, but acknowledgement of redundancy is necessary too, otherwise more restrictive sets of options like the castlevania jump are ruled out completely because something like mario’s jump can totally dwarf it in complexity, and castlevania’s jump works really well in the context of the game it is, allowing certain types of challenges to exist that could not in Mario. So Mario’s jump is invariably deeper of the two, allowing for a massively larger range of expression, but it shouldn’t be judged as exponentially better just because it can produce exponentially more measurable state. A lot of those states are different but achieve similar results.

Also I meant the Contra series, not just Contra 1. Continue reading