Randomness, and “Random Value Absorption Thresholds”

Randomness is very important in game design! This is because randomness allows us to make the game state larger and more complex, without overwhelming the player with too much information and therefore calculation. I’ve been writing about randomness for over a decade at this point, but this article represents my latest, most updated views on the topic. Let’s review some of the old stuff, and introduce a couple of new concepts that can hopefully help you use randomness better in your own designs, or at least, think about new possibilities.

  • There were first two types of randomness: input and output, which refer to when the randomness happens. Is it before the decision (input), or after the decision (output)? (I must credit the Ludology Podcast for bringing this distinction to my attention originally.)
  • There’s a second axis of randomness: this axis that refers to how uniform (or you could say “how fair“) the randomness is. This creates uniform and variable randomness. Uniform randomness being “randomness without replacement” (i.e. cards from a small deck that gets reshuffled) and variable randomness being randomness with replacement (i.e. a die roll).
  • Most recently I’ve been thinking of adding a third axis, which asks about could call weak and strong, which refers to how impactful that randomness is on a game state.

Weak and Strong Randomness

Basically, the “impactfulness” axis refers to the dynamic range of randomness. If you’re drawing cards, but all of the cards have somewhat similar value (this is somewhat the case in Dragon Bridge), that’s weak randomness. Whereas if the cards have dramatically different value, like in Magic: the Gathering, that would be stronger randomness.

Weak randomness is randomness that usually has a minimal effect on the outcome of the state. XCOM has classic “to-hit %” combat that gives you a percentage to hit or miss, and on top of that it has a damage range when you do hit (something like 3-5, perhaps). We can make that randomness more strong by making the damage range larger, or by having a wide variety of highly impactful effects that may or may not happen on-hit. We can make that randomness more weak by getting rid of the chance to miss (you always do 3, 4 or 5 damage when you fire), or by keeping the chance to miss but making the damage amount fixed (you always do 4 damage). Critical hits are an example, usually, of stronger randomness in that they usually widen the dynamic range of randomness, sometimes to a very significant degree. For example, in Team Fortress 2, critical hits would deal four times the normal amount of damage.

As with the other two axes, this axis is continuous and not a binary quality. The question is not “is this strong randomness?” but rather “how strong is this randomness?” There will be grey area cases where it’s sort of somewhere in the middle. The point is that you can, as a designer, push your randomness in one direction or the other.

Safeness and Riskiness in Randomness Design

I have organized the chart in a specific way, by putting the “riskier” types of randomness on the bottom row, and the “safer” types of randomness on the upper row. This is because the types of randomness on the bottom half of the chart are, put simply, “more random”. They have more of a capacity to have some of the bad effects that we associate with randomness, such as a feeling of a match being meaninglessly thrown out, or certain interactions feeling unfair or frustrating.

Meanwhile, the “safer” row are kinds of randomness that could be thought of as fundamentally “less random”. They are less likely to result in those bad effects of randomness. However, they do run the risk of being insufficiently random, and failing to do the thing that we put randomness into games in the first place. Games with nothing but weak, uniform, input randomness will quite possibly feel a lot like playing a perfect information game, in that while yes, there are technically random events, they’re easy enough to calculate out with near-perfect accuracy that they don’t do the job.

Perhaps Puerto Rico could be said to be an example of this sort of failure of randomness, wherein the only random element is which plantation tiles come out, which are definitely input and weak, and moderately uniform. Because of this, Puerto Rico basically plays more or less like a perfect information game, and the state has to stay relatively simple as a result.

Random Value Accumulation

Random events in a game are either adding or subtracting some random amount of value/power/position from a player. In the XCOM example, if your unit gets a critical hit on an alien, instantly killing it, your position is improved, perhaps even significantly. Some amount of value has been given to the player, as a result of randomness, which will help them succeed. We can call this value “random value“.

As with many things in game design, the objective with this random value is to make sure that we have enough of it that it’s doing the job of randomness, but not so much that it is the thing driving the car. We want the player to be mainly driving the car; we want the final outcome to be a pretty darn clear result of the player’s inputs throughout the match. We don’t want players to have to play five, ten, or more matches to figure out if they’re really winning or if it’s just randomness swinging their way. In these cases, we’ve allowed too much random value to accumulate and swing the match, providing a match result that isn’t much more meaningful than that of a coin flip.

Historically, games deal with this sort of problem by playing many matches. A “Best Of” series, tournament or other structure is common in highly random games like Magic: the Gathering and Poker to try and mitigate the problem caused by too much random value accumulation. But, it’s pretty hard to deny that it would be great if you could get a meaningful signal out of just one match, all else being equal.

A quick aside, regarding a common point people make about randomness and random value accumulation: to some extent, random value automatically decays over time, because while you may crit on turn 3, you may also miss on turn 5. Over time, rolling a lot of dice tends to move the value toward the average (this effect is of course pronounced in a system with uniform randomness). The magnitude of this effect is, however, often overstated, and this is because of the fact that not every dice roll is equally as important as every other. Getting a critical hit on a high value target at an early point in the game is not nearly as valuable as getting a critical hit on the last target when you’ve basically got the game won already.

So what do we do? What tools do we have in order to mitigate match-ruining random value accumulation?

Absorption Thresholds

