Dice have been used since before recorded history. They’re used to predict the future, for math, and most importantly, in games! They’re a handy physical doodad that helps simulate randomness: the idea that there are unpredictable outcomes to some situations. Today we’ll be diving into how randomness is applied to games, why it is useful, and why I ultimately decided against using it in my upcoming narrative game.
Preview
- 12 Minute Read
- Beginners/Intermediates
- Useful for game- and narrative designers
Video
If learning through video is more your style, I have a video on this topic instead:
Why Do Games Use Randomness?
If you’ve ever played a tabletop game you are probably familiar with how dice are used. You roll the little clickety-clack stone, it lands on a number, and that number represents some value. A very common example of this is combat: you roll dice, you add the numbers, that’s the amount of damage you deal to your opponent. But why use dice for that? Why not just express that damage value through a constant number?
Simulation
One explanation is reproducing factors that are beyond the player’s control. Let me explain. If you’re making a simple war game where dice represent your army, you might not want to include the lay of the land, the state of your troops’ equipment, weather conditions, or any other factors that can change the outcome of a real-life battle. Accounting for all of that will make the game slow to play and hard to learn. So you can let the random numbers of dice simulate that for you. Rolling high numbers means all those factors were in your favor and rolling low means luck was against you.
Risk
Another explanation is people’s emotional reaction to risk. People react strongly to getting good or bad results, with joy and frustration respectively. These emotions introduce a very human element to your game; succeeding in challenges now feels more rewarding and taking risks feels more dangerous.
A good example of that approach is tabletop roleplaying games, such as ‘Dungeons & Dragons’ or ‘Kids on Bikes’. In those games, you play a character, usually of your own creation, and cooperate with other players to tell a story together. Interactions within the story, like physically moving a heavy object or trying to persuade a non-player character, are determined by a roll of the die. The story than takes a turn when you roll excessively bad or exceptionally well!
Skill Check
This is generally referred to as a skill check, a die roll that needs to beat a specific number to succeed. Skill, a numeric representation of your character’s personal attributes such as strength, intelligence, or charisma, is then added to the roll. If you fail particularly badly at your skill check, usually something bad happens to your character in the story. For example: your character Betty Steelarms rolls a Strength skill check to try to flip a police car, but fails. The cops then exit the car to arrest Betty. But imagine how cool it would have been if she succeeded instead!
So, randomness can be pretty useful! It helps create risk without having to account for real-life factors and it introduces a chance element to your game, which keeps players emotionally invested. So what are the downsides of using randomness in narrative games?
What’s the Problem with Randomness in Game Narrative?
While playing tabletop games: “Why am I rolling so badly today?” is a sentence I hear my friends say often. Notice the subject, ‘I’, there. Even though dice are random by nature, players feel some control over rolling them. In digital games where randomness exists, but dice are not physically present, some of this sense of control is lost. Players might think a computer generating a low outcome for their “roll” is unfair because they didn’t throw the dice themselves.
In story-driven narrative video games, randomness often takes the same form as the tabletop roleplaying games I described earlier. Some story branches are locked away behind skill checks, or good and bad outcomes are decided by it. One of my favorite video games, ‘Disco Elysium’, takes this approach. You interact with people and objects through dialogue options and rolling skill checks now and then to unlock a new option.
Failing is often just as interesting as succeeding, and failure is a big theme in Disco Elysium. Still, in some critical moments, I’ve found myself wanting a good outcome and being unsatisfied with the bad one. The game allows you to save and load, and the dice roll is different each time you do, so there’s nothing stopping you from trying again and again. Your skills are also changed by outfits, so sometimes I found myself changing my wardrobe in front of people to have a better chance at succeeding a skill check. Doing that a couple of times can really take you out of the experience. You can retry some skill checks after you’ve leveled up your character as well, which really undermines the consequence of failing them in the first place.
Other games that have similar skill check interactions, like ‘Sunless Seas’ and ‘Sunless Skies’, automatically save the game whenever you get the results of the roll, forcing you to roll with the punches so to speak. Just like in the tabletop roleplaying games we talked about before, there is no going back and retrying. What’s different about these games is that the story is systemic, a design principle I talk about at length in this blog post. Each run of these games can be seen as a unique story with new characters, different goals, different skills, and a different end. Failing a roll is just another way to make your run unique.
For the latter examples, I think randomness is well suited to its style of storytelling, but for Disco Elysium and other traditional branching story video games, I often wonder if there might be a better alternative to the randomness of skill checks. An alternative that doesn’t involve grinding experience, changing your outfit or saving and loading a bunch of times to succeed.
How To Not Depend On Randomness in Narrative Games
So how can we get rid of those random elements, but keep the benefits of what they achieve? Let’s create an example of a game together. In this game, the player investigates a crime by finding evidence, questioning suspects, and going to places at the right time. Let’s say all of these interactions are done via dialogue options that are displayed in a list. When a player chooses a dialogue option, it will follow a unique branch of the story based on that choice.
For that, we want to keep the benefits of skill checks but do away with unpredictable randomness. A good way to go about removing randomness from your game is to see what purposes it serves in the first place, and then find a different solution for each one. Let’s do that now!
Risk
With dice roll skill checks, it is often implied that succeeding a check has a good outcome and failing a check a bad one. That risk builds the emotional load of joy and frustration. For our game, I propose that a skill check is only available if the player’s skill meets the number specified to succeed in a challenge. You can see it as a gate that locks a dialogue option where skill is the key to open it. This means there is no risk of failing because of unfair random numbers.
My reasoning behind this is that the skill only determines if you can do something, but does not determine if you should. Succeeding a skill check does not mean you are free of its consequences. To achieve that, many skill checks we write should potentially lead to negative outcomes. The player must then use logic and empathy to navigate that themself. For example, a skill called Coercion would allow the player to pressure people emotionally. Using this skill could make interrogations easy, but will sour their relationship with that character, which might have unforeseen consequences down the line. If they somehow damage that relationship permanently, it is ultimately the player’s choice. Note that this does usually require foreshadowing so players are not completely in the dark of any harsh consequences.
Cool, so we add risks to the story branches themselves. What’s next?
Replayability
Normally, dice rolls can create replayability by locking you out of certain options if you fail a skill check. A lot of people would be curious to see other outcomes than the one they had. However, if a player achieves the same outcome, even in their second playthrough, because of chance, wouldn’t that be aggravating? Potentially, we’ve already fixed this problem by locking branches behind a skill gate. If a player’s playthrough is drastically different with a different set of skills, this can motivate them to play again and see the other skill’s branches.
While testing this out, I ran into some problems with this. In order to create a different experience for every playthrough, you need many different branches, resulting in a big list of dialogue options. Many of these options would be locked off to the player initially, because they might not have the necessary skill. That will quickly clutter the screen and overload the player with choices. Even the options themselves might act a bit like spoilers, giving away information the player is not supposed to know without investing in those skills.
We could just hide all dialogue options the player does not have enough skill for. Then the player wouldn’t know where to find any new dialogue options available to them when they do invest in that skill though. Also, if the player is not aware that there are other options to choose from, they might not even be motivated to try another playthrough at all!
So I came up with something deceptively simple that solves those problems. Let’s say that in our game, each skill can be improved from 1 to a maximum of 5. That means that the player cannot select a branch option with a skill check of 4, if they only have 3 in that skill. Now, my little trick is to reveal skill checks that are 1 higher than the player’s current skill but hide any checks that are higher than that. So the skill check of 4 will be visible to the player, but they still won’t be able to actually select it. A skill check of 5 would not even show up in the options.
This way, you might wonder what will happen if you come back with more Observation or Knowledge.
That means that the player will see dialogue options everywhere around the game that aren’t available to them yet, but will be if they improve that skill by just 1. What’s more, if they do improve that skill, a whole slew of new options of 1 point higher will become visible! This gives players feedback on their progress, motivates them to keep exploring areas they’ve already been to, and most importantly, asks the question: “What will be different if I restart with different skills?”
Great, we’ve added some replayability using skill checks! Now, on to the last purpose of randomness.
Simulation
As I described in the war game example at the start of this blog post, you can use randomness to reproduce factors that are overly complex. Since we try to not rely on randomness in our example game, we could just choose not to implement any complex variables. For simulation, it’s best to decide on a case-by-case basis which factors you should include. For example, are weather factors going to be important to our example game? Probably not, but let’s include it anyway, for the sake of this exercise.
Let’s say we want to include snow and rain so that the footprints of the perpetrator our player is chasing get left behind as clues or wash away respectively. Instead of switching between snow and rain by chance, we can opt for a repeating pattern. For example, we have snow in the morning, rain at noon, snow again in the afternoon, and rain in the evening. This pattern then repeats exactly in that order every playthrough.
If you layer enough of these repeating patterns on top of each other, it gives the illusion of complex real-life factors. The difference, however, is that now players can recognize and remember the pattern to plan their actions accordingly. It becomes a puzzle instead of a gamble. I think in the case of a crime investigation game like our example, these elements should be predictable. That way players can use their deduction capabilities instead of their luck!
Ultimately, it’s up to you to decide if simulating complex factors is relevant to your game, but in the context of narrative, I believe randomness should be applied sparingly for this purpose.
Conclusion
Randomness has many handy uses in games, but it’s important to know why and how it is being used to see if it fits yours! Especially in narrative games, randomness can easily become frustrating to players if it’s not applied appropriately. Make sure randomness is the right tool for your game by examining what goal it serves. If it doesn’t fit your themes, mechanics, or aesthetics, go through those goals one by one and try to find alternate solutions that achieve the same results.
We’ve talked a lot about skill checks in this blog post, which I’ve found is the prime example of randomness in narrative games. Surely you can think of many other creative ways to apply randomness to your storytelling.
To conclude, randomness should be used sparingly in narrative, but that is not to say that I’m trying to dissuade you from using randomness in narrative games at all! In fact, I dedicated a whole other blog post to probability in procedural narrative.
TLDR
In games with branching stories, often there are random dice rolls involved that lock off or open up certain branches. Procedural narrative also uses randomness to advance the plot in a non-linear manner.
You can usually find alternatives to randomness on a case-by-case basis. I prefer conditional and reactionary storytelling over randomness if the story calls for it.
Experimentation is always encouraged, but I advise against over-relying on randomness when it comes precise and impactful storytelling.