Dynamic game difficulty balancing (DGDB), also known as dynamic difficulty adjustment (DDA) or dynamic game balancing (DGB), is the process of automatically changing parameters, scenarios, and behaviors in a video game in real-time, based on the player's ability, in order to avoid making the player bored (if the game is too easy) or frustrated (if it is too hard). The goal of dynamic difficulty balancing is to keep the user interested from the beginning to the end, providing a good level of challenge.
Traditionally, game difficulty increases steadily along the course of the game (either in a smooth linear fashion, or through steps represented by levels). The parameters of this increase (rate, frequency, starting levels) can only be modulated at the beginning of the experience by selecting a difficulty level. This often leads to frustrating experiences for players as they attempt to follow premade learning or difficulty curves, which poses many challenges for game developers; as a result, this method of difficulty scaling is not ubiquitous.
Dynamic game elements
Some elements of a game that might be changed via dynamic difficulty balancing include: Speed of enemies Health of enemies Frequency of enemies Frequency of powerups Power of player Power of enemies Duration of gameplay experience
Approaches
Different approaches are found in the literature to address dynamic game difficulty balancing. In all cases, it is necessary to measure, implicitly or explicitly, the difficulty the user is facing at a given moment. This measure can be performed by a heuristic function, which some authors call "challenge function". This function maps a given game state into a value that specifies how easy or difficult the game feels to the user at a specific moment. Examples of heuristics used are:
The rate of successful shots or hits
The numbers of won and lost pieces
Life points
Evolution
Time to complete some task
... or any metric used to calculate a game score. Chris Crawford said "If I were to make a graph of a typical player's score as a function of time spent within the game, that graph should show a curve sloping smoothly and steadily upward. I describe such a game as having a positive monotonic curve". Games without such a curve seem "either too hard or too easy", he said.
Hunicke and Chapman's approach controls the game environment settings in order to make challenges easier or harder. For example, if the game is too hard, the player gets more weapons, recovers life points faster, or faces fewer opponents. Although this approach may be effective, its application can result in implausible situations. A straightforward approach is to combine such "parameters manipulation" to some mechanisms to modify the behavior of the non-player characters (characters controlled by the computer and usually modeled as intelligent agents). This adjustment, however, should be made with moderation, to avoid the 'rubber band' effect. One example of this effect in a racing game would involve the AI driver's vehicles becoming significantly faster when behind the player's vehicle, and significantly slower while in front, as if the two vehicles were connected by a large rubber band.
A traditional implementation of such an agent's intelligence is to use behavior rules, defined during game development. A typical rule in a fighting game would state "punch opponent if he is reachable, chase him otherwise". Extending such an approach to include opponent modeling can be made through Spronck et al.′s dynamic scripting, which assigns to each rule a probability of being picked. Rule weights can be dynamically updated throughout the game, accordingly to the opponent skills, leading to adaptation to the specific user. With a simple mechanism, rules can be picked that generate tactics that are neither too strong nor too weak for the current player.