Skip to main content
GameDev.net gamedev.net
🔒 Locked

RPG balancing

Started by mtgcs2000 Sep 25, 2006 at 11:47 PM 15 replies 5.1k views
Original Post
mtgcs2000
mtgcs2000
Hi, Im up to the point in my RPG where I need to balance monsters levels/health/attack versus the players attacks/health/armour/weapons etc and I have no idea how to do this, it seems a huge seemingly impossible task to get all the possible combinations of skills/spells/armour/weapons and so on in balance with each other so that enemies are not too hard nor too easy in the game. It's hard enough simply coming up with a forumla for player attack incorporating player strength, agility and weapon damage let alone adding in weapon modifiers, stat buffs, enchants to gear, critical strikes, misses etc. Then you have to balance this attack damage with monsters healths of each level and their relative weaknesses and strengths, armour etc, and also make sure magic using classes aren't left behind or too far out in front in the damage stakes. I've already developed an algorithm for experience gaining and how fast the player should go through the game. Im just wondering how other game companies and other RPG's are balanced, what programs are used and how do they actually go about getting everything in proportion. Thus im looking for any guides or anyone that has an ideas on the best way to go about balancing an RPG so it reoughly works (tweaking and testing can be done). Thanks, Tim
BringBackFuturama
BringBackFuturama
I was just asking the same thing the other day.

The general consensus I got was "figure it out on your own"

Some help that was...
Originality is dead.
Trapper Zoid
Trapper Zoid
It's a hard job ensuring everything is balanced in a complex game. I've had to help do that once before and it was pretty time consuming and overall rather painful. This game was a tactical sci-fi squad based game not an RPG, but I guess the principle was the same.

From memory, this is what I did:

- I started off with a base monster as a standard, and timed how long it took for a standard soldier took to kill this monster with every type of weapon (should be predictable from the stats but it needed testing). An alternative was to see how many of that type of monster the soldier could kill without dying (i.e. soldier with standard gun was an even match against four monsters). From these tests you could see if each weapon was as effective as its stats said it should be, or if there was some obvious unbalanced weapons.

- Usually there's some benefit for using some weapons against certain types of monsters, so the next test was checking to see if that made some sort of difference. Again this was pretty exaustive; testing every weapon against every monster type. I didn't go into quite the level of detail as for the first test, but it helped to see everything was working as expected.

- Then I think the next tests were simply to just playtest every possible combination. I'd try to get a bunch of people to play through the game using widely different tactics (or just do it myself). Is there a super weapon/armour/class that gets you through the entire game on it's own? Does every weapon/armour/class have a purpose? Can you get through the game without a particular weapon/armour/class if it's possible to lose them? It was just a process of playing over and over and over and over again with different layouts and hoping you hit every pertinent combination

- A final word of warning; make sure you playtest occasionally with fresh players! If you stick to testing the game yourself or with the same testers, eventually they'll get very good at the game. Thus if you use their opinions to guage the difficulty of the game you will make it way too hard. You need fresh new players occasionally to get a new perspective of what is a challenge to people who aren't used to the game. For these players I'd recommend just plonking them in front of the game with any manuals they need and offering no hints whatsoever while documenting what challenges them (that's harder than it looks; it's too tempting to offer helpful advice whenver they get stuck).
BringBackFuturama
BringBackFuturama
Quote:
Original post by Trapper Zoid
It's a hard job ensuring everything is balanced in a complex game. I've had to help do that once before and it was pretty time consuming and overall rather painful. This game was a tactical sci-fi squad based game not an RPG, but I guess the principle was the same.

From memory, this is what I did:

- I started off with a base monster as a standard, and timed how long it took for a standard soldier took to kill this monster with every type of weapon (should be predictable from the stats but it needed testing). An alternative was to see how many of that type of monster the soldier could kill without dying (i.e. soldier with standard gun was an even match against four monsters). From these tests you could see if each weapon was as effective as its stats said it should be, or if there was some obvious unbalanced weapons.

- Usually there's some benefit for using some weapons against certain types of monsters, so the next test was checking to see if that made some sort of difference. Again this was pretty exaustive; testing every weapon against every monster type. I didn't go into quite the level of detail as for the first test, but it helped to see everything was working as expected.

