PDA

View Full Version : Balancing game difficalty



serg3d
07-26-2004, 10:55 PM
Well, this forum looks too empty, so I'll start some hopefully meaningfull thread ;)
What method are you using for balancing game difficalty ? Jast asking testers is it too difficalt or too easy for each level ? Do anyone using some automated tools ? I know one puzzle designer using genetic algorithm for producing puzzles of difficalty, but that doesnt help to scale or find optimal difficalty level. So what are your thoughts ? I'm especially interested in turn-based puzzle games.

svero
07-26-2004, 11:02 PM
Well for puzzle games I've always taken the long hard slog on this and done a lot of playtesting. I've found that to a certain degree I can set out to design a level which is "hard" - and if i'm lucky it will be tough. Easy levels are easier to make. So I have a pretty good feel right at the start where it lies and then I tend to just adjust it a bit.

With blackbox the developer made a little rating program where playtesters could rate the difficulty of a level after playing it and the results could be mailed back to us.

Mark Fassett
07-26-2004, 11:14 PM
For my game, I play through everything on Hard difficulty, and then base the easier difficulties off of the hard by adjusting various values . And then I let my wife play. The only issue I'm worried about is if I really am not as good at it as I think I am, and that hard isn't all that hard :)

Carrot
07-27-2004, 02:40 AM
For puzzle games, I think playtesting is the only way.
For action/arcade based games, I think there is a lot you can do to dynamically change the difficulty of a game based on how well the player is doing, giving you a wider audience of potential players.
We tried this in Plummit (http://www.purplenose.com) and it worked very well.
A lot of player information was gathered during the course of a game, and various parameters altered slightly to adjust the game difficult for this particular player.
In the case of Plummit, the changes affected water speed, player-tile falling speed and tile-type creation among others, but it could be almost any difficulty parameter.
Besides not having to worry about a global difficulty setting (like from options menu), this method can be used to make the game fairer - players doing badly in the begining can still recover later on.

jaggu
07-27-2004, 03:45 AM
I second what Carrot has said and in my game a2b (http://www.poojyum.com/a2b/), I use fuzzy logic (FL) to dynamically control difficulty. In this game, you guide trains to their destination without letting them collide with each other. The computer generates trains on tracks at regular intervals. When you despatch a train successfully, FL launches the next train a bit quicker than the last one. If you fail to despatch a train (collide it with another train or return to base instead of its destination), FL launches the next train a bit later. The initial launch interval is determined by the average length of the tracks + the average time it takes a train to reach top speed.

Initially, you may be despatching trains comfortably but each successful despatch is causing the next train to launch a little sooner making the game a little harder. Eventually you make a mistake (collide a train or fail to despatch it) and FL launches the next train a little later making the game a little easier. The net effect of these small FL decisions is the game almost fits to your playing ability.

In FL, its important to pick the fuzzy variables well and also design their rules well. This requires a bit of trial and error and fine tuning but its not hard if you understand FL (see http://en.wikipedia.org/wiki/Fuzzy_logic). Look at the parameters that affect gameplay and their inter-relationships and ask questions like - what if this parameter gets really high, really low, stays ok - what other parameters would it affect? If you have a lot of parameters, group them to a manageable handful.

In a2b, there are two fuzzy variables - Successful Despatch (SD) and Failed Despatch (FD). SD is evaluated whenever you successfully despatch a train and FD is evaluated whenever you fail to despatch a train.

SD contains 3 fuzzy rules - Really fast despatch, OK despatch and Poor despatch. If you despatch a train really fast, FL launches the next train a lot sooner than the previous one. For an ok despatch, FL lets the trains pretty much launch at the current rate. For a poor despatch, even though the despatch is successful, it seems like you are beginning to have a hard time so FL launches the next train a little later but not as much later as it would when you fail a train.

FD is made of 1 rule only. I maintain a list of 5 recent trains and analyse the results. For example, if you have failed most trains and the current is a failure too the FL launches the next train a lot later eventually slowing down the game making it easier for you to play.

Fuzzy rules are traditionally defined by triangles or trapezoids. These shapes are in turn constructed out of line segments. Instead I opted to build arbitrary shapes using bezier curves because it gives great ease-in and ease-out into the fuzzy rules and much better blending among the rules.

Ultimately the proof of the pudding is in the eating. Try a2b and see if works for you! If you do, please notice the text "Next Train in x.xx seconds" in the HUD. It will reduce as you get successful and increase as you fail.

You may notice that my design goal is not to make the player fail and not to make him easily succeed either. FL works well for that.

Now for the pitfalls:

The FL I have implemented is not adaptive. That is, its hardcoded. I tried various combinations for variables/rules and settled on something that broadly captures various playing styles. Implementation also matters. Spline based fuzzy rules work better than linear rules. Still FL is usually better than plain difficulty settings which is anyway a snapshot of the entire space FL can dial into. For example, you may set difficulty settings such as easy to 0.25, medium to 0.5, hard to 0.75 and 1 to evil. With FL, you can get the range anywhere from 0 to 1 and more importantly unique to each player.

I want to do adpative FL for a2b v2.0 and maybe do like this: start with a random difficulty - usually 0.5 - and tune the difficulty by observing and evaluating the player with basic fuzzy rules. Then adjust the fuzzy rules themselves (it becomes adpative now) and when player quits save them out to disk under his name and load them again when the player comes back on. Actually its not 100% adaptive - it cant deduce fuzzy variables on its own or decide how much to adjust the fuzzy rules each time - but it does have to stop somewhere!

Nemesis
07-27-2004, 07:31 AM
I think Mark's is a good approqch since as the creators of the game we tend to get accustomed to it and our playing skills grow with the game. In fact I noticed that for practically all those who have tested our WIP game (Perihelion), have found it very hard to play i.e. our own limit should be a good indication of what the Hard setting should be.

As for the technicalities of how to set up difficulty levels it's probably bes tto have the ability to tweak settings for each difficulty level, or failing that, to apply a generic formula applied on the settings to alter the difficulty.

Evak
08-03-2004, 03:03 PM
yeah definately. the lastr console game I worked on, we would test our game for bugs etc. But for gameplay difficulty we would bring in school kids from local schools and collegse. A fresh batch every other week and have them play the games. It's often good to sit in the same room and observe them playing, that way you will be able to see for yourself whats going on when people first pick up the game.

Almost every game I've made, the publisher has allways complained about the difficulty. So I expect that no matter how good the balance is, if you had a publisher they would want it simplified a good 15%.

Kind of sad that you have to target the lowest common denominator, but its no different than targeting low end systems and casual gamers, beause for an indie its they who make up the bulk of your players.

Coyote
08-03-2004, 03:26 PM
I'm not working on turn-based puzzles - but here's my $0.02

One thing that I try to do scaling up the difficulty levels is to demand the mastery (or at least competency) of an increasing number of skills for each segment of the game (or at least the signature levels... like boss levels). Think about how many RTS games tend to 'teach' the player new skills with each level, requiring his cumulative mastery over all earlier 'lessons' to succeed on successive levels.

If can break your gameplay into a number of discrete actions, you can use those as building blocks for difficulty. Maybe level 1 requires the player to do little more than just move around... Level 2 requires moving and shooting .... Level 3, moving, shooting, and dodging. Level 4 requires moving, shooting, dodging, and timing the movements of enemies. Level 5 requires all that, plus strategic use of switches to change the paths of the enemies. And so forth.

Of course, this can cause things to scale up pretty rigorously, so you can give the player some breathers in the middle by mixing it up a little... maybe level 4 adds timing to the mix, but you don't need to shoot much.

Anyway - if you think about it that way, it can help give you a mental model of the difficulty. Not all skills are created equal, and you can challenge them on different levels and to different extremes. And no two players will be challenged identically. But that should put you in the right ballpark.

Mark Sheeky
08-08-2004, 04:52 AM
As a player, a game for me has to start of slightly more difficult than 'easy' and proceed to nearly impossible. That last driving level of Halo is so difficult that completing it feels great.

Analysing what makes the game difficult, and lots of playtesting are the key. Even AI playtesting can work well. Make a crude AI and time how long it takes to complete each level. It won't reflect human ability but can give a relative guide to how hard each level is.

Mark
Cornutopia Games
http://www.cornutopia.net

FlySim
08-08-2004, 08:28 AM
I used the "play it alot" method and set the hard levels based on my ability. Then we sent it to about 10 beta testers - way to hard. I think if I had released it without the testing, we would have had alot of frustrated customers. Still, you want a challenge - the last level contained some fish which I considered uncatchable - but a few customers have mananged to land them.

-J.R.
www.flysim.com

Mark Sheeky
08-09-2004, 01:57 PM
Of course, different people like different difficulty levels. For some reason I prefer games that are very difficult. I find easy games a bore (apart from thinking puzzlers!). Some people don't like games that are too hard. If in doubt, make it an option somehow.

Mark
Cornutopia Games
http://www.cornutopia.net

Anthony Flack
08-12-2004, 04:48 AM
My current strategy is this:

Difficult setting is pitched at my own level, kind of easyish at first, progressing to damn hard. You'll always be super-good at your own game, not only because you play it a lot, but also because you'll know every last detail of the strategy and inner mechanisms which most people will never fully appreciate...

Easy setting is designed to be just about as easy as I can possibly make it without being boring. Try to make it almost impossible to lose (people will still manage to!) - and test it out on people who say "I don't really play games, me"

Medium setting is halfway between the two or thereabouts. Test it out by letting people set the difficulty to whatever they feel comfortable with and seeing if medium fits the bill...