EXECUTIVE SUMMARY
READ THIS THREAD.
THESE ARE PATTERNS WE HAVE LEARNED TO AVOID
INTERNALIZE POWER WITHOUT GAMEPLAY AND FUN FAILS TO EXCEED ANTI-FUN
THE OTHERS GET KIND OF ESOTERIC AND WON’T MEAN MUCH TO YOU IF YOU DON’T PRACTICE DESIGN
BECAUSE I TOO AM ESOTERIC AND MEANINGLESS, I WROTE 4K WORDS ABOUT THEM
The Thread and Some Context
I’ve recently railed against the way game design is taught. That’s an easy thing to complain about as long as you don’t have to answer the question “so what would you do instead?” So let’s answer that question. (The long way around, as is customary here.)
First, when I say “how would I teach game design”, I need you to please read the standard excessively verbose disclaimer, because I mean a very specific thing when I say game design, and I don’t think that’s the only thing that should be taught. But it’s the only thing I know shit about.
I would start here:
It’s not a terribly long read. I’d strongly suggest you go and read Tom’s original post. To the best of my recollection, there’s not much of value in the rest of the thread.
If you want to know a lot more about the history behind Tom Cadwell, how League tried to be different from DOTA, and what it meant to be talking directly to players on the forums like this, I have a very rambly post about that for you.
But we’re not going to worry about any of that and instead dive straight in.
We often say that experienced game designers don’t necessarily know what to make, but they do know what not to make. The easiest and cleanest thing you can learn is “tried that, here’s why it didn’t work.” That’s what Tom is doing here: distilling “tried/experienced that, here’s why it didn’t work” into bite-sized lumps of insight.
Power without Gameplay
A lot of enthusiastic players and junior game designers think that a good way to do deep game design is to set up a bunch of weird, complicated math that players have to find a way to optimize/break. And in the moment it feels good to realize that “wait, +10 armor for all nearby allies works out to 50 armor, which is a late game item, for free!” But once you’ve recognized that a certain combination is strong, there is no more interest in using it. It doesn’t ask you or your allies to do anything special or express any skills. In the case of the example Tom quotes, the champion Taric used to have a skill that just gave armor to allies in an aura around him. Beyond staying in the aura, there isn’t any gameplay here.
As Tom points out, we appreciate power we notice much more than power that’s just there. I have a lot more to say on this topic, and some day soon I’ll write the Silicone vs Synapse post. But for now, let’s find a more contemporary example.
In Apex Legends, characters come in three rig sizes: small, medium, large. This was designed poorly: instead of starting from desired gameplay, they started from the fantasy: we have characters that are smaller, and characters that are bigger. Clearly a visually distinctive lineup is more interesting than just having characters of the same size. But it turns out that size matters almost more than anything else.
In short, in spite of desperate attempts on our side to balance characters by giving them power or weakness to make up for their rig size, the smallest characters were always at the top of the win rate charts. It makes sense: if you’re smaller, you’re harder to hit. That’s almost impossible to quantify and offset with other power.
If there was some kind of ability or toy that shrunk you down in size, perhaps temporarily, perhaps with associated drawbacks, then we could start talking about “is the gameplay appropriate for this amount of power?” But we don’t have that: we simply have power that you opt into by picking a character.
Burden of Knowledge
This is one of the hardest ones on this list to judge. Everything exists on a sliding scale, but “you gotta really know how the game works to play the game well” sounds perfectly innocuous at first, especially with the dreaded 1000h games. Eventually you’ll get it, right?
Tom uses Rupture from DOTA as an example: a debuff that deals damage to the target only when the target moves. You can avoid the damage by standing still. Tom points out that that’s incredibly hard to learn, and even with the proper communication in VFX and SFX, it wouldn’t be a good ability. There’s a few reasons why:
- When a pattern exists only in one place in your game, especially when that pattern is diametrically opposed to what is the case everywhere else (run away from danger!), it’s probably not good
- Even when you know what the pattern is, the resulting mental calculus (“do I stand still to avoid rupture damage but risk having more spells hit me” vs “do I run away and accept rupture damage”) is either impossible to do in the moment or in extreme situations, such as teamfights where 4 more enemies’ worth of damage will hit you if you stand still, extremely trivial (obviously you have to run).
- There’s no physical representation of the “if this then that” mechanism in the world. You can’t reason “the game wants me to do XYZ” from looking at the game.
I think this is still a pretty innocuous example. For a more awful example, let’s look at one of my designs again (and maybe I can convince you in the end why I thought it was okay in this case.)
(Editor’s note: this one gets very in the weeds, so let me summarize it for you: Kayn has some very complicated math that’s used to get to his final damage against a target. You’d have to understand many layers of mitigation and penetration to math out what’s going on, but because you can safely ignore all that and behave as you would against any other assassin, it’s probably okay and not a harmful burden of knowledge thing.)
When you play as Kayn in League of Legends and choose to become the Assassin version, you get a new passive. It reads as follows:
For the first few seconds in combat with enemy champions, deal bonus damage.
Kayn’s passive tooltip
Seems suspiciously simple. Over on League’s fan wiki, they have a longer explanation:
If Kayn has been out of combat with enemy champions for over 8 seconds, or he casts Umbral Trespass, he deals 15% − 45% (based on level) of post-mitigation damage dealt against enemy champions as bonus magic damage, lasting for 3 seconds upon entering combat and also applying on the first instance of damage dealt. If this effect is ready, it will not be lost by taking damage.
https://leagueoflegends.fandom.com/wiki/Kayn/LoL
Ouch. Talk about burden of knowledge. So yes, the effect is that you deal extra damage in the first 3 seconds of combat, encouraging you to use all your skills as soon as possible, but what is this post-mitigation business? What’s the deal with how the ability becomes available?
The latter is a little more straight-forward and follows a well established pattern, although usually the pattern is the inverse of what we have here. We check if Kayn is in combat with enemy champions; this generally involves doing damage to / receiving damage from enemy champions, but also takes debuffs into consideration (and if you want to get extremely technical, if you were to apply a positive buff, which Kayn doesn’t have, to an ally who’s in combat with enemy champions. Not sure if this works when Kayn uses a support item to apply a positive buff that way.) The special case you have to know about is that once this buff is ready, you don’t lose it for taking damage. This is so it can’t be “poked off” you, something you have very little agency over as a melee character.
Okay, now we go to the more difficult part. Kayn, whose kit deals exclusively physical damage, deals a percentage of his post-mitigation damage as bonus magic damage. What does this mean?
When a character deals damage to another character in League, before the damage is registered, it’s run through a series of events hooking into various events along that timeline. At any point the damage can be reduced or blocked entirely. Armor, for instance, reduces incoming physical damage by a percentage. Shields reduce a flat amount until they run out. But the aggressor also has access to things like lethality (flat armor penetration; ignore X armor) or % armor penetration (ignore X% armor). Once that’s all mathed out, you have a number that’s smaller than the number you started with (usually; technically you can go to negative armor numbers and it gets screwy).
We then take this number, after all the modifications, and re-apply a percentage of it as the other type of damage, magic damage.
Oof, that’s a lot of math just to say “do a little extra damage”. If you want to optimize your usage of the passive, you have to understand how this works. If you want to be ready to survive Kayn, you also have to understand this to guide your item purchases. That’s classic burden of knowledge.
Here’s why I set it up this way: an assassin is a class that should be specifically targeting so called “squishies”, that is to say enemies who invest all their itemization in offensive stats and only have the base armor and magic resist their character comes with. This means that when Kayn deals 1000 damage to a tank, maybe 600 damage actually goes through; when he deals 1000 damage to a squishy, perhaps 950 of that damage goes through. This means the magic damage from his passive is much higher vs a squishy, and on top of that, the passive damage now “stat checks” the other defensive stat, magic resist. Again, chances are a tank has tons of magic resist and will receive a much smaller actual amount. Let’s pretend we’re level 18 and our passive deals 45% of post-mitigation damage. That’s 600*0.45 = 270 magic damage. Let’s say the tank has enough magic resist to reduce incoming magic damage by 75%. The tank would now receive an extra 67.5 magic damage.
Doing the same math for the squishy, we get let’s say 950 post-mitigation damage (I’m assuming Kayn has a lot of Lethality here). That’s 427.5 damage. Let’s say the squishy has 50 MR, which is a 33% reduction, and we end up with 282 damage.
Essentially, all this math let me hypertarget the character. If you go Assassin and do all the assassin things, you will blow up squishies but do next to nothing to tanks.
Oof. That all sounds rough. And yet Riot haven’t changed this mechanic yet, indicating they don’t seem to think it’s the worst thing ever. Why is that?
In spite of the mathematical complexity, the ability slots extremely nicely into existing patterns. “If a physical damage assassin is giving you trouble, build armor” is extremely correct in this case. Having a tank step in the way or casting shields on Kayn’s target at the right moment, or just kiting him out until the 3s are over, are very normal player behaviors. As a result, a player can collapse all this math into “do the usual anti-assassin stuff” in their mental model of the game.
Still, if you want to absolutely optimize the character, you’re probably wondering at some point if buying magic pen is worth it (it absolutely isn’t) or you’re wondering if investing in more AD or more lethality is best (no fucking clue, but I suspect it’s a moot point as lethality items tend to have the highest AD values as well last I checked).
This all to illustrate how much of a sliding scale this is: being able to interact usefully with something only if you know some arcane shit is bad, but if you can apply normal patterns found elsewhere and be fine, it’s probably okay.
Okay, this was an awful example. Let’s do a simpler modern-day example: In Overwatch, there’s a tank named Zarya. Her whole deal is that she has shield skills, and when you shoot her shield, her attack becomes more powerful. This isn’t a huge deal because Overwatch is relatively light on mechanics like this so you eventually learn it, but before you learn that connection, you will absolutely do it wrong a whole bunch and doom yourself and your team. The pattern here is “what do we do if an enemy has a shield”, and 99% of the time the answer is “if we can overwhelm them with damage, fuck it, send more bullets”.
And the funny thing is, even for Zarya that’s SOMETIMES true. If there’s enough people looking at her, you may be able to kill her. But if there isn’t, you just made the enemy tank also a damage threat for a short time.
Again, this is probably fine because there really aren’t many complex mechanics like that in Overwatch and your team will gently inform you yell at you and tell you to stop.
The Burden of Knowledge pattern is often co-morbid with the “designers enjoying themselves more than players” pattern (or as Tom puts it, “or we could just fuck the player”) and the “unclear optimization” pattern. So that’s where we’re going next.
Unclear Optimization
You know, the art of game design is the art of creative uncertainty. In retrospect it’s usually quite clear when you made an unclear optimization type mechanic, but often while you’re in the middle of making it, it feels like you’re asking the player a clever question. Tom’s example with Proudmoore makes sense to me; I imagine if I had designed that, it might have started as a “turn a teamfight around” skill in my head, and as it failed to do so (or failed to do so without doing excessive damage, which will always turn a teamfight around) I might have added more and more stat bonuses spread out across the offensive / defensive / team buff spaces. In my mind, the use case hasn’t changed: you drop this in a teamfight and try to hit as many enemies and allies as possible. But Tom’s point is absolutely correct: when a player comes to the skill without preconceptions of how it is “supposed” to work, they’ll be pulled in lots of different directions.
I feel a lot of unclear optimization spells come out of that space: instead of having a single purpose, a single use-case in mind, designers softened the best case situation (because maybe it was too good, or maybe players refused to use the spell in anything but the best case) and ended up giving the mechanic lots of other, creative uses. This can be good! For instance, in League of Legends, Warwick has an ult that allows him to jump a really long distance and, if he hits an enemy, lock down that enemy while doing a lot of damage and healing himself. That’s the main usage. But often when caught out in a clear losing situation, Warwick will just use the ult to get over a wall and to safety. And that’s great! A clear optimization choice has been made here: for the cost of using his strongest offensive tool, Warwick made sure he stayed alive. The enemy gets to feel good for burning Warwick’s ult cooldown, Warwick gets to feel good for staying alive.
But take Mad Maggie’s ult from Apex. And by the way, I’m not trying to say Apex is a bad game. Not at all! I just happen to be very familiar with it because I worked on it for a long time. The designer who made Mad Maggie is a good friend of mine and a terrific designer who did the best he could given some pretty rough constraints on spells in Apex. Anyway.
Mad Maggie throws a giant ball that rolls in a mostly straight line and leaves behind a speed zone for Maggie and her team. If it hits an enemy, it damages and briefly stuns in an AOE. It also destroys doors and certain “safety” spells like Gibraltar’s bubble.
So do you use this to initiate a fight when you see a team out in the open? Often it’s better to just instantly start firing your gun at them. Do you use it to get away? Maybe, that could work, but there’s a cast animation during which you stand still, and it’s underwhelming to use such a big spell for a getaway. Unlike WW’s ult above, you’re not just giving up personal power: you’re giving up power for the whole team. Do you hold the ult to counter specific spells? A correctly countered Gibraltar bubble could be huge, but also, the fight could end before Gibby gets a chance to put the bubble down. And so on.
The biggest difference between mechanics that do and do not fall under Unclear Optimization is this: after you used it, after the fight is over and you can look back at your game, can you say quickly and clearly if you made the right choice? When the answer is no, you’ve got unclear optimization.
Use Pattern Mismatch
This is Tom getting into the weeds (and yes yes I realize how ironic it is that I’m saying this.) I don’t think this pattern happens much anymore, and I also think this is one players immediately understand is bad. This is a sniper rifle with a bayonet attached, or a sneaky character with a big splashy “let’s all just run at them!” ultimate (looking at you, pre-rework Revenant).
Fun Fails to Exceed Anti-Fun
A lot of the patterns we’ve covered so far have become second nature to me in my decade and change of being a designer and I don’t need to talk about them much anymore. This, however, is an evergreen. I talk about this constantly. I generally express it as “Satisfaction Fails to Exceed Frustration”. This one probably deserves its own post, but let’s talk about it here briefly.
Let’s start with flashbangs. Tom uses the canonical MOBA example of mana burn, on which I could say a lot more, but let’s stay in the FPS space and talk about flashbangs. They’re a staple of the genre, and yet a lot of modern, design-first studios have been removing them from their games. Note that flashbangs can be really fun if YOU use them against the AI, but in a PvP environment, they fail on this test.
When your entire screen turns white because you looked in the wrong direction and then you get murdered with no chance to fight back, you’re certainly not having a good time. However, does the person doing the murdering know that they’re murdering you so easily because you’re blind? Maybe sometimes! I’ve had a number of situations in CoD MP where I still killed the person who flashbanged me by just blind firing. Did they know their flashbang hit? Did they feel good about it?
Tom’s too modest to invoke his counterplay framework here, but this anti-pattern is at the heart of it. In short, counterplay says that “every offensive action a player takes should lead to their enemy having more, rather than fewer, answers”. If you throw a skillshot at me in League I can sidestep, flash over it, hide behind minions, cast a spell that blocks missiles, run out of range, or use a shield or an invulnerability to ignore it. All of these are great fun! If you flashbang (or in a MOBA, manaburn) me, I have fewer options than I did before. I can spray and pray, and maybe sometimes I get lucky, although that certainly feels more like you did it wrong than I did it right.
Every PvP game approaches being a zero sum game. One player’s joy is another player’s frustration. But as long as you can balance the books such that there is at least as much joy as there is frustration, you’ll do alright.
Conflicted Purpose
This is just Unclear Optimization rephrased.
Anti-Combo
This feels like antiquated design problems, too. I’m sure it still happens, but modern designers who play their own games a lot do tend to notice these quickly. I don’t have a great contemporary example for this.
False Choices
I’m combining Deceptive Wrong Choice and Ineffective Choice here. I feel these are still around a lot, especially in games that try to create a LOT of content. CoD is a huge offender here. There’s god knows how many guns in each of the games, but in every category of gun there’s usually only one or two truly good and usable ones, and the community quickly coalesces around these. It’s similar with attachments. Here we can talk a little about Apex as well. Apex is a game about looting, and so there needs to be a lot of loot in the pool. But does it truly make a difference whether your R-301 reloads in 2.99 or 2.88 seconds? That’s the choice you face when you have one purple stock and try to decide which gun to put it on. The answer becomes “it doesn’t matter”, but players will still agonize over the decision.
Call of Duty makes this even more farcical with its weapon attachments. I’d love to see their data and dive into how many players actually played even a single game with every one of the 40+ optic attachments you can put on a given gun. There’s entire categories like foregrips where you can sort through a good dozen options and see bar graphs comparing their performance, only a good half or so of your options have identical performance bar graphs, or maybe they’re off by a pixel.
There clearly is an expressive purpose here: maybe you like how a certain attachment looks or what its name sounds like. If you’re playing to win, however, you’ll focus on whatever attribute you consider most important and just pick whichever attachment in this category that gives you the most of it.
Or we could just fuck the player
We’ve all been guilty of this one. Hell, in single-player games the occasional gameplay trap can be fun, if eyeroll inducing. But in PvP, it’s unforgiveable to put in an option that just screws the player for the hell of it.
Yes, you need bad choices for good choices to make sense. For instance, when you play a character in League that really doesn’t scale well with attack speed, you have the option to build attack speed items anyway, in which case you’re screwing yourself. But the game doesn’t tempt you to do it. In fact, a good shop system will incentivize you away from the bad build.
Or imagine making a BR game where there’s a category of chest you can find in the map that 95% of the time gives you a great reward and 5% of the time blows up in your face, dealing massive damage. There’s no meaningful decisions players can make here. They can’t just ignore a good source of loot. Sometimes they’d just get fucked. Do not fuck your players. Also don’t do it in the game.
Non-Reliability
This is another category that continues to be a huge problem. When you give players a tool to do a certain thing, players expect that tool to a) answer a real problem and b) do so in a baseline reliable way.
A great example here are heal/shield spells in a game like League. It’s hard enough to get a player to care about their allies and try to help them, but if you make the tool to do so unreliable, you lose any chance of a player attempting to help their allies again. A good example here would be Lux’s shield spell, which comes as a boomerang missile (a missile that goes out in a straight line and then returns to caster). You have to hit an ally with the missile for the shield to apply, and they have to stay in its path to catch the re-application once the missile returns. Of course, Lux is primarily a selfish damage dealer who will use the shield to keep herself safe, and of course the missile is tuned to be pretty damn quick and so easy to hit even on allies that won’t stand still, but fundamentally we still have an unreliable tool here.
This point is so important that we often broke a fundamental rule of character design in League to enable better support play. Almost every spell in League has an 0.25s cast time. This isn’t usually enough to let an enemy REACT to a spell, but it is at least enough to signal that something is happening and to get the enemy to understand what happened in retrospect. Most healing and shielding spells break this rule, instead applying instantly. 0.25s in a teamfight can be the difference between life and death. Sometimes we’d even do a funky thing like a “post-cast cast time”, where we’d apply the effect instantly, but then force the caster to stand still for 0.25s afterwards anyway.
Note that the requirement of reliability scales strongly with the stakes of the spell. Ally heal/safe spells have the highest reliability requirement; hence Tom citing Kayle R, the archetypal “safe an ally from death” spell. Next are general heal/shield spells, then offensive spells with really long cooldowns. We often talk about the floor and ceiling of a spell’s usefulness. The floor is “what if you used this really poorly”, and in an ultimate with a long cooldown, even that floor should be pretty high.
There are patterns that want low reliability. For instance, the “fishing” pattern in spells like Lee Sin’s Q. Lee Sin’s Q is a skillshot (a non-targeted projectile spell) that does a small amount of damage and tags the first target hit. Lee can reactivate the spell to then dash to that target and deal a bunch more damage. Lee throwing out Qs all the time to see if he can hit someone is a good pattern we actually do want to see. In extreme cases, even offensive ults can be unreliable. I mentioned Warwick’s R earlier; its range scales with WW’s move speed, and at very long range it becomes extremely unreliable. However, there are secondary use cases (escape) and reliable uses (just use it at point blank), such that a WW player attempting to land their R at max range is entering into a highly unreliable gamble. They could pinpoint the enemy ADC from a screen away and win their team the game… or they could just slide harmlessly into the middle of the enemy team, where he’d proceed to get murdered immediately. Because this isn’t the only use case and the player has to opt into this use case, it’s okay for Warwick’s ult to be unreliable.