Dynamic difficulty has a negative stigma among many gamers. In theory, it serves a good purpose - the game is adjusted to each player’s individual skill-level. In practice this often manifests as an overly visible curbing of what is perceived as a game’s ‘true’ difficulty, as it adapts to a player who is deemed ‘unskilled’.
As a player it feels bad if we can’t play a game with what we perceive to be the ‘right’ level of difficulty, but this conflicts directly with a developers desire to have every player challenged equally. For this to happen, difficulty must be adjusted for each person. It’s when these techniques are too obvious that problems arise.
The key is that dynamic difficulty, when it’s done right, is about tailoring the overall curve of the entire game to each player, and not simply removing a challenge if they fail at it a few times. We monitor current events and adjust future challenges. We don’t curb the difficulty of the current encounter.
This ties very closely to a concept called flow. There are many articles (and books) on this concept already, but simply, it is the zone where a player is being perfectly challenged. The point where they are neither finding the game too hard nor too easy. Again, this will be different for each player, and of course this level of challenge should rise as the game goes on and the player becomes better. Shameless plug - see this article about how to increase challenge when skill doesn't change.
In reality almost all games have an aspect of difficulty tuning within them, whether it’s as extreme as left 4 dead’s ‘AI Director’ that dynamically rearranges levels and enemy pressures based on how well you’re doing, or as subtle as code making a random number generator a little less random so that no one ever gets too unlucky with it.
Essentially the trick is to keep your system invisible. You don’t want the player to see that the bar has been lowered for them. This is usually done in two main ways.
1 - You make sure your difficulty curbing affects things in an analogue way, not a digital way An analogue change can be represented on a sliding scale. These are things like how much damage the enemies do to you, how much time they take to attack after noticing you. A digital or binary change is something that can only be changed in big increments - reducing enemy numbers, stopping those enemies from performing certain attacks, giving the player a powerful pickup on respawn, erecting more geometry to make the level layout more manageable and so on - these things are easily noticed.
however, this is often not as clear cut as you might like. For example reducing the player's health often goes largely unnoticed as they usually have quite a lot of it. Reducing the enemies health on the other hand is often very noticeable as the opponents now fall significantly faster or take less hits. The point here is not to take the analogue rule too far, it’s almost always a judgement call.
2 - You set the difficulty of FUTURE encounters using the data from the current one This is about two things. Visibility, and flow. Your task is to gauge the players skill and set the remaining challenges accordingly. You don’t want the current challenge to change in difficulty or they will become aware of the system, and you also don’t want to change anything in isolation, or they will simply hit a brick wall again in the future.
Now you may be thinking, what if the player get stuck on a very difficult part, and can never get past it - even if the game is making the future challenges easier, if they can’t get past their current point, they will likely give up. This is a real problem, and solutions vary, but ideally, your skill level will be moving up from such a low level in the beginning of the game anyway, that this automatic skill adjustment should have a long time to kick in before this problem has a chance to rear its head.
One last point - I often encounter designers who only think of these systems as going from the ‘true’ difficulty, down to an easier level. This should not be the case. You should also account for very skilled players and allow the difficulty to increase. This will ensure that your less skilled players will not be frustrated, but your skilled players will not be bored either.
A subtler approach
So like I say this will be a judgement call based on your own design requirements, but just to spark your imagination here are some of the implementations that I personally lean towards.
Those are of course just a few examples, but however you do it, keep it subtle, and make sure you’re altering the challenge of the entire game, and as clever as your system might be, resist the urge to publicize it!
This is the first in a four-part series on difficulty in games.
Part 2 is all about the relationship between difficulty and readability.
Part 3 is about mechanics that allow players to set their own difficulty.