Profile-Based Adaptive Difficulty
🕹️

Profile-Based Adaptive Difficulty

Tags
Game Development
Systems
Research
Published
Apr 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 of a videogame using an adaptive difficulty system I know 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 it’s difficulty based on the players deaths, the current level number, collected power ups, and some more 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 of times, 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 gain the best items off those weapon-boxes if you’re on the last position. Further, if you are on the 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. The terms criteria were summarized by Plochberger in 2015: Csikszentmihalyi summarizes it as an experience that is reflection-free, 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 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, nor 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 is 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 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 content components of the profile as well as the process of collecting the the data-profile can be chosen in varying ways depending on the genre of the game.
 

My take

Soo... time for some own research. I was kinda 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 thesis. My goal was to compare two different versions of the same game: A version using PADS and a version using a linear increasing difficulty system.
In the PADS version, players were asked on how much experience they have playing videogames. Next, they were asked about their goal of why they play videogames in general.
Then, the game starts. In an endless runner you, well, run endlessly from left to right. You jump from platform to platform. If you fall off a platform or jump into the ceiling, you lose.
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 to 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 players performance can be measured by where he/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 players performance score is decreased (red areas). Landing more to the center of a platform but still close to the edges, the players performance score is less reduced (yellow areas). Landing a perfect jump on the center of a platform increases the players score (green area). There are seven platforms with varying sizes and hitboxes:
notion image
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 closer to each other are spawning.
 

Results

In total, 70 participants took part in my study. The flow was measured after playing either the game with PADS or the game with the linear increasing difficulty using a flow short scale. 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 scored a flow value of 4.978.
The average flow score of the version using the linear increasing difficulty scored a flow value of 4.772.
 
To see if there are differences between both groups, t-tests were performed:
t = 1.674, df = 35, p-value = 0.103
Mean difference µF low = 0.206
t(35) = 1.674, p = 0.103
with a Cohens power primer dz = 0.279
The low power primer points towards a very small effect.
 

What does this mean?

The differences between both groups featured a significant difference with a very small power primer. In my opinion, it is not advised to build a game solely around a 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 feel like playing on the moon with low gravity.
 
I would advice game dev’s to incorporated an adaptive difficulty system in their game only as a subsystem or a small part of bigger 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 are not solely based on them.
 
Thanks for reading 💖 Mathias
 
 
 

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