- Then I think the next tests were simply to just playtest every possible combination. I'd try to get a bunch of people to play through the game using widely different tactics (or just do it myself). Is there a super weapon/armour/class that gets you through the entire game on it's own? Does every weapon/armour/class have a purpose? Can you get through the game without a particular weapon/armour/class if it's possible to lose them? It was just a process of playing over and over and over and over again with different layouts and hoping you hit every pertinent combination

- A final word of warning; make sure you playtest occasionally with fresh players! If you stick to testing the game yourself or with the same testers, eventually they'll get very good at the game. Thus if you use their opinions to guage the difficulty of the game you will make it way too hard. You need fresh new players occasionally to get a new perspective of what is a challenge to people who aren't used to the game. For these players I'd recommend just plonking them in front of the game with any manuals they need and offering no hints whatsoever while documenting what challenges them (that's harder than it looks; it's too tempting to offer helpful advice whenver they get stuck).



That's some pretty good advice. Kinda like what I was doing, just trial and error, but more organized.

Finally..a bit of good advice on this.
Originality is dead.
Trapper Zoid
Trapper Zoid
Quote:
Original post by BringBackFuturama
That's some pretty good advice. Kinda like what I was doing, just trial and error, but more organized.

Finally..a bit of good advice on this.

I'm not sure whether I'd call it good practice or especiallly organised - at the time it seemed pretty ad hoc and chaotic! From a test engineering perspective I was a bit embarrased with that approach really.

If I have to do that again (and I probably will eventually [smile]) the biggest improvement I could suggest would be automate as much as you can. The annoying thing is if you change the values for the items or class attributes you have to retest everything all over again. It is painful beyond belief to do that by hand. While it would be too hard to automate everything the simple monster test I suggested at the beginning of that first post should be automatable. Just run some test script for testing all combinations overnight or over lunch.
mtgcs2000
mtgcs2000
Great stuff there Trapperzoid!

After reading through a few articles im thinking the best way to do it would to code my own combat simulator program, where I could input values or ranges of values for the player and the monster on things such as health, attack, armour, buffs etc and have it simulate a multitude of battles to determine success rates and so on.

I'll take your approach and simply start off with the basics, a monster with attack/health no modifiers and a player unarmed with just basic attack/health and no other modifiers and see how they stack up.

Then once that is balanced I'll start adding stuff like armour, weapons, spells etc to the mix.

Any other suggestions would be more than welcome :)
BringBackFuturama
BringBackFuturama
Quote:
Original post by mtgcs2000
Great stuff there Trapperzoid!

After reading through a few articles im thinking the best way to do it would to code my own combat simulator program, where I could input values or ranges of values for the player and the monster on things such as health, attack, armour, buffs etc and have it simulate a multitude of battles to determine success rates and so on.

I'll take your approach and simply start off with the basics, a monster with attack/health no modifiers and a player unarmed with just basic attack/health and no other modifiers and see how they stack up.

Then once that is balanced I'll start adding stuff like armour, weapons, spells etc to the mix.

Any other suggestions would be more than welcome :)


I kinda have a battle simulation program, but for some reason never thought of letting me change the values without recompiling. I think I'll try that.

Originality is dead.
Luckless
Luckless
Quote:
Original post by Trapper Zoid
Quote:
Original post by BringBackFuturama
That's some pretty good advice. Kinda like what I was doing, just trial and error, but more organized.

Finally..a bit of good advice on this.

I'm not sure whether I'd call it good practice or especiallly organised - at the time it seemed pretty ad hoc and chaotic! From a test engineering perspective I was a bit embarrased with that approach really.

If I have to do that again (and I probably will eventually [smile]) the biggest improvement I could suggest would be automate as much as you can. The annoying thing is if you change the values for the items or class attributes you have to retest everything all over again. It is painful beyond belief to do that by hand. While it would be too hard to automate everything the simple monster test I suggested at the beginning of that first post should be automatable. Just run some test script for testing all combinations overnight or over lunch.


Just don't do what I did, and walk away from a computer with a quick program setup that you didn't really think about, and come back a few hours later to find your near empty harddrive is now full of a 100 or so gb .txt file.
Old Username: Talroth
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.
Orron
Orron
You can try to approach this mathematically, but I'd recommend just simulating a whole range of combat scenarios. If you can define a more or less normal stat progression, then you can write a function that takes in a level and returns a character with appropriate stats. If you can define a progression equipment stats will follow then do the same thing for that! If equipment doesn't vary directly enough for a formula, define standard equipment for each class at each level range. If the player is level 0-5 give him this equipment. 6-10 this equipment, 11-20 this equipment, etc. There can be different progressions for different classes, or even one for normal warrior and one for a warrior played by an experienced min/max-er. Monsters probably vary less, which helps. If you've defined set stats for every red dragon, goblin, etc. then you just need a list of monsters that are all different enough to test each possibility (a magical level 20 monster, a warrior level 20 monster, a magical level 22 monster...) Then run 100 simulations of each battle combination and output the win percentage.

If you choose really feel bold, you could create a 2-d array with the acceptable ranges of win percentages (A level 30 character should defeat a dragon 20-40% of the time). Then rather than having to go through a big matrix of battle results and try to figure them out, you can just have the system alert you to problem areas. If you want to try a change in the combat formula, or in the monster ai, or whatever then you'll be able to very quickly see who it helps and who it hurts.

It sounds kind of like a lot of coding for a feature that isn't even in the final version of your game, but most of it is built off of existing functionality. It's essentially just a few loops to mix up the combatants and then you simulate the battle and output the results. It's what I'm doing for my rpg.
BLiTZWiNG
BLiTZWiNG
I was in the old trap of starting off with the gfx engine and so on, but after 9 months of coding, recoding, and re-evaluating (I am learning after all), I got sick of feeling like I am getting nowhere with my actual game play ideas.

So a few days ago I started a new C# WinForms app, and started coding in a simple interface for each aspect of my game to allow me to directly change stats on items, skills, characters and the like. I will then write simulation code to see how it all fits together.

For me this is as much a design tool as it is a testing tool. I'm not that good with design documents and writing down in words how something might work, especially when I don't even have an idea as yet. This method is helping me work out how actions might work and also helping me design my code.

It might be a bad way, but its working for me atm.
BringBackFuturama
BringBackFuturama
Well I played wtih my stats a bit, and I sorta figured out base stats. I'm going to start everyone with 500 HP, 50 MP and 50 of every stat (everything's out of 9999). Then I'm going to level up thier stats on a basis of what class they are. (I really like games with job systems, so I'm using one).

This is what it looks like when they lvl up:
		switch(fclass)		{		case warrior:			HP += HP/20; curHP += HP/20;			MP += MP/40; curMP += MP/40;			hit += hit/25;			str += str/20;			def += def/20;			intell += intell/40;			focus += focus/30;			break;		case wizard:			HP += HP/25; curHP += HP/25;			MP += MP/20; curMP += MP/20;			hit += hit/40;			str += str/40;			def += def/20;			intell += intell/20;			focus += focus/20;			break;		case archer:			HP += HP/25; curHP += HP/25;			MP += MP/20; curMP += MP/20;			hit += hit/20;			str += str/25;			def += def/40;			intell += intell/40;			focus += focus/20;		case mystic:			HP += HP/20; curHP += HP/20;			MP += MP/20; curMP += MP/20;			hit += hit/40;			str += str/40;			def += def/25;			intell += intell/20;			focus += focus/25;			break;		}		++HP; ++MP; ++hit; ++str; ++def; ++intell; ++focus;Depending on if things get out of control with those percentages, I might need to adjust it more though.
Originality is dead.
UsingBytes
UsingBytes
Hello,

I read the op's comments but didnt read through the rest, just figured I would offer this. (sorry for not reading, mind is current in thought about a specific algo)

Anyway just wanted to add that a good idea is to create a tool just for balancing. This can be something as simple as a form just displaying numbers.

So basically in this tool (simulation) you would load in the desired data (avatar's armour, hp, mana whatever, Monsters armor, hp, mana etc) and run a simulation on all these different types of objects, you can even have the data recorded and printed out for you to review, make notes etc. Then you can tweak a little bit more and run again.

I find this method of using an additional tool for balancing issues works much better / (faster) just because your not really needing to test it (in game) which can take awhile + plus whatever you program in the tool for instance printing the data out can be a great help, with visual feedback.

Good luck,
Andy
Artix
Artix
Its really ironic you asked this, I had alot of trouble with this as well when I first created my game, some people just don't have the mentality to balance a game, it takes alot of mathmatical skills, patience and time, your basic point is to make the game not to easy but challenging, I suggest starting with Weaponry and Armor, if you can get those to your level of "balance" the monsters shouldn't be hard, base the difficulty of your monsters on The Weapon the user has, the level(If you have levels) and the armor you are wearing.
ishpeck
ishpeck
Quote:
Original post by mtgcs2000
Thus im looking for any guides or anyone that has an ideas on the best way to go about balancing an RPG so it reoughly works (tweaking and testing can be done).


I'm so very glad you asked this question. It fills me with an excitement I haven't had since I played through the full version of Rise of the Triad all those years ago.

The term "balance" is a delicate one --- especially inside the context of Roll/Role-playing Games. It is a largely misunderstood concept that deserves pages and pages of essay to adequately grasp. But of course, we're game developers -- not economists.

Properly "balancing" a role/roll-playing system demands a lucid design from day one. You must mathematically assess the impact of every number that exists in the game. Start with each of the basic character stats (strength, agility, wits, determination, breast size, etc.). Each must contribute a unique function and purpose to the gameplay for organization's sake. In so doing, you implicitly measure the impact each of these stats has on the game balance.

A generic means of assessing the value of a character and his total impact on combat may be measured by the core stats used to describe his natural aptitudes. The sum of strength, agility and friends can be used to derive a generic mode of conveniently assessing a character's impact on the game-balance scale. This is often simplified into a small(ish) number that is often called "Level."

A "level 2" character should be twice as effective as a "level 1" character. By extension, a pair of level-one characters should be on-par with a single level-two character.

By applying the same basic rules and core stats to all monsters, you can conveniently and quickly balance each individual monster.

This works for the basic fundamentals but, as my sig has said for years now, a game is more than fundamental mechanics and math: It's also crunchy-bits that botch-up the works --- because those're fun and take the game from a mathematical equation into the department of real entertainment.

The crudest, and least complicated way of balancing special abilities that are often represented in the form of spells is simply through experimentation. In a sterilized test environment, pit one monster with an individual ability up against a level 1 character --- make them fight and see how long it takes the level 1 character to win/lose. Then, throw in two level 1 characters (which ought to compare to your basic level 2 character) and repeat the process. Compare how many turns it takes for the monster, with his wonky spell ability, to beat two level-one characters. From there, you can extrapolate the value of his ability as compared to the rest of the system and rate the value of monsters accordingly.

Hope this helps.
-----------------"Building a game is the fine art of crafting an elegant, sophisticated machine and then carefully calculating exactly how to throw explosive, tar-covered wrenches into the machine to botch-up the works."http://www.ishpeck.net/
Raghar
Raghar
Have you thought about unbalanced RPG? You know a thing that is not balanced on purpose, however is much more enjoyable than the balanced one.

Of course you can use several graphs, however real RPG and hack and slash are two different things, and both of them might need different tests.
ishpeck
ishpeck
Quote:
Original post by Raghar
Have you thought about unbalanced RPG? You know a thing that is not balanced on purpose, however is much more enjoyable than the balanced one.


All I have to say is.... MAYBE!

In a single-player world, the funciton of "balancing" isn't nearly as much a matter of "balance" as it is a matter of PACING. Choosing when to throw the power-house bad-guys at the player is an artform that can make the difference between infinitely replayable though static levels and booooowwreeeeeng games.

Offering the player an increasing level of scariness in the bad guys helps reinforce the sense of progress and development and is necessary to completely understand.

So whether there really is any degree of "Balance" between any sets of characters isn't necessarily the objective when properly scaling the power-level and introduction of monsters (and items, spells, quests, puzzles, or anything else).
-----------------"Building a game is the fine art of crafting an elegant, sophisticated machine and then carefully calculating exactly how to throw explosive, tar-covered wrenches into the machine to botch-up the works."http://www.ishpeck.net/
thundergunslinger
thundergunslinger
Quote:
Original post by ishpeck
A "level 2" character should be twice as effective as a "level 1" character. By extension, a pair of level-one characters should be on-par with a single level-two character.


While your post was generally admirable, I don't agree with this whatsoever. It certainly isn't a hard and fast rule of balancing, and infact that sort of level progression had never even occured to me. In my mind, a level 5 char could take on 2-3 level 1's, and a level 10 could take on 2-3 level 5's. I like level progressions that are a little less dramatic. It might be an easy guideline, but I would definitely not like a game like that, and I can't think of any off the top of my head that have that dramatic of a progression.

Of course, that's just my preference. The important thing for OP is determining how he wants the game to play, and then go to the hard work of creating some math that roughly corresponds to that.
all around the world today, a kilo is a measure;a kilo is 1000 grams, easy to remember

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.