Something I’ve been thinking about a lot over the last six months, partially informed my experience with Magic: the Gathering and more recently, Hearthstone: Battlegrounds, is the concept that I’m calling “absorption thresholds“. I think this is a very important concept for game designs that involve randomness. An absorption threshold is a mechanism that “cuts off” excess random value and removes it from the game state.

A classic example of an absorption threshold that we all already use is the typical “health/damage” system found in countless games. In these systems, damage that is dealt beyond that unit’s health is “absorbed” by the system. So if your unit has five health, and I do 15 damage, it is the same as if I did five damage: the remaining ten damage is absorbed by the system and removed from the state, unable to accumulate in any way and affect the final outcome of the match.

In my opinion, Magic: the Gathering has much better systemic rules than Hearthstone does. One of the reasons for that is the fact that in Hearthstone, every single point of damage you deal to a creature is recorded. Whereas, in MTG, non-lethal damage that creatures take is removed at the end of a turn. According to a friend of mine, this was actually originally done not for any systemic game design purpose, but because it would have been too annoying to do the book-keeping otherwise. But it was a really happy accident.

One of the basic problems with any “creature-basher” is that at some really fundamental level, it shares something in common with the children’s card game “War”. In MTG, there’s a ton of strategy and tactics, but fundamentally, you are drawing cards from a deck, cards that have some variable value, and playing them at each other to do damage. In the “War” example, one player plays a card with a value of “3”, and then the next player plays a card with a value of “4”. MTG’s strategy layer is built on a base that is fundamentally very similar. (MTG players have developed a rating system that rates cards on a scale from 1-5 that actually creates a pretty neat one-to-one comparison with a game of pure integers, like War.)

Obviously, MTG players and designers do not want the game to be like the card game War, and so there are many mechanisms that complicate the question and mitigate that effect. Damage absorption is a very big and systemic answer to this that MTG has and it makes a significant difference, as compared to Hearthstone. (This difference might be hard to see in practice because of other rule changes—most relevant is Hearthstone’s non-random Mana system, which makes the game significantly less random on an axis that can be brutally random in Magic.)

Another experience that has informed me on this is also an experiment that I tried with Gem Wizards Tactics‘ campaign mode. In Campaign Mode, you do a series of battles one after the other until you try and win a final battle. Throughout this time you’re adding new units to your army, getting upgrades, and the like; it’s a bit like XCOM‘s system, but a lot simpler. For one patch, we tried out a rule where your units’ health was recorded from match to match. So if your Reaper ended the match with just one health point remaining, at the start of the next battle they would have one health point.

Above: Gem Wizards Tactics’ Campaign Mode overmap screen.

The most profound ramification of this new rule was that now, every single point of damage mattered. You could no longer “spend” some health points to achieve some objective (or at least, the bar for doing so was dramatically higher). It also let the effects of randomness, say, in the combat system, accumulate over time, whereas simply resetting everyone’s health at the end of a battle acts as an absorption mechanism for all of that randomness. This rule ended up being a really oppressive one, and it was removed in the very next patch, but it reminded me how important setting these kinds of thresholds can be.

Binary win/loss condition

Over the years I’ve had some difficulty explaining exactly why binary win/loss conditions have been so important to me. It has long been my position that single player strategy games that resolve with a score, or other strategy games that give “places”, are games with rulesets that can be improved upon in the future. I think that strategy games should strive to find ways to have a binary win condition, if possible (notably, two-player games that resolve in a score have a binary win condition).

The binary win/loss condition is, in some ways, the ultimate absorption threshold, in that it “cuts off” excess value at some point. Not every single point of value matters; you only need to get over a certain amount of value in order to win. If you have something like a “ranking system”, as in Hearthstone Battlegrounds (which by the way, I’m playing a lot recently!), now we’re making it the case that every random outcome mattered, and HSBG is a very random game!

Strangely, in one of the tooltips for the game, it says that “getting fourth place or higher” is a “win”. Okay, that makes sense to me, but then why does the game keep going after I’ve won? If I was making suggestions to the design team for HSBG, I would suggest that they end the match when the fourth player has been eliminated, and the remaining players all “win” and don’t get a “placement” (as in 1st, 2nd, 3rd, etc). Some have argued, “well, but I want to know who’s army of the top ones is the best“. It’s an understandable request, but I recommend that people try and think of it like how you don’t know which teammate’s army is strongest necessarily at the end of a Starcraft 2on2 battle. But beyond that, HSBG doesn’t have the pure match length required to really answer that question anyway. By the late game, when two players are left and vying for first place, there will usually only be one, possibly two fights left that determine the outcome. And again, HSBG battles are very random! Knowing “of these two really powerful forces, both of which have random effects going off all over the place, which of them will win a single battle” is about as valuable as knowing which side a coin landed on when flipped.

But in a HSBG match, you do many of these, and another very good absorption mechanism in the game is how damage is dealt to players. The stupid version of this game would be one where each surviving creature deals its damage to the opponent after winning a battle. But in HSBG creatures deal damage based on their “shop level”, a number that never gets higher than 6. This means that even if you win by a very large margin with creatures with 100+ attack or more, a lot of that extra (at least partially random) value is “absorbed” by the system.

There are so many ways to implement absorption methods into your games, and it’s important that games with randomness (and games kinda need randomness, if you ask me!) do so. Eurogames tend to have lots of these, so I recommend looking to them for more inspiration.

Thanks for reading! This article was made possible by my Patreon Patrons. Consider becoming a Patron and get early access to my design prototypes, special Discord roles and a bunch more.