Do we need points based stat generation at all?
Collapse
X
-
I don't think the fact that WoW is a gear-focused grind fest really matters in this conversation, although it is true. Perhaps the great amount of diverse itemization in WoW offsets the ability to customize stats. I believe that *bands have good itemization but people almost always ignore stats for resists, which is sad. -
Of course WOW emphasizes gear. Gear requires you to either grind for gold or do boring, repetative quests. That's great when your customers pay by the hour. No fair making an optimized starting charachter that lets you skip the first hour or two of grinding.Leave a comment:
-
Just as a point of reference, in WoW you don't pick your stats at all, either at birth or throughout the game. They are assigned when you roll a character based on race/class and automatically get increased per level based on your class.
When they came out with it, it was very much against most of the other RPGs out there that demanded customization, and people complained. Until they played it and realized that there are enough ways to customize your character and taking out stat manipulation let you focus on other things, like gear itemization. You can still stack your stats with gear.Leave a comment:
-
Ah, I might not have been clear. The current algorithm is intended to be exactly the one you proposed early in this thread, and it's that I'm trying to tweak (see http://trac.rephial.org/browser/trunk/src/birth.c#L766 for the implementation). I'm assuming anyway that I've not put in a bucket of bugs, it's not that complicated an algorithm after all.
Code:813 /* If possible buy adj DEX of 18/10 */ 814 case 1: 815 { 816 if (!maxed[A_DEX] && p_ptr->state.stat_top[A_DEX] < 18+10) 817 { 818 if (!buy_stat(A_DEX, stats, points_spent, points_left)) 819 maxed[A_DEX] = TRUE; 820 } 821 else 822 { 823 step++; 824 } 825 826 break; 827 }
Leave a comment:
-
It still has two notable problems:
for full casters, the spell-casting stat is much more important.
CON is undervalued. Starting with a low base CON is OK only if you don't plan to go much past 2000'.Leave a comment:
-
Leave a comment:
-
My current char, a dwarf ranger choosing str over dex just to highlight this issue, http://angband.oook.cz/ladder-show.php?id=8845 is doing just fine. I am ready to take on Morgoth with a base dex of 18/20, and could still get my full 5 blows with the melee weapons [Calris and Aglarang] I was considering using against Sauron. I admit that I am not sure base str 18 + dex 10 was better than str 17 + dex 14, but I'm not sure it wasn't better either.
Dex just isn't that important to mages, priests, or rangers early on, and it's not that important to anyone in the late game considering how little you need and what you are likely to have by then.
As to specifics, I gave a full algorithm for spending stat points early on in this thread. It probably needs a little tweaking. In contrast, the initial stats I see at startup in 1375 are just plain crazy.
In the late game, CON > spellstat > STR > DEX. In the early game, DEX 18/10 > Spellstat > STR > DEX 18 > CON.Leave a comment:
-
Right, seeing as I still don't really have a clue what to do here:- http://rephial.org/research/birthstats1.txt is a table showing the (adjusted, not base) stats produced by the current algorithm.
- http://rephial.org/research/birthstats-dex17.txt represents a change I made to my local copy because dex seemed to be overvalued where we initially try just for base 17 in dex and rely on the later "spend more points on dex if available" bit to boost it up - this doesn't really achieve the aim of hitting the significant breakpoint as often as possible, but might still be of interest.
- http://rephial.org/research/birthstats-lessdex.txt is another tweak I tried buying the 18/10 dex but excluding it from the later "spend leftover points" step.
If anyone has concrete suggestions for tweaking that algorithm I can easily adjust it and generate new tables for comparison. Assuming anyone still cares.Likewise, do say if you think either of the tweaks I've made give better stat distribution because I'll commit them as a "better than nothing" change in svn.
Addressing a couple of other points from the thread:
When it comes to not hardcoding the breakpoint(s), we may as well (eventually, if we need to) just put them in an edit file as breakpoints with commented explanations, because otherwise we'll be hardcoding the dagger as the item to use for comparison, and so on down the line until the "determining breakpoints" code is impossible to understand or we end up using brute force to try every combination of stats and weapons.
When it comes to the INT_MANA, MIXED flags, and so on, I currently use the spellcasting stat already defined in the edit files, and use a low max blows to indicate that a class is a pure spellcaster, rather than adding more flags. Again, we can always change it later if it matters.Leave a comment:
- http://rephial.org/research/birthstats1.txt is a table showing the (adjusted, not base) stats produced by the current algorithm.
-
I don't have this problem in Angband, but it occurs to me that something like this would really help in UnAngband, where moderately optimized character initialization is overwhelmingly complex. (All those classes, specializations, races--who knows what you should do to get a reasonable starting character.)Leave a comment:
-
So long as we are obsessing ridiculously, the 18/10 dex shouldn't be hardcoded either. Some generalization of the code I wrote for "with +3 dex you get another blow" should be used to determine which str/dex combos get max blows with a dagger. If all of the gore of the blows stuff is indirected to a single function and if any of it changes, starting stats would adjust automatically. That would also pick up the case where you need to start with base 18 str.Leave a comment:
-
Since the values would be presented by the code in birth.c that generates the stat buying screen, you somehow will have to make do merely with a high-level universal programming language. It extends just fine since that code is already accessing the race and class mods.
Adding an external table that would have to be parsed would be more work, not less, and would suffer further when future races were added or any stat mods were changed.
My point was without some footprint in the class or race data, it can't be extensible, because you can't make intelligent decisions about how to allocate stats. That footprint can be specific builds or it could be flags which affect a native C algorithm, as described above. Forgive me for debating a method.Leave a comment:
-
N:0:Warrior
F:FIGHTER | NOSPELL
N:1:Mage
F:SPELLCASTER | INT_MANA
N:2:Priest
F:SPELLCASTER | WIS_MANA
N:3:Rogue
F:MIXED | INT_MANA
N:4:Ranger
F:MIXED | INT_MANA
N:5:Paladin
F:MIXED | WIS_MANA
(Add more flags and adjust to taste ;-)
Now the clever bit is that when you have some new classes you don't need to re-do the formula, just give them appropriate flags.
N:6:War-Mage
F:MIXED | INT_MANA
N:7:High Priest
F:SPELLCASTER | WIS_MANA | INT_MANA
N:8:Gladiator
F:FIGHTER | NOSPELL
(Coming soon to a variant near you!)Leave a comment:
-
Adding an external table that would have to be parsed would be more work, not less, and would suffer further when future races were added or any stat mods were changed.Leave a comment:
-
Hee hee~
Code:N:0:Human S:0:0:0:0:0:0 R:0:0:0:0:0:10:0:0 X:10:100:0 I:1:14:6 H:72:6:66:4 W:180:25:150:20 C:0|1|2|3|4|5 [COLOR="Yellow"][B]# B:class:str:int:wis:dex:con:chr B:0:17:0:0:17:17:0 B:1:17:17:0:12:16:0 B:2:17:0:17:12:16:0[/B][/COLOR] ...
Leave a comment:
-
Okay, a table of starting stats for each class isn't really any more complicated than equally dividing your points, so you could use something like this:
Code:STR INT WIS DEX CON CHR Warrior 17 10 10 17 17 10 Mage 17 17 10 12 16 10 Priest 17 10 17 12 16 10 Rogue 17 15 10 17 13 10 Ranger 17 14 10 17 14 10 Paladin 17 10 15 17 13 10
The important values are the combo values, not the base values. If you ignore that, you might as well forget the whole exercise.Leave a comment:
Leave a comment: