Profile-Based Adaptive Difficulty
🕹️

Profile-Based Adaptive Difficulty

Tags
Game Development
Systems
Research
Published
April 8, 2022
Author
Mathias Bauer
Learn the fundamentals of (Profile-Based) Adaptive Difficulty Systems in videogames, plus how and why you should (probably) use it.
 

Adaptive difficulty in videogames

One of the earliest examples I know of a videogame using an adaptive difficulty system might be Gradius from 1985. Arcade games back in the day were usually very hard in order to draw players back in for "just one more round" (and just another dollar). Gradius, however, implemented a formula for adapting its difficulty based on the players' deaths, the current level number, collected power ups, and some other stuff:
 
Another, maybe better known, example is the PlayStation classic Crash Bandicoot 2: Cortex Strikes Back. The idea was to make the game enjoyable and playable for a more casual, broader audience without compromising the experience for better, more hardcore players. The idea was simple: If novice players die a lot, just give them an item to prevent immediate death.
Gradius (1985). Source
Gradius (1985). Source
Crash Bandicoot N. Sane Trilogy. Source
Crash Bandicoot N. Sane Trilogy. Source
Ever played Mario Cart? Then you might have recognized that you get the best items out of those weapon boxes if you’re in the last position. Further, if you are in first place, the so-called "rubber band AI" might start to take action, unceremoniously overtaking your position.
 

Flow

Besides opening a game to a broader audience, adaptive difficulty in videogames also aims towards keeping players in a state of flow. Csikszentmihalyi developed the technical term "flow" in 1975. Plochberger summarized the terms criteria in 2015: Csikszentmihalyi summarizes it as a reflection-free experience, under complete immersion in a smooth-running activity together, in which you still have control over the situation despite its high demands [1].
Based on Csikszentmihalyi's findings, it might be a goal to keep players in a constant state of flow. In videogames, a flow state might occur when the game’s difficulty is balanced, so that players are challenged but not overwhelmed or underchallenged.
Flow state model for videogames. Based on Csikszentmihalyi work (2014, p.107) [2]
Flow state model for videogames. Based on Csikszentmihalyi work (2014, p.107) [2]
 
That’s all nice and stuff, but I thought this post was about a profile-based adaptive difficulty system!
Got me.  Let’s move on.
 

Profile-Based Adaptive Difficulty

An adaptive difficulty system alters the difficulty for varying reasons. There are a lot of different systems trying to achieve adaptive difficulty through different approaches. One approach I was interested in while writing my bachelor's thesis is the profile-based adaptive difficulty system (from now on called "PADS"). Much smarter people developed a PADS in 2010 to enhance the gaming experience:
How PADS works. Based on the original work of Yun, Trevino, Holtkamp & Deng (July 2010, p.33) [3]
How PADS works. Based on the original work of Yun, Trevino, Holtkamp & Deng (July 2010, p.33) [3]
In the above example, the player is assigned to one of the previously selected profiles. This is done by querying the relevant information for the game (more on that later down below). The authors point out that the components of the profile as well as the process of collecting the profile can be chosen in varying ways depending on the genre of the game.
 

My take

So... it's time to do some independent research.I was kind of hooked by Csikszentmihalyi’s flow model and the PADS presented by Yun et al. So, in 2019, I developed an endless runner videogame for my bachelor's thesis. My goal was to compare two different versions of the same game: a version using PADS and a version using a linear system of increasing difficulty.
In the PADS version, players were asked how much experience they have playing video games. Next, they were asked about their goal and why they play videogames in general.
Then, the game starts. In an endless runner, you run from left to right indefinitely.You jump from platform to platform. You lose if you fall off a platform or jump into the ceiling.
Every few platforms, a trigger is reached, calculating a performance number (read below).
notion image
 
Some pictures of the game I made in Godot:
 
notion image
notion image
notion image
notion image
 
How do I adjust the game’s difficulty, though?
Right. Generally speaking, larger platforms that are closer to each other are easier to jump on. In contrast, smaller platforms with a larger distance between each other are harder to reach. That's the basic difficulty rule.
A player's performance can be measured by where he or she lands on a platform. A platform can therefore be subdivided into smaller chunks with colliders. If a player barely lands on the edges of a platform, the player's performance score is decreased (red areas). Landing more in the center of a platform but still close to the edges, the player's performance score is less reduced (yellow areas). Landing a perfect jump on the center of a platform increases the player's score (green area). There are seven platforms with varying sizes and hitboxes:
notion image
Thanks for reading 💖 Mathias
A higher performance score means that shorter platforms are spawning and the distance between platforms is bigger. A lower performance score means that easier (bigger, longer) platforms are spawning closer to each other.

Results

In total, 70 participants took part in my study. Using a flow short scale, the flow was measured after playing either the game with PADS or the game with linearly increasing difficulty.In the end, after cleansing the data of outliers, I was able to compare the flow values for both game versions.
The average flow score of the version with the PADS algorithm was 4.978.
The average flow score of the version using the linearly increasing difficulty scored a flow value of 4.772.
To see if there were differences between the two groups, t-tests were performed.
t = 1.674, df = 35, p-value = 0.103
F low is the mean difference.
t(35) = 1.674, p = 0.103
dz = 0.279 with a Cohen's power primer
The low-power primer points towards a very small effect.

What does this mean?

The differences between the two groups were significant with a very low power primer.In my opinion, it is not advised to build a game solely around the PAD System. The difference is just not big enough.
Maybe it was also due to the game being boring and the controls feeling slightly off. Some players stated that the controls felt like playing on the moon with low gravity.
I would advise game developers to only include an adaptive difficulty system as a subsystem or a small part of larger game systems in general. Developing a game based on those systems alone doesn’t make the cut. Have a look at the examples at the beginning of the blog: They did an amazing job at enhancing the overall experience for all kinds of players by using adaptive difficulty in games that were not solely based on it.

Further stuff

You can play the game on itch.io (free).
The pixel art was made by myself, get it here (free).
If you’re brave enough to witness badly written years old code, then have a look at the game on a GitLab server (free).
 
Sources. Scientific papers mentioned above. Those are good reads:
[1] Plochberger, F. (2015, April). Kriterien für das Flow-Erlebnis - nach Mihaly Csikszentmihalyi. Franz Plochberger, Research Impacts. Access at 02.06.2020 on http://www.plbg.at
[2] Csikszentmihalyi, M. (2014). Flow das Geheimnis des Glücks. Klett-Cotta
[3] Yun, C., Trevino, P., Holtkamp, W. & Deng, Z. (2010, Juli). PADS: enhancing gaming experience using profile-based adaptive difficulty system. In Proceedings of the 5th ACM SIGGRAPH symposium on video games - sandbox ’10 (S. 31–36). ACM Press. Access at 20.06.2020 on http://portal.acm.org/citation.cfm?doid=1836135 .1836140 doi: 10.1145/1836135.1836140