Sweeping and controversial statement: narrative design is about choice.
In fact, you could easily say that every discipline of game design is about choice, because every click and every keystroke a player makes is a discrete choice which they expect to lead to consequences. Of course, to make an informed decision, the player needs to understand the context and the potential consequences behind the decision they’re going to make, so it’s the job of the UX designer, technical writers, and art designers to give them that information. Then the mechanical input of that choice has to be turned into a consequence – a consequence which has to be meaningful and impactful.
Let’s stop a second and take a look at those two marketing buzzwords: what do they mean?
An impactful consequence is one which provides enough feedback to the player to make that choice seem like one worth taking. If the player has their character stab someone with a knife, they expect that someone to double over and die, or at least have a little blood particle effect come out of them. There’s a reason why “bullet sponge” enemies are considered such bad form when it comes to gameplay design. A meaningful consequence is one which matches the expectations which that choice sets up beforehand. If a player is presented with a decision that is built up as something major, and then is given a consequence which doesn’t match the advertised level of significance, they’re going to feel it’s a let-down, and there’s no easier way to run a player into a “quit” moment than by disappointing them.
So, how do most games make their mechanical choices meaningful and impactful? As I’ve mentioned, there’s graphical and audio feedback for one. There’s a whole library of particular screen effects, graphical tricks, and sound design setups which often get referred to as “game feel” – the sort of thing which creates a sort of visceral satisfaction when a button is pressed. Likewise, games often use sound and music to amp up the spectacle of a consequence, to heighten the effect of the choice in question. This is all the work of artists, animators, graphical designers, art directors, sound designers, composers, cutscene directors, and a whole load of other people. A lot of work goes into this sort of thing – and the more high-profile and high-budget the game is, the greater the amount of work put into this sort of thing.
But I don’t have any experience in that kind of work (yet). My experience – which you’ve come to read about – is almost purely in text-based, narrative-driven games mostly created by a single person or at most a very small team. I’m not used to working with artists, animators, and sound designers (although I have on occasion). I don’t get to rely on things like game feel to make the choices I put into my games impactful. I don’t have a custom diegetic UI to make the context behind those choices intuitive. Every choice I present is contextualised through text, and every consequence those choices present are conveyed through text.
Which gives me another problem: in most types of games, choices can be simple and repetitive: certain sequences of keystrokes or button presses produce certain consequences which continue to entertain even when done in rapid succession over and over again. Text doesn’t have that luxury. People don’t like reading the same choices over and over again, and they like making the same decision over and over again by typing it in or selecting it from a menu even less. The result is that unless you’re working with heavily procedural mechanics (and if you are, you might as well be a literal wizard because what you do is magic to me), every choice and consequence has to be its own unique text, written bespoke by an author. When you remember that a game is a vast number of choices, and that every one of those choices might lead to consequences which can have further bearing on the context and framing of further choices, you can see how things can get complicated. A choice with two potential consequences produces two potential beginning states for the next choice, which means the second choice in the sequence is actually two choices, which means the third is four separate choices – and this all just assuming each choice offers two options, which is very rarely the case (and is actually considered bad practise by my publisher).
So. We don’t have game feel. We don’t have cutscenes. We don’t have UI. We don’t have sound design. And we definitely don’t have the ability to frame each choice in a way which takes into account the consequences of each previous choice. So what does someone with no budget and a text-based game format have?
We have stats.
Well, technically, all games have stats, from the score in a backyard soccer game to a carefully calibrated algorithm intended to calculate your character’s interest rates (why yes, that is a very specific reference, thank you for noticing). Stats are variables which essentially exist to keep track of the player’s decisions, which means they kind of solve two out of our three requirements for good choices: by incrementing a stat up or down, we can provide consequences for that choice – and then by using the value of that stat – which has already been altered by previous decisions to frame and contextualise future choices, we can then retroactively give those previous choices impact and meaning while still only needing to deliver a single range of outcomes-turned-contexts for those subsequent choices.
For example, in a soccer game, a referee doesn’t have to deliver a judgement on who wins based on every single move by every single player – that’d mean keeping track of thousands, if not millions of combinations of outcomes over an hour or longer. Instead, they can simply tally up the score and give the win to the team with the most points. This doesn’t render every action which isn’t scoring a point inconsequential because all of those actions serve to maximise the chance of their own team scoring, or minimise the chance of their opponents scoring. As a result, this vast range of choice and consequence can be distilled down to a single statistic, which nonetheless represents the vast number of choices and outcomes made throughout the game.
Stats can also help fit that third requirement as well, by making their values and their intention transparent to the player. For example, if the framing behind a given choice is determinant on the player character’s personal skills – for example, a challenge where there’s an option to use brute force, persuasion, or logic – then having the stats which track the player’s development in those skills visible to the player will help them decide which is the option most likely to get them to succeed. Of course, this only works partway, the narrative itself still has to signpost which of these stats is actually being tested with each action, and there’s the further narrative design challenge of ensuring that the player can’t simply sleepwalk through the whole game by only picking the things their character is mechanically good at, but that’s beyond the scope of this article – and honestly, not as important as simply hitting the basics.
So, thanks to the magic of stats, we have the foundations for contextualising, presenting, and providing meaningful and impactful consequences for gameplay choices. That’s great. How do we start implementing them?
Well, here’s where things get complicated.
See, while stats can fulfil all three of these requirements, implementing them in a way which further fulfils one means doing so in a way which makes it harder to fulfil the others. What do I mean by this? Take for example the need for a stat system to create meaningful consequences. To do this, the stats which a choice alters has to be referenced often enough in subsequent choices to make the player feel like that previous choice has done something to tangibly alter the way they’re playing the game. If a choice alters a stat and then that stat never affects the rest of the playthrough, then that doesn’t feel like a meaningful choice, that feels like a filler option which exists to pretend that a choice was meaningful. Worse yet, when some choices are obviously referenced more than others, then it promotes a certain “golden path” through a game’s narrative, which means that certain decisions have an obviously right and wrong answer. At best, this means certain story branches are soft-locked because they’re considered non-optimal. At worst, it renders all choice within that game an illusion, because there’s only one “correct” way to play through it.
So, how do you fix this? By making sure that each stat gets referenced as many times as possible, and by making sure that any given playthrough shows the player a roughly equal number of consequences based on which stats they’ve chosen to affect through their choices. This means it serves your interest to have as few stats as possible, because providing sufficient feedback for four stats is a lot easier than doing it for twenty, doubly so when those stats interact with each other in combinations. If you have too many stats, you risk either having only a fraction of them actually be useful (a common problem with tabletop RPG systems) or simply overloading yourself with too much work trying to ensure they’re all relevant.
Of course, there’s a problem with using as few stats as possible – well, two problems really. The first is that each stat serves as an axis of choice for the player, and the fewer stats they feel like they can affect, the less choice they feel like they have. At its worst, this can manifest itself in what’s called the “rich get richer” problem, or the “positive feedback loop”, where a player chooses options which maximise their use of a single stat, which alters that stat in a way which encourages them to continue using that stat – at which point all the other stats might as well become irrelevant because to the player, the one stat which powers the feedback loop is the only one that matters. The same thing can happen the other way around, with negative feedback loops. In either case, the player is forced to optimise their playthrough in a way which effectively reduces their strategy to the use of a single stat.
The way to fix this is simply to have the consequences of a decision contextualised by one stat affect another. Instead of having a choice gated behind high strength or high intelligence increase that same stat, it increases the other: higher endurance lets you study for longer, higher intelligence lets you find more efficient workouts, and so on. To do this though, you need to have those different stats in the first place – and you can’t just have choices gated by one stat only affect a second stat all the time because then you’ve just created the same feedback loop with extra steps. This means you necessarily have to diversify if you want to ensure that the player always has options which don’t just consist of a single optimal cheese strategy.
The second problem is one of contextualisation. If the player wants to feel like the choice they make is an informed one, then they have to have at least some idea of what they’re choosing and what it entails. That doesn’t mean that they should necessarily have access to every detail of the resulting consequences (I should do something on information availability and transparency in narrative design at some point), but it does mean that they should feel like it’s a decision which they’ve made of their own will, not one they’ve been tricked into out of ignorance (being tricked into as a design intention is, of course, a different thing, and I might write something on that later too).
That means when a choice is determinant on a given stat, the player should know which stat is being tested, which in turn means that the decision has to be presented in a way which makes the relevant references known to the player – which means the stat being tested needs to be specific enough for the player to categorise it.
For example, if you have stats covering physical strength and education, and you want to present an option in a choice where the player character can use their intuition or practical knowledge to progress, you have a problem: you don’t have a stat which maps to that sort of thing, which means your player won’t know what kind of stat is going to be tested – and as a result, they don’t know whether choosing that decision plays to their strengths or weaknesses. They feel cheated because they feel like they haven’t been given enough information to make an informed choice, which means no result feels satisfying, because no result is one which results from anything other than guesswork.
Naturally, the design response here would be to simply add another stat, one which covers practical knowledge and intuition – but then you have to ask if you have enough corresponding tests and options throughout your game to make investing in that stat mechanically viable or not. Will a player feel as if developing that stat is worth the opportunity cost of not developing others? Or will they feel that it’s just a niche pick, something sub-optimal and redundant, which means that players who have invested in that stat will feel cheated when they realise how unviable it is – and likely question why that stat was added in the first place.
That means it’s sometimes better to resort to another option: to simply not present those sorts of options at all, to only offer choices which can be covered by a very small number of stats. This is made a lot easier if your game has a very tight focus: a game about professional hockey players doesn’t need a flower-arranging skill. However, if the game’s scope is wide enough to realistically encompass a wide range of potential challenges in numerous disciplines, a small number of stats and a correspondingly small number of choices might feel limiting, or overly linear. Still, I’d argue that it’s better that have the player feel overly limited rather than cheated by a system which is full of sub-optimal “trap” choices.
So that leads us to the $64000 question: how many stats should you have in your game? Personally, I prefer to use three or four “core” attributes which are set through a series of highly consequential decisions. That means every time the player gets to raise (or lower) these stats, it’s a big deal. In the meantime, I also tend to use a plethora of hidden or “optional” stats, ones which may not factor into a player’s given playthrough at all, and which a player can choose not to engage with: this includes things like stats for tracking subplots (which will naturally still fold into the main plot somehow – these still need to be consequential) and relationship values with side characters (ditto). There could be dozens, if not hundreds of these, but because the player has the option to engage or refuse to engage with them with a lot more freedom, and the individual results tend to be a lot less consequential, it allows for me to spread out a large number of relatively low-stakes choices to keep the players interested, while saving the big choices for when I need them.
Of course, I write a very particular sort of game, generally one where the player character inhabits a relatively narrow role within the setting – a single occupation or social class. A more flexible, “covers-all-bases” answer might be something like “as many stats as you need, and as few as you can get away with”. That means you add a stat for anything you need to track to provide good choices for your players – but also try to keep those stats as few as possible within those constraints to ensure that each of those stats can be consequential to the players who choose to engage in them.
Hopefully, that gives you some useful advice on how to approach stats, how they frame the choices which you want your players to make, and how to use them. As usual, this is all stuff based on my personal experience, so don’t be afraid to deviate from this if a different approach works better for you.