Monday, February 7, 2011

Game difficulty (Part 4)

One way to combat the weaknesses of difficulty settings is to have the game dynamically adjust the challenge provided by the game. Dynamic difficulty scaling can sometimes be affected by difficulty levels, but at other times, it is purely the dynamic difficulty scaling used to keep the challenge "just right" for the player.

I'd argue that perhaps one of the worst examples of dynamic difficulty that keeps getting used even though it is terrible in so ways is "rubberband" AI used in driving games. Just like any difficulty scaling, this dynamically changes the skill level of opponents to always give you a challenging race. The problem is that so often it either cheapens the experience by letting you win in ridiculous circumstances, or is incredibly frustrating by effectively allowing opponents to cheat.

The reason that this design is so bad is that it prevents players from demonstrating mastery over their opponents or gain any real sense of progression of skill. In any racing game it is potentially possible crash out and end up a long way behind.  In a normal situation, the race would be lost and the player would give up and restart, or resign themselves to a lower placing. This may result in some frustration, but when the player wins, they will feel a sense of achievement. However, with rubberband AI, they can have major crashes and fall far behind but still come back and win, then the penalty for their lack of still is effectively nullified. If there is no sense of challenge, the player will feel no real sense of achievement.

We also have some Need For Equity

However, worse still is the opposite case. Take racing games with more of an arcade or "demolition derby" approach, where it is possible to knock opposing cars off the road or otherwise cause massive delays to their opponent. These manoeuvres typically take quite a bit of skill on the part of the player to ram the opposing car at the correct time. With rubberband AI, it's quite feasible that the huge lead gained from this risky behaviour will be completely nullified as the car is "sped up" to make the race "more exciting" for the player. In the worst cases (and unfortunately, this is how it is implemented in almost every modern racing game with rubberband AI), the game will actually allow the computer controlled cars to go faster than is physically possible for the car to travel in order for the "catch-up" to occur.

Once again, this brings us back to the issue of AI cheating. Players don't like to be cheated. They especially don't like to be cheated when they've gone to a lot of effort to ensure they have an advantage over their opponents. Using dynamic difficulty to take away an advantage that the player has created for themselves through challenging and skilled play is almost guaranteed to frustrate and annoy them - they've put in a lot of effort to acquire it, so the designer should not nullify that effort unfairly. Dynamical difficulty runs a significant risk of doing this if not implemented well.


  1. Mario Kart was the absolute worst for this, with its item drops specifically tailored to your position on the track. Get too far behind and you're likely to stumble across two or three stars in a row. Lead the pack for most of the race and you're a dead-cert to be struck by a succession of red turtle shells while on the home straight, eventually finishing fourth or fifth.

  2. Rubber band AI, or as I'll call it for this comment, Rubber Band Difficulty, definately has it's cons, but it definitely has some pros too.

    In a single-player environment, rubber band difficulty indeed sucks, mostly because of all the reasons listed above. When you're having that dream run and at the last moment, you get blue-shelled by Mr. Last Place and drop back to 4th or 5th right at the end, then have a less-than-dream run next game and come 1st, the game almost appears to have you win not based on skill, but by chance,, and in my experience *nothing* frustrates a player more than winning simply by chance because it becomes a mandraulic situation of "Save, reload til I get the result I want".

    In multiplayer *offline* however, it is great, for the very important reason that it stops a player from becoming *THAT GUY*. The one who makes the game boring because they know the game so well that even trying to play against them just results in defeat. I've seen it happen with fighting games (Street Fighter etc), FPS, Super Smash Brothers and so on, but Mario Karts Rubber-Band difficulty works to fix this (unless you're playing with a bunch of monkeys). When four players are sitting down and clearly one player has the upper hand in most matches, nothing is a sweeter victory for not just one player, but generally the other three, when *your* blue shell knocks out the leader and lets an AI or two get in front of them, making the game fun for all involved regardless of skill level. If it's not fun for the person getting shelled, then maybe you're taking the game too seriously :P

    Which brings me to online multiplayer. It becomes more like single player again, except that online players are so incredibly militant about game balance that any potential to adjust difficulty in favour of someone is set upon by a horde of rabid mongooses.

    tl;dr: Rubber band AI is great for party games, not so great for single/online multiplayer.

  3. For party games, rubberbanding can be a great tool to make things more fun. But this is pretty much the only situation where it is acceptable. Even then, I'd argue that it still should be possible to turn it off - if you've got players around the same skill level that want to challenge each other purely on skill and without computer assistance, then they should be allowed to do that.