Do we need points based stat generation at all?

Collapse
X
Collapse
+ More Options
Latest Activity
 
  • Time
  • Show
Clear All
new posts

  • Zikke
    replied
    Originally posted by Atarlost
    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.


    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.

    Leave a comment:


  • Atarlost
    replied
    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:


  • Zikke
    replied
    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:


  • PowerDiver
    replied
    Originally posted by ajps
    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.
    The problem, I think, is

    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                         }
    My intention was that if you cannot achieve 18/10 here, you should not spend any points at all on dex until the last phase. Instead, you spend a lot of points even when you cannot achieve 18/10.

    Leave a comment:


  • Pete Mack
    replied
    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:


  • ajps
    replied
    Originally posted by PowerDiver
    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.
    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.

    Leave a comment:


  • PowerDiver
    replied
    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:


  • ajps
    replied
    Right, seeing as I still don't really have a clue what to do here:

    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:


  • Pete Mack
    replied
    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:


  • PowerDiver
    replied
    Originally posted by Marble Dice
    Forgive me for debating a method.
    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:


  • Marble Dice
    replied
    Originally posted by PowerDiver
    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.
    Universal at least, the definition of "high-level" may be open to interpretation.

    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:


  • PaulBlay
    replied
    Originally posted by Marble Dice
    To avoid a table, you'll need a formula, which either has to be compiled in due to the per-class nature of the stat allocation (bad for extension), or powered with a scripting language (not present).
    It could be both compiled in and flexible. I would give the p_class.txt file some extra flags that would be used by the formula in calculating suggested values.

    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:


  • PowerDiver
    replied
    Originally posted by Marble Dice
    To avoid a table, you'll need a formula, which either has to be compiled in due to the per-class nature of the stat allocation (bad for extension), or powered with a scripting language (not present).
    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.

    Leave a comment:


  • Marble Dice
    replied
    Originally posted by Magnate
    That's the best argument for removing Charisma that I've yet seen.
    Hee hee~

    Originally posted by PowerDiver
    Choosing a base dex of 17 that does not equate to precisely 18/10 dex is usually a mistake, a big mistake, except for warriors.

    The important values are the combo values, not the base values. If you ignore that, you might as well forget the whole exercise.
    Personally I think good base stats that don't achieve the perfect break points are still better than newbies spending points in non-spell-stat INT/WIS or CHR, but you do have a point: blanket class base stats are not perfect. The only way I can see to reconcile this issue is with a race-class table. To avoid a table, you'll need a formula, which either has to be compiled in due to the per-class nature of the stat allocation (bad for extension), or powered with a scripting language (not present).

    Originally posted by ajps
    [re: a full race-class table] Well, it sort of defeats the point of the edit files if we do that, so it's probably no go for that idea, whereas a per class one we could hack into the current format easily enough.
    A table wouldn't necessarily defeat the edit files though - each race could have a list of suggested builds for each class. Something like...

    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]
    ...
    The character generator could just load the starting stats from the race data for the class you picked, if it was supplied in the p_race.txt file. Otherwise, it wouldn't distribute any points.

    Leave a comment:


  • PowerDiver
    replied
    Originally posted by Marble Dice
    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
    This way any melee class has high-as-is-cheap STR and DEX, so they'll get multiple blows if not max starting blows, and all the hybrid classes will have at least 16 spell stat (for 1.0 spells per level) as long as you don't pick a race with a spell stat penalty for that class. Every combination with one of these builds won't come out perfect, but it's a good place to start.
    I disagree. The whole point of suggested values is for the newbie, who does not realize 18/10 dex is magical, to get a reasonable allocation. Choosing a base dex of 17 that does not equate to precisely 18/10 dex is usually a mistake, a big mistake, except for warriors.

    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:

Working...
๐Ÿ˜€
๐Ÿ˜‚
๐Ÿฅฐ
๐Ÿ˜˜
๐Ÿคข
๐Ÿ˜Ž
๐Ÿ˜ž
๐Ÿ˜ก
๐Ÿ‘
๐Ÿ‘Ž
โ˜•