Thursday, August 5, 2010

All primary feature work is done for iteration 9, finally...

So this morning I finished up the last issues I had targeted for iteration 9 in fogbugz. The release isn't yet ready to go out, as I have to play with the numbers to make the game fun/winnable. However, outside of bug fixes, I should be done make code changes for now.

I'm hoping that balancing should be "easy" now that I have filled in tech trees and have a reasonable spread of items, but as I've said before balancing games is hard. Do any other game developers have trouble balancing stats, abilities, items, and such to make a fun game? Any suggestions on ways to make it easier outside playing the game a bunch and make lots of small tweaks?

3 comments:

EpicMan said...

One way to balance various combat numbers is to create a simple 'arena' mode where the AI controls two creatures and has them duke it out. Skip the display part and log the events and you can make the battles fast enough to do a lot of these battles in batch and examine the effects of the numbers over 1000, 10000, etc fights.

JHaas said...

Honestly, the best thing to do is to chip out an alpha or beta release. Balancing is almost impossible to do by yourself.

Worthstream said...

What JHaas said: release and crowdsource the work of balancing ;)

Anyway, if you want to have some fun and like to program, you can set up an arena, like EpicMan suggested, adding an evolutionary algorithm:

1) First, choose a "realistic" number of a certain enemies an average level X fighter would kill (say a level 1 fighter has to be able to kill 6 goblins in a row)

(Choosing this number will determine the power level of the PG, and is in itself an interesting problem. See this series: http://www.hackslash.net/?s=The+Evolution+of+the+Fighter )

2) Choose a series of parameter to be tweaked (armor values, weapon damage, etc) and set starting values for them all

3) Run an arena with a fighter vs. an endless streams of mobs of the chosen type.

4) Measure how many mobs get killed before the fighter dies

5) If the fighter defeated too many monsters, modify by a random percentage (say 1%-10%) each parameter in favor of the latter (decrease armor ratings, weapon damage, etc and increase mob damage, etc). Otherwise tweak it in favor of the fighter.

6) Repeat from point 3 until you have the chosen number of enemies defeated.
Save the parameter that give this correct result and test them manually to see if they "feel" right.

Implementing this system will require some time, but you can use it every time you will need to balance a new aspect of the game (sword damage, ranged damage, potion efficiency, new monsters statistics, traps, new skills...).
Maybe in the end it will save you some time, and in the meanwhile it will look cool on the feature list. Bullet point: first RL with genetically evolved balance! ;)