PDA

View Full Version : [Un] Race and class balancing


Bandobras
May 22, 2007, 23:51
As you all know, UnAngband has a multitude of races and classes. They are not very well game-tested, so their stats are not well-balanced. I'd like to discuss some issues.

In particular, after recent changes, Warriors in CVS have lower hitpoints than Artisans. Also, sums listed in comments for some races are no longer correct and they (and possibly some classes) are probably stat-wise unbalanced, and stats are very important in Un, because you cannot just max them all. Moreover, the very negative CON and SIZ for some races/classes is removed and the effects of CON/SIZ is changed, disrupting the delicate (Un)balance of stats, e.g. probably making raising both CON and SIZ equally wise strategy for all races and classes; also probably making it wise for all races and classes to put starting stat points into CON and SIZ, while before for some combos the points would have no immediate effect whatsoever; probably making the very high CON and SIZ of some races much more valuable and increases at the start more beneficial for them, because the stats are now far away from the regions where HP gains are small, etc.

The "+ siz_bonus" line in the HP calculation seems strange, because then it is no longer the case that initial HP are equal to Hit Dice. I'm also not sure if doubling CON effect on HP with respect to SIZ is a good idea, because then CON is better than SIZ for almost all classes. This is not bad in itself, but thinking about the game seems to be much easier if the stats are roughly equivalent in usefulness averaged over all classes. Anyway, this decision requires heavy rebalancing in many places (e.g. SIZ item bonuses should be valued less than CON bonuses, CON table for HP bonus should be scaled down and SIZ table scaled up, etc.). The system before the last CVS changes was designed to mimic the old HP values --- even if it put both base HP and bonus HP under the same name as Hit Dice. The current system, after the recent CVS changes seems to result in much higher HP at high levels than before new races and SIZ were introduced.

All this said, the system really needs rebalancing (preferably after play-testing) so it's nice it's changing, even if randomly. Eventually it will stabilize at something interesting (even if different from the old Un) for sure. :)

andrewdoull
May 23, 2007, 10:57
As you all know, UnAngband has a multitude of races and classes. They are not very well game-tested, so their stats are not well-balanced. I'd like to discuss some issues.


You'd mean you'd like to discuss the recent changes I made in CVS ;)


In particular, after recent changes, Warriors in CVS have lower hitpoints than Artisans. Also, sums listed in comments for some races are no longer correct and they (and possibly some classes) are probably stat-wise unbalanced, and stats are very important in Un, because you cannot just max them all. Moreover, the very negative CON and SIZ for some races/classes is removed and the effects of CON/SIZ is changed, disrupting the delicate (Un)balance of stats,

The main reason I made these changes to start with is that it felt too hard with many race / class combinations to get a character with semi-adequate starting stats. I haven't gone to the same lengths as you did to balance them out however.

e.g. probably making raising both CON and SIZ equally wise strategy for all races and classes; also probably making it wise for all races and classes to put starting stat points into CON and SIZ, while before for some combos the points would have no immediate effect whatsoever; probably making the very high CON and SIZ of some races much more valuable and increases at the start more beneficial for them, because the stats are now far away from the regions where HP gains are small, etc.


Please note that CON now gives extra mana and is therefore more worthwhile than SIZ for casters.


The "+ siz_bonus" line in the HP calculation seems strange, because then it is no longer the case that initial HP are equal to Hit Dice. I'm also not sure if doubling CON effect on HP with respect to SIZ is a good idea, because then CON is better than SIZ for almost all classes.

But that's how hit dice used to work. Because you'd get maximum hit points from your first level, then an average of (max+1)/2 per level thereafter, CON was less effective than hit dice to start with, but immediately the CON bonus comes more effective than overall hit dice with each level gain.

I believe I've actually halved the effects of SIZ, rather than doubling CON. I could be wrong here.

If we apply the 'SIZ' modifies hit dice approach, than size should provide (approximately) twice as many starting hit points, than the bonus gained every level thereafter.

Note that I've also modified the SIZ table so that the bonus hit points is approximately twice the old values.

You're correct that I should change the 'displayed hit dice'.

I'm actually tempted to go even further and have SIZ provide a constant HP modifier, rather than one that is scaled by level... that may be too radical.

This is not bad in itself, but thinking about the game seems to be much easier if the stats are roughly equivalent in usefulness averaged over all classes.

But they're not. Thieves and Warriors can increase more combat stats, because they don't have to worry about increasing any spell related stats. We've made the choice between which stats to choose to increase harder (and hopefully more interesting), but they don't have the same incentive to increase e.g. Int and Wis together, that the majority of spell casters and semi-spell casters have.

Anyway, this decision requires heavy rebalancing in many places (e.g. SIZ item bonuses should be valued less than CON bonuses, CON table for HP bonus should be scaled down and SIZ table scaled up, etc.).

I've already scaled the SIZ bonuses up to compensate.

The system before the last CVS changes was designed to mimic the old HP values --- even if it put both base HP and bonus HP under the same name as Hit Dice.


I believe it missed the distinction I'm making between SIZ and CON.


The current system, after the recent CVS changes seems to result in much higher HP at high levels than before new races and SIZ were introduced.

All this said, the system really needs rebalancing (preferably after play-testing) so it's nice it's changing, even if randomly. Eventually it will stabilize at something interesting (even if different from the old Un) for sure. :)


Andrew

Bandobras
May 24, 2007, 00:19
You'd mean you'd like to discuss the recent changes I made in CVS ;)

You can't be fooled. :)

The main reason I made these changes to start with is that it felt too hard with many race / class combinations to get a character with semi-adequate starting stats.

This is a totally valid reason. However, you like warriors --- perhaps you tried to melee with the combos with minimal HP and STR? Perhaps some combos could be augmented with some initial buff scrolls, wands, spells, throwing weapons, etc. instead of stats? Perhaps the effects of encumberance should be lowered to allow combos that do not rise STR ever? Etc. But of course, at the end, the stats have to be balanced, too, as they are not tested adequately, so obviously they cannot be balanced right now...

What I was striving to obtain were viable strategies where some of the stats are never raised and other raised only till 18/50. Ideally, at least one sensible combo for each stat or even each pair of stats. I think it makes the character development more fun, beyond the stereotypical "Mages don't need DEX, Priests don't need INT". Now you can have many kinds of Priests, depending on which stats they neglect. Of course generalists should also be a viable strategy, and I'm quite sure they already are, for all combos.

I believe I've actually halved the effects of SIZ, rather than doubling CON. I could be wrong here.

Oh, indeed. This means my conjecture that end-game HP are now higher were wrong --- they are actually lower and not by much. But then the displayed Hit Dice (p_ptr->hitdie) is wrong (p_ptr->hitdie is only used for display, BTW!): it should be 10 + con_bonus + siz_bonus/2. I'm still worried CON is overpowered now, even more after the mana tweak. Perhaps halve the CON bonus and leave SIZ bonus intact? Or rather double SIZ bonus now that you lowered the values in script files, so that starting hit die with all initial body stats at 10 is exactly as you specified in your draft of the new races (my system had this property, though you removed the birth-screen hit die display, so it's hard to see now).

If we apply the 'SIZ' modifies hit dice approach, than size should provide (approximately) twice as many starting hit points, than the bonus gained every level thereafter.

If I remember correctly, the fact that the starting HP are equal to hit dice, not to, on average, half this value is assured in the procedure that calculates p_ptr->player_hp. So no need to hack this. Even if it's buggy, just correct p_ptr->player_hp.

Note that I've also modified the SIZ table so that the bonus hit points is approximately twice the old values.

Sorry, I missed that. But, ..., ugh, why halve bonus and then double the table? It seems it evens out and so has no visible game-play effect, whatsoever, even in the UI. But at least SIZ is not made weaker than CON this way, which is good. Hmm, perhaps you think HP is calculated based on p_ptr->hitdie? It is not --- only p_ptr->player_hp (which is the same for every combo) and SIZ and CON bonuses are used, see xtra1.c.

I'm actually tempted to go even further and have SIZ provide a constant HP modifier, rather than one that is scaled by level... that may be too radical.

Go ahead. Your wild ideas are the best. :) However the UI cost is big --- you no longer have the single Hit Die factor that is uniformly modified by SIZ and CON and that generates HP as in every Angband variant (but SIZ and CON have not other effect on HP, which is simpler than in variants).

But they're not. Thieves and Warriors can increase more combat stats, because they don't have to worry about increasing any spell related stats.

This is why I said "averaged over all classes" meaning that the values of each stat summed for all classes should be similar. This makes balancing races easier, at least if we want to make every race reasonably good at, say, half of all classes. (Which is of course not true, since we obviously have generalists and specialists among races, but well, whatever. ;>)

I believe it missed the distinction I'm making between SIZ and CON.

Either you eventually make no distinction (assuming the UI bugs are ironed out), or most probably, I'm missing something.

andrewdoull
May 25, 2007, 13:36
This is a totally valid reason. However, you like warriors --- perhaps you tried to melee with the combos with minimal HP and STR?


I actually came to this conclusion after playing priests. It seemed pretty impossible to get Speed >= 0 and one useful starting stat (either Int or Wis). In general, I think the stat bonuses 'looked' too high, and I suspect it was because a hit die 7 class or race had a minus 6 to SIZ, as opposed to a -3. And similiarly the hit die 13 classes and races had a SIZ bonus that caused them to have too much of a speed penalty.


What I was striving to obtain were viable strategies where some of the stats are never raised and other raised only till 18/50. Ideally, at least one sensible combo for each stat or even each pair of stats. I think it makes the character development more fun, beyond the stereotypical "Mages don't need DEX, Priests don't need INT". Now you can have many kinds of Priests, depending on which stats they neglect. Of course generalists should also be a viable strategy, and I'm quite sure they already are, for all combos.
We agree here.


Oh, indeed. This means my conjecture that end-game HP are now higher were wrong --- they are actually lower and not by much. But then the displayed Hit Dice (p_ptr->hitdie) is wrong (p_ptr->hitdie is only used for display, BTW!): it should be 10 + con_bonus + siz_bonus/2.

Hit dice should be 10 + (2 * con_bonus) + size bonus. In fact, since its a display only attribute, we should really just make it 10 + size bonus since that will make Angband players more comfortable.

This equates to Angband, where hit points ~= (hit dice + 1)/2 + con_bonus, except at first level where hit points = hit dice + con_bonus.

I'm still worried CON is overpowered now, even more after the mana tweak.You're probably right, but I'm too much of a fan of the mana reserve system now (Can you say Raistlin?).

Sorry, I missed that. But, ..., ugh, why halve bonus and then double the table? It seems it evens out and so has no visible game-play effect, whatsoever, even in the UI. But at least SIZ is not made weaker than CON this way, which is good. Hmm, perhaps you think HP is calculated based on p_ptr->hitdie? It is not --- only p_ptr->player_hp (which is the same for every combo) and SIZ and CON bonuses are used, see xtra1.c.
I only halve the bonus for levels after level 1. So you still get the full bonus at first level based on size.


Go ahead. Your wild ideas are the best. :) However the UI cost is big --- you no longer have the single Hit Die factor that is uniformly modified by SIZ and CON and that generates HP as in every Angband variant (but SIZ and CON have not other effect on HP, which is simpler than in variants).
Andrew

Bandobras
June 4, 2007, 23:56
I've looked at the code again. You've added a comment to tables.c to byte adj_siz_die:

This is the total bonus at 1st level, plus every 2 levels thereafter.


I claim, this comment was true before your changes (after CL 1 only on average), but is true no longer.

In birth.c you see p_ptr->player_hp[0] is always 10, so, assuming the CON bonus is zero, p_ptr->player_hp[p_ptr->lev - 1] * bonus / 10 is in this case exactly the value from the adj_siz_die table. Similarly for levels after CL 1.

After your changes, the comment would be true for the CON bonus (as it was also before the changes). However, it is no longer true for SIZ, since you exactly halved the value (and added a spurious constant factor, which breaks things even more).

If you had trouble understanding my enigmatic hacks, why not just ask (e.g. through the bug system, or commit messages), as I did when I was learning your code... ;)

andrewdoull
June 5, 2007, 20:44
I've looked at the code again. You've added a comment to tables.c to byte adj_siz_die:

This is the total bonus at 1st level, plus every 2 levels thereafter.
I claim, this comment was true before your changes (after CL 1 only on average), but is true no longer.

In birth.c you see p_ptr->player_hp[0] is always 10, so, assuming the CON bonus is zero, p_ptr->player_hp[p_ptr->lev - 1] * bonus / 10 is in this case exactly the value from the adj_siz_die table. Similarly for levels after CL 1.

After your changes, the comment would be true for the CON bonus (as it was also before the changes). However, it is no longer true for SIZ, since you exactly halved the value (and added a spurious constant factor, which breaks things even more).

If you had trouble understanding my enigmatic hacks, why not just ask (e.g. through the bug system, or commit messages), as I did when I was learning your code... ;)

Point taken. I'll have another go at patching this later in the week, and see if you're happy/ier with the changes. I've just rolled the repository over to svn, and there's a 6 hour delay in updating some permissions via a cron job on berlios, so won't be able to fix this tonight.

Andrew

Bandobras
June 6, 2007, 00:29
*bows deeply*

P.S. Hehe, I've just stolen the first SVN commit in the history UnAngband. :D SVN rulez, and even the CVS->SVN export seems to be quite good. E.g. at http://svn.berlios.de/wsvn/unangband/?rev=1200&sc=1
you can see the whole 4-file commit changing HP stuff, this thread is about. Or try this one: svn merge -r 1200:1199 http://svn.berlios.de/svnroot/repos/unangband/trunk/unangband; svn ci ;)

Bandobras
August 27, 2007, 23:47
I see you've not reverted to my original SIZ/CON mechanics, but rather moved back closer to the standard V way of handling CON and you consider SIZ just a total replacement of the hit dice. OK, are you happy with that direction? If so, I can live with that, but I can try to repair and tweak the new system, so that it does not crash, is simpler to understand and show in the UI and is better balanced (both in the way it mimics V and in our extra goals, such as encouraging players to neglect some stats). Is it OK, or do you perhaps want to tweak it yourself?

Then we can start arguing about the stats of particular races and classes. :) In particular, it may be that I've made Hobbits and Shadow Fairies too similar, at least in the early game. Your changes equated them even more, IIRC. But then, boosting Shadow Fairies' archery could make them too similar to Wood Elves. Perhaps change their cool flag to invisibility flag good enough to flee anything in the first 5 levels, including uniques (and later on still giving some edge)? Or something...

GCD
August 28, 2007, 00:01
I think the whole idea of size being a stat that improves with levels is kind of strange. I would suggest keeping size as a stat that's mostly dependent on the race you start with. There could be some variation within the race. Size could then be modified by equipment or by potions (that would make you temporarily bigger or smaller) but would otherwise stay unchanged throughout the game.

Bandobras
August 28, 2007, 10:01
I think the whole idea of size being a stat that improves with levels is kind of strange. I would suggest keeping size as a stat that's mostly dependent on the race you start with. There could be some variation within the race.

Weight is race-dependent and with some minor variations. Size is only initially race-dependent. I you talk about realism, I think if in this world a charactere can get 4 times more intelligent or strong, he may as well quadruple his muscles' weigh. Think about it as growing up, superhero powers, drinking too much magical coca-cola, or anything you like. :) Perhaps characters should age quicker (now they do slowly, IIRC), if growing up is a plausible explanation.

If you have game-play objections, however, I'm all ears.

P.S. I think we have a problem with Nexus swapping stats in Un (if it's not disabled already). It's basically a disaster or an exploit rendering races moot. The reason is that you cannot max stats in Un and you don't have any "maximize" mode, so Nexus swaps forever everything related to stats, unlike in V. I guess nexus could have it's effect timed, perhaps with the same timer as the long-lasting stat drains in Un.

andrewdoull
August 28, 2007, 10:11
Weight is race-dependent and with some minor variations. Size is only initially race-dependent. I you talk about realism, I think if in this world a charactere can get 4 times more intelligent or strong, he may as well quadruple his muscles' weigh. Think about it as growing up, superhero powers, drinking too much magical coca-cola, or anything you like. :) Perhaps characters should age quicker (now they do slowly, IIRC), if growing up is a plausible explanation.

I decided to go with a size stat because of the hobbits in Lord of the Rings. There's at least 1 instance (the Ent draught) where hobbits definitely increase in size as a result of drinking something. Its also a fantasy trope that heroes are taller than others.

Besides which, realism in a fantasy game isn't the greatest of arguments.



If you have game-play objections, however, I'm all ears.

P.S. I think we have a problem with Nexus swapping stats in Un, if it's not disabled. It's basically a disaster or an exploit rendering races moot. The reason is that you cannot max stats in Un and you don't have any "maximize" mode, so Nexus swaps forever everything related to stats, unlike in V. I guess nexus could have it's effect timed, perhaps with the same timer as the long-lasting stat drains in Un.

You're right - nexus is really problematic. Not just for stat gain - but for changing the starting race as well (there's not as much impact, because we are not using maximise anymore).

Andrew

Bandobras
August 28, 2007, 11:36
for changing the starting race as well

You mean nexus can change the race? Like the mushrooms of Metamorphosis in S? I must have understood you wrong...

BTW., what about my previous post?

andrewdoull
August 28, 2007, 12:39
BTW., what about my previous post?

Working on it... got a list a mile long. Of course, I'm actually working on something else, as you may have noticed from SVN or my blog.

Edit: My mistake, I thought Nexus also did race change...

Bandobras
August 28, 2007, 20:41
Wow, I'm in a creative binge ---- it always happens when I should be doing something totally different, requiring creativity, but I don't feel like starting. :)

Another idea to distinguish Shadow Fairies (and Goblins, perhaps) from Hobbits: Devices skill. For it to make difference, critical activations from O would be nice. To change the shallow levels tactics we'd need a wand of Sparks from S, make the effects of Wonder and the chances of confusion, slowing,etc. via devices depend on the skill, add the ability to trigger any jewelery inducing teleportation (high-fail activation, removed together with curse), make the staff of Light shallower than the wand and cheaper and give it a chance to blind adjacent monsters (weaker chance than of the wand and not targetable, but the staff is useful) and/or make the staff of starlight shallower and cheaper, give a high chance of frighten all monsters in LOS when breaking ('k') magical devices, depending on their level and the skill.

P.S. Wow, you are fast. :D

r1362 | andrewdoull | 2007-08-28 21:26:09 +0200 (Tue, 28 Aug 2007) | 1 line
- Add wands of spark. Adjust shallow wand depths and prices. Made staffs of star
light shallower and cheaper.

andrewdoull
August 28, 2007, 22:18
Wow, I'm in a creative binge ---- it always happens when I should be doing something totally different, requiring creativity, but I don't feel like starting. :)

Another idea to distinguish Shadow Fairies (and Goblins, perhaps) from Hobbits: Devices skill. For it to make difference, critical activations from O would be nice.

Agreed. On to do list.


To change the shallow levels tactics we'd need a wand of Sparks from S,


Now done.

make the effects of Wonder and the chances of confusion, slowing,etc. via devices depend on the skill,

To do list.

add the ability to trigger any jewelery inducing teleportation (high-fail activation, removed together with curse),

Thanks for reminding me. I'll do this now.

make the staff of Light shallower than the wand and cheaper and give it a chance to blind adjacent monsters (weaker chance than of the wand and not targetable, but the staff is useful) and/or make the staff of starlight shallower and cheaper,

I've gone with staff of Starlight as Light is quite a nice weapon.

give a high chance of frighten all monsters in LOS when breaking ('k') magical devices, depending on their level and the skill.

Bandobras
August 29, 2007, 14:58
I'd like to ask for help estimating how big the wand of Spark damage should be. How big is it in S? How does it compare to to the wand of Magic Missile and to the standard mid-game arrows (+0, +0) show with a (+0, +0) short bow? How do the latter two compare to each other in V, NPP and O? Is there a wand of Spark in any other variant?

Thanks. :)

Satyr
September 2, 2007, 21:40
Wand of spark damage in S is skill dependent and ranges from 1d6 to 1d24, MM is fixed at 2d6, standard arrow + long bow is 3x 2d2 = 6d2 (boni to deadliness propably cancel out with the lousy accuracy early on) BUT the weak point of wands of spark is their limited range, they just hit the next three squares (though all of them). Don't know if that arc-type damage is implemented in Un at all.

andrewdoull
September 2, 2007, 22:46
BUT the weak point of wands of spark is their limited range, they just hit the next three squares (though all of them). Don't know if that arc-type damage is implemented in Un at all.

I've adopted the same code as Sangband for projections and do this.

Wands of spark 50% of the time in Un will beam for 112 gravity damage. This is a bug ;)

Bandobras
September 2, 2007, 23:06
Don't know if that arc-type damage is implemented in Un at all.

Oh, thanks a lot. Yes, the wands work exactly the same in Un, only the damage is different.

Let me see, I'd try some guesswork. For a CL3 S character if he puts points in devices, he gets Spark for 2d11 = 6 on average, if he puts points in bows, he gets 4d2 + (criticals - misses) from a short bow, let's say it evens out to = 6, and mm is 2d6 = 7.

Currently in Un short bow is 2d6 + 2 from oil coating + 1 from criticals - 2 from misses = 9, spark is 3d5 = 9, mm is 3d4 = 7.5. So it seems mm is somewhat overpowered in S, because it does not increase in power. In Un only bows increase in power and they enable useful coatings, so perhaps the wands are too weak until Un gets critical activations. But at the start it seems OK, so I'd propose no changes for wip6a.

Fuma
September 3, 2007, 14:43
They do have a "critical activation". 50% chance of a gravity beam ;)