I did a application to balance all our monsters. And danter asked me how it
works, so I explain it here.
The offending class is games.stendhal.tools.BalanceRPGame
If you run it, it will start printing balanced stats output for each
So how we balance it?
First we create a typical player for levels 0 to 110.
The HP is always 100+level*10
To create this formula I took data from player progressions. This data is
from a player that doesn't train at all, it is not the case of some of our
Now we define the equip a player will wear.
Again, these stats shows a typical progression althouth level >50 shows
items that doesn't exists yet.
Ok, once the player is setup I just test his/her stats against the creature
by running a fight and getting the turns that took to get the result and the
I do this for 100 turns to get mean values and ignore as possible the random
Once this is done it is time to measure the result.
A good result is that one that takes around 30 turns + 1-2 turns per level.
Also a player fighting against a level XX monster where player level is XX
too should get around BaseHP - XX HP points left to consider it sucessful.
We need to define these conditions in a better way, but the idea is
something like that.
So to achieve this I though of the problem as a search problem and "solved"
it with a random tries around good values to search better alternatives. It
needs anyway that you balance previously the monster to some semicorrect
values so you don't search too much.
That the overall idea.
This I want to add:
- Genetic search algo. This will better results.
- Better way of defining goals to accept/reject a set of stats.
- Better score method.
Any help on this area is a really welcome help.