More Than Meets the Eye: The Secrets of Dynamic Difficulty Adjustment
The following article is a reproduction, and has been modified for this site. The original article, and many more, can be found at RemptonGames.com
In last week’s article I examined some of the most interesting and common hidden mechanics in games. However, there is one category of hidden mechanics that is more varied and pervasive than any other — mechanics that adjust the game’s difficulty and balance. These mechanics are collectively known as dynamic difficulty adjustment.
Dynamic difficulty adjustment (DDA) is a process in which video games will adjust the difficulty of the game over time based on the player’s performance. If the player is doing well the game will become more difficult to add challenge. On the other hand, if the player is struggling the game might reduce the difficulty to keep them from getting stuck.
Dynamic difficulty adjustment can be both short term and long term. Short term DDA usually has to do with the game’s random number generator, and is designed to prevent the player from having long strings of extreme luck, whether good or bad. These systems are more about balancing in the moment, and don’t generally have long term effects on the game going forward.
Long term adjustments, on the other hand, are designed to adjust the difficulty of the entire game to a level that the player can handle. Because every player has a different skill level having one single level of difficulty, or even a handful of options, is not going to be able to cover all players. Long term adjustments are designed to make the game challenging, but surmountable, for each individual’s abilities.
Finally, there are “Always On” difficulty techniques. These techniques are always active in the game, and are designed to make the game more or less difficult without the player ever noticing. These systems come into play when the player has certain expectations about how the game should behave, when the actual internal behavior is different.
The Rubber Band Effect
A common, and much criticized, usage of DDA is what is known as “rubber banding”. This technique, which is commonly associated with racing games (and especially the Mario Kart series), is so named because it creates the feeling that the player and their computer opponents are connected with a rubber band.
The way this technique works, when the player is ahead the opponents speed up, and when the player is behind they slow down. The further ahead or behind the player is, the more the computer opponents react. This technique is designed to make the race more “competitive”, and prevent the player from getting too far ahead or behind at any point. However, this technique can be extremely obvious to the player, and it can feel unfair that the computer doesn’t have to follow the same rules as the player.
While true rubber banding is isolated to racing games, many other games can incorporate mechanics that feel very similar to rubber banding. An example of this would be a sports game where the AI team gets better the further ahead the player is, or an RPG where enemies level up to keep up with the player.
These techniques are not necessarily inherently bad, but they are often used too aggressively. While it can be tempting to make every race / game close and suspenseful, it can also be equally satisfying to leave your computer opponents in the dust (or give your player the power to control how tough the computer should be). In many ways, rubber band mechanics are no different from other forms of DDA, except that they are easily noticed by the player. For DDA to be most successful, it should be invisible — the player should never feel it happening.
Some forms of dynamic difficulty adjustment are less about controlling the overall difficulty of the game, and more about making sure that the player does not experience long strings of luck (good or bad) from the game’s random number generators (RNG). Pretty much every video game has some RNG elements, and it can be very frustrating when things just don’t go your way (as anybody who has lost in Pokemon because they keep missing a 90% accurate move can attest).
An example of this can be found in the XCOM: Enemy Unknown, if you are playing on the normal or easy difficulties. In this strategy game series players are shown a percentage for each attack, which represents their likelihood to successfully hit the opponent. However, these percentages are not reliable — on Easy difficulty the actual percentages are 120% of what is shown.
In addition, the game adjusts these percentages over time based on previous events. If the player has lost teammates, or has missed several times in a row, their odds of hitting will go up. Similarly, if the alien opponents have hit several times in a row their chances will be reduced.
Another example can be found in Mario Kart, in the way the game distributes items. The closer the player is to first place the worse items they get. While first place may only get coins and green shells (the weakest boosts and projectiles in the game), 12th place will get extremely powerful items such as blue shells (which home in on first place and are practically unavoidable) and bullet bills, which give them an extreme boost of speed, invulnerability, and autopilot for a short time.
This type of item distribution is short term because it is only based on your position in the race at the moment. If a bullet bill helps you go from last place to first, you will immediately notice that the items you are receiving are far weaker. This item distribution can also increase the sense of rubber-banding, as described earlier.
One common form of long-term DDA is to have the world level up as the player does. This technique, which can be found in games such as the Fallout and Elder Scrolls series, uses the player’s level as a representation of how powerful they are, and adjusts the strength of enemies accordingly. This prevents the game from getting too easy once the player has reached a certain level and is able to easily defeat all the enemies.
Another long-term technique that is often used is to track the player’s behavior, such as how often they die and how quickly they are making progress through the game, to adjust the difficulty over time. If the player is dying too frequently, for example, the game can make some slight adjustments to make the game easier. This can help the player get past difficult sections of the game, and can prevent them from getting stuck indefinitely.
There are a countless number of factors that can be adjusted by DDA. These include things such as the speed, health, amount and intelligence of enemies, the player’s health or damage output, and environmental factors such as increasing the amount of items or adjusting a time limit. By slightly adjusting these factors over time, such as each time the player dies, the game can adjust its difficulty to the desired level in a way that the player will never notice.
A great example of this can be found in Silent Hill: Shattered Memories. During nightmare scenes when the player is being chased by enemies the game slowly adjusts the difficulty each time the player dies until they are able to move forward. The way this is done is by removing a “sense” (such as smell, hearing, and sight) from the AI enemy, which makes it harder for them to detect and locate the player. If the player dies enough times it also begins to reduce the number of enemies.
This final category is a bit different than the previous ones, because it is technically not a form of difficulty adjustment. However, these examples are related to DDA because they affect the difficulty of the game in a way that players will (hopefully) never notice. The only difference is that these hidden effects are always active — they don’t change based on player performance.
A great example of this can be found in the Devil May Cry series. While it can feel amazing to take on a huge group of enemies at the same time it can also suck to be blindsided by attacks from behind, or have so many threats that you cannot respond to all of them. This is why in this game (and many others) enemies that are not currently on-screen will often slow down or even stop attacking entirely, to allow players to focus on what they can see.
A similar technique can be found in Half-Life. Because it can be so difficult to deal with hordes of enemies at the same time the enemies were actually designed so that no more than 2 would attack the player at the same time. The rest of the enemies would instead run around the player to “flank” them.
Another way to create these “Always On” adjustments is to tweak the way that collisions work in your game. In many platforming games, for example, there is a short period of time where players are still allowed to jump after walking off a platform. This can prevent situations where players fall to their deaths because they waited slightly too long to press the jump button.
Similarly, the collision boxes around objects in games are not always exactly what they would appear. While this can occasionally be frustrating or a mistake, it can also be used to your advantage. An example of this would be making the hitbox around positive items, such as power-ups and collectibles, slightly larger than expected to make them a little easier to collect.
Similarly, you could make the collision around things such as landmines or projectiles slightly smaller than they appear. This can prevent situations where players believe that they avoided the obstacle, only to be hit by it anyways.
Until Next Time!
That is all I have for this week. If you enjoyed this article, check out the rest of the blog and subscribe on Twitter, Youtube, or here on WordPress so you will always know when I post a new article. If you didn’t, let me know what I can do better in the comments down below. And join me next week for a close look at how games can be used for education!