/dev: On Depth vs. Accessibility
A deep-dive into League’s design philosophy of focusing on deep, core gameplay over accessibility.
In the wake of our recent and ongoing updates to ranked, I wanted to talk a little about how we think about League’s design and, more specifically, who exactly we think we are designing League for.
Game designers use a lot of jargon about depth and interesting decisions, and Riot talks a lot about the never-ending path to mastery. Why do we care about all of that?
Design and problem-solving
At a really basic level, you can think of a game as a player wanting to accomplish some goal. The game throws up a lot of obstacles to that goal (or else the game would be like 5 seconds long) and the player then uses various tools to try to overcome those obstacles. In League, the obstacles are mostly the players on the other team who want to prevent you from meeting your goals, but also things like towers, creeps and jungle camps—the tools are things like your QWER, summoner spells, items and so on.
When there is always a safe, “right” answer to solving every obstacle, you may feel smart in the short term because you know the answer, but in the long run that challenge may get stale or boring. The decision isn’t interesting. What designers call interesting decisions are those to which there aren’t obvious right answers. “Which champion should I play?” in general doesn’t have an obvious right answer. “Should I try and last hit?” does have a right answer, but the task itself isn’t easy, plus the answer is often determined by a bunch of other competing priorities, so it’s still reasonably engaging. “Which rune build should I use?” has a right answer, but it isn’t an obvious one, which leads to most of us just Googling it (more on runes in a bit).
When a game has a lot of interesting decisions, it has depth. There is always something new to learn. You suspect there is always a better way you could have handled a given situation (“Should I have saved my Teleport? Should I have even taken Teleport at all?”) When you’ve played a few games of League in an evening and then play another one, ideally it plays out differently because the different choices all of the players make lead to different outcomes.
Depth and complexity
Having a lot of depth frequently leads a game design to being complex. This doesn’t have to be the case. The game of Go gets cited a lot as something with pretty simple rules, but a lot of depth. By contrast, a board game like Monopoly has some complicated rules, but there isn’t that much depth because sooo much of the outcome is decided by the dice roll itself.
One of the initial thesis of League is that it wasn’t going to sacrifice depth for accessibility... League wasn’t going to go after being a super easy to learn game for fear of losing the depth that the team wanted League to have
When you have a complex game with a lot of depth (e.g. League), there is an inherent risk that the game itself will be overwhelming to learn, and I think most of us agree that League falls into that category. Accessibility (meaning the ability for a new player to pick up the game) is often in conflict with depth (which keeps engaged players from becoming bored and then unengaging). Developers can handle this conflict in a number of ways, such as doubling down on having a really good onboarding experience (like a stellar tutorial), or trying to keep complexity in check. League doesn’t do that.
One of the initial theses of League (and this was all way before my time at Riot) was that it wasn’t going to sacrifice depth for accessibility. Yes, there are more complicated and probably even deeper games in the world. That’s fine. What I’m talking about is that as a strategy, Riot decided that League wasn’t going to go after being a super easy to learn game for fear of losing the depth that the team wanted League to have. As a developer, you could decide to walk the tightrope between accessibility and depth. Leagues does this at times, and some games do this really well. But it is an opportunity cost—the more effort you’re spending trying to hit both targets, the less time you have to deliver on one really well.
For shorthand, we say that League is a game for core gamers. It’s hard to interpret that statement without defining what a core gamer is and by extension what a non-core gamer is (or even what a casual gamer is), and those terms get to be pretty imprecise, and even label-y. But what we mean by it is: We don’t want to try to grow the League audience by making the game easy to understand and pick up. Ryze (Riot co-founder Brandon Beck) often describes League as a niche product that just managed to land in a niche that ended up being pretty large.
What it means in action
That was a lot of theoretical / philosophical talk, so I wanted to walk through some examples of features in the game to illustrate how this philosophy manifests in the game itself.
-
Drakes : In patch 6.9, we redesigned the dragon to instead spawn one of several different elemental dragons, each with its own different buff. You can read about the specific reasons why we went with this design iteration, but overall it was an attempt to add depth to what felt like a solved problem (dragon felt either mandatory or irrelevant, depending on the exact stats of the dragon and baron buff at that moment in League’s lifecycle.) This change definitely added complexity to the game, but it also added depth. We feel overall, though tuning will continue for some time, that this was a good change. Dragon became an interesting decision again, even though the burden of learning League (or even the burden of adapting for existing players) increased.
-
Dynamic Queue : In patch 6.1, we launched New Champ Select, which included Dynamic Queue. We’ve talked a lot about this feature (and heard even more!). What I wanted to talk about in this post specifically was our motivation for adding the ability to queue for ranked with larger premades. Again, one of our goals here was to add depth—not to add accessibility. Some players who were frustrated with the feature or what it did to the game thought it was an attempt to make League more “casual” by making it easier to play with friends (and thus, bring more players to the game). This wasn’t our motivation, though.
At the highest skill levels of League, the professional scene, teams are fixed, and teams play together A LOT. Different things happen in that situation: New strategies and even champ comps become viable, but even more importantly you learn to communicate with your team in sort of shorthand. Maybe there’s an acknowledged shotcaller on the team and everyone knows not to argue. Maybe it’s just that the team has been in similar situations before, so they know how to react as an organized entity, not just as five skilled players. Non-pros sometimes get to experience this in tournaments or the Ranked Teams feature. Many Rioters get to experience it in our internal Riot Rumble. That’s the challenge: having a premade team opens up a lot of new experiences for League players, but is inaccessible to almost all of them.
Once you add avenues for playing as a team, instead of as a bunch of random players who may not coordinate or even communicate, it opens up a lot of game depth. At launch, Dynamic Queue had a lot of problems, and some linger to this day. The intent, however, was noble: Solve the problem where strategies are necessarily more limited when you have to re-meet, reconnect, and re-establish communication and play style every time you queue for a new game.
The goal is nearly always to add depth to the game by taking a system that is largely solved and try and make it unsolved (and ideally unsolveable!)
-
Runes : Finally, I’ll take a softball example, but one for which we still don’t have a satisfactory solution (but stay tuned!). Runes were originally added to League for two reasons: as an incentive and reward for obtaining a new Summoner level, and as a way to customize your “character” before a game starts and in addition to choices such as champion and items. We can argue about whether runes are an awesome reward for leveling or whether leveling is even super relevant for League in 2016 and beyond, but that’s beyond the scope of what I wanted to talk about here. What I wanted to talk about is whether runes provide interesting choices in customization — and I’d argue they do not. Very few players really try to come up with new rune builds, and when they do, they are largely inferior (or perceived as such) to established builds. This is largely because runes are passive stats and it’s pretty easy for a large and engaged player base with a lot of data at their exposure to figure out whether a flat MR or scaling MR Glyph is the better choice.
There is a lot of complexity to runes as a system (and this ignores retired mechanics like the Rune Combiner, and need-to-be-retired mechanics like the fact that runes still have tiers), but we don’t get a lot of depth out of it. It’s a solved problem at best, an ear flick at worst, and sort of deserves to either be updated to have depth, or completely retired from the game. We’re going to try to solve the former problem by making runes cooler, and you’ve probably figured out that the solution we want to try is to make them less solvable by having the individual runes be more situational champ to champ and game to game, and having the answer to whether you want A or B to more often be “it depends” or “whatever suits your play style.” The intent of this post isn’t to pitch or announce a new runes system, but I did want to acknowledge that it violates our overall philosophy of complexity being acceptable if the depth is there, because I think most of us would agree, the depth ain’t there in runes today.
Summing it up
The goal is never change for the sake of change, nor to make the game easier to learn in order to rope in a bunch of new players who are frightened by League’s complexity. Instead, the goal is nearly always to add depth to the game by taking a system that is largely solved and try and make it unsolved (and ideally unsolvable!). Runes and Dynamic Queue are good examples of how we don’t always get things right, but still make decisions based on a desire for more meaningful depth.
When I make arguments like this, there are always a few players who argue that this is a fool’s errand, that the community is clever and will always solve everything. They’re right to an extent, but I’d go back to champion selection as a decent bar. Yes, there are often some underpowered or overpowered champs in play, and we make constant updates to the game when it feels like that is happening, but most players still have a lot of agency in champion select. No matter which position you play, there are always multiple champs that you could choose and be able to bring a victory to your team (if there aren’t, it’s a design failure). If we can bring that level of freedom to many of the other choices presented in League, we’d be pretty happy, and we think players would enjoy the game that much more. And the new players who try League, well — hopefully they appreciate the depth enough to bear the complexity.
As always, I’m happy for any of you to ask questions, comments, or call me on my bullshit. I look forward to the discussion!