Do we need points based stat generation at all?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Pete Mack
    Prophet
    • Apr 2007
    • 6883

    #31
    I like your proposal better, though I would downgrade the spellcasting stat (and possibly CON) for the half-casters, and add a point in STR and/or DEX.

    (I also don't really like to start priest and mage at DEX 10, because it takes forever to get past two blows with a whip or rapier.)

    Also, you probably don't have to do the full grid, just the "recommended" class rate combos.
    If someone wants to roll a High-Elf Rogue, he can use the default Rogue setup.

    Comment

    • Marble Dice
      Swordsman
      • Jun 2008
      • 412

      #32
      Originally posted by Pete Mack
      I like your proposal better, though I would downgrade the spellcasting stat (and possibly CON) for the half-casters, and add a point in STR and/or DEX.

      (I also don't really like to start priest and mage at DEX 10, because it takes forever to get past two blows with a whip or rapier.)

      Also, you probably don't have to do the full grid, just the "recommended" class rate combos.
      If someone wants to roll a High-Elf Rogue, he can use the default Rogue setup.
      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 still maintain I wouldn't mind populating all 66 combinations with strong starting builds for each race/class if someone has a mind to actually use it.

      Comment

      • ajps
        Apprentice
        • May 2007
        • 50

        #33
        Originally posted by Marble Dice
        I still maintain I wouldn't mind populating all 66 combinations with strong starting builds for each race/class if someone has a mind to actually use it.
        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.

        Comment

        • Magnate
          Angband Devteam member
          • May 2007
          • 5110

          #34
          Originally posted by Marble Dice
          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
          That's the best argument for removing Charisma that I've yet seen.
          "Been away so long I hardly knew the place, gee it's good to be back home" - The Beatles

          Comment

          • PowerDiver
            Prophet
            • Mar 2008
            • 2820

            #35
            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.

            Comment

            • Marble Dice
              Swordsman
              • Jun 2008
              • 412

              #36
              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.

              Comment

              • PowerDiver
                Prophet
                • Mar 2008
                • 2820

                #37
                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.

                Comment

                • PaulBlay
                  Knight
                  • Jan 2009
                  • 657

                  #38
                  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!)
                  Currently turning (Angband) Japanese.

                  Comment

                  • Marble Dice
                    Swordsman
                    • Jun 2008
                    • 412

                    #39
                    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.

                    Comment

                    • PowerDiver
                      Prophet
                      • Mar 2008
                      • 2820

                      #40
                      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.

                      Comment

                      • Pete Mack
                        Prophet
                        • Apr 2007
                        • 6883

                        #41
                        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.)

                        Comment

                        • ajps
                          Apprentice
                          • May 2007
                          • 50

                          #42
                          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.

                          Comment

                          • PowerDiver
                            Prophet
                            • Mar 2008
                            • 2820

                            #43
                            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.

                            Comment

                            • ajps
                              Apprentice
                              • May 2007
                              • 50

                              #44
                              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.

                              Comment

                              • Pete Mack
                                Prophet
                                • Apr 2007
                                • 6883

                                #45
                                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'.

                                Comment

                                Working...
                                😀
                                😂
                                🥰
                                😘
                                🤢
                                😎
                                😞
                                😡
                                👍
                                👎