blows per turn

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • fizzix
    Prophet
    • Aug 2009
    • 3025

    blows per turn

    I've always felt that the blows per round calculation felt a little shoddy and after reading this 6 month old thread: http://angband.oook.cz/forum/showthread.php?t=1691 I've become convinced that my original feeling is correct.

    I was thinking of trying my hand at a simplified calculation, but before I start, I'd like to know if any significant progress has already been accomplished. If this is a settled issue or not. (I'm guessing it isn't)

    The basic idea is that a new calculation would have to satisfy the following conditions:

    It is a function of STR, DEX, weapon weight, character class, and possibly character level
    It is simpler than the current calculation
    It is compatible with either an integral or a fractional blows per round system
    It will not require any weapon rebalancing

    any other conditions I'm missing?
  • fizzix
    Prophet
    • Aug 2009
    • 3025

    #2
    I have played around with a couple formulas for blows per turn. Right now I'm leaning towards something that looks like:

    1+(str*dex)/(a*weight^2 + b*weight + c) + clevel*class_factor

    STR and DEX would be numbers from 3-38 with 18/200 corresponding to the maximum value of 38. I'm trying to completely avoid having table values and to minimize the number of arbitrary constants. Although, I may have to go to higher order polynomials, either in the numerator or the denominator. This first ratio term is designed to go between 0 and 2.

    The constants a,b,c will have to be empirically determined, And there may need to be some fudging by forcing maximums and minimums on each term. ("may" here means, "definitely")

    The class_factor would look like 1/15 for warriors, 1/20 for rangers, rogues, paladins and 1/30 for priests and mages. This term be capped at 3,2 and 1 respectively. In the current integral blow system, warriors would get additional blows at clevel 15, 30 and 45 regardless of weapon weight. paladins, rogues and rangers would get blows at 20 and 40, mages and priests at 30.

    Basic guidelines for the constants is that STR 17, DEX 17 should barely get an extra blow with the lightest weapons at game start. and STR 38, DEX 38 should barely get maximum blows with the heaviest weapons.

    Some minor tweaks will be needed to change between an integral and a fractional blow system, but it would follow much easier with this formula than with the current implementation.

    Comment

    • Marble Dice
      Swordsman
      • Jun 2008
      • 412

      #3
      I seem to recall someone getting somewhat close to emulating the current table system with a formula, but I don't remember which thread I read that in, nor is simply emulating the current system a good goal.

      Under a system such as you propose, everyone would get 1 blow to start, and optionally up to 2 extra blows depending on str, dex, and weapon weight. Warriors would gain an extra 3 blows by leveling, hybrids would gain 2, and casters 1, leaving the total number of max blows per class unchanged. I think I'm in favor of the general premise, by moving some of the blows over to character level you de-emphasize the need to scum for stat potions, without completely removing the importance of stats for melee attacks. A similar approach is being considered for caster SP.

      This would limit the number of starting blows to 3, which would be worse than what is currently attainable by some warriors builds, but they'd get the lost blow back at level 15. This could possibly also make it more difficult for low level warrior winners, since they won't get their last blow until 45, but maybe low level warrior winners wouldn't normally have the stats for all 6 blows anyway?

      Comment

      • fizzix
        Prophet
        • Aug 2009
        • 3025

        #4
        Originally posted by Marble Dice
        I seem to recall someone getting somewhat close to emulating the current table system with a formula, but I don't remember which thread I read that in, nor is simply emulating the current system a good goal.
        I think the post you may be referring to is from the thread I linked to at the beginning. It was by Polyonymous and I'll reprint it here.

        Originally posted by Polyonymous
        My best fit when I use the whole table (using the low dex index numbers is debatable as they're essentially outliers for really low dex) looks like

        blows = (3 * str_index + 4 * dex_index + 7)/12 (capped at 1 and 6)

        I tried fitting with a cap of 5 blows. Also tried including str_index^2, dex_index^2, and str_index * dex_index factors. I tried normalizing the dex_index to the stat values to compensate for the fact that the early notches are a bit further apart. I tried modelling as energy/blow instead of blows/round. I tried all combinations of the given variations. None of them significantly improved the fit. The correlation between the equation above and the actual data points is 93.26%.

        If using actual dex values (may seem nicer as then the dex_index lookup can be removed), the formula would be

        blows = (10 * str_index + 5 * dex_linear {3 = 3, 18/150 = 33} - 27)/40 again capped at 1 and 6.
        This was actually my starting point, but I then decided that I didn't actually want to recreate the current system. (i feel it's broken) I also wanted to eliminate seemingly arbitrary str and dex tables and make the overall function much more linear.

        Originally posted by Marble Dice
        Under a system such as you propose, everyone would get 1 blow to start, and optionally up to 2 extra blows depending on str, dex, and weapon weight. Warriors would gain an extra 3 blows by leveling, hybrids would gain 2, and casters 1, leaving the total number of max blows per class unchanged. I think I'm in favor of the general premise, by moving some of the blows over to character level you de-emphasize the need to scum for stat potions, without completely removing the importance of stats for melee attacks. A similar approach is being considered for caster SP.

        This would limit the number of starting blows to 3, which would be worse than what is currently attainable by some warriors builds, but they'd get the lost blow back at level 15. This could possibly also make it more difficult for low level warrior winners, since they won't get their last blow until 45, but maybe low level warrior winners wouldn't normally have the stats for all 6 blows anyway?
        Yes that's kind of the point. Make there be more of a balance between level dependent and stat dependence. Right now there really isn't that much of a difference between a maxed out level 40 character and a level 50 character. I feel that there should be. I also would be in favor of any approach that evens out SP and HP in a similar fashion.

        Comment

        • fizzix
          Prophet
          • Aug 2009
          • 3025

          #5
          So I came up with some numbers that work fairly well. These can be tweaked even more.

          blowsperturn = STR*DEX/(175 + MINIMUM(200, 2*weight^2) + 10*weight)

          STR and DEX go from 3-38 with 18/200 equaling 38. weight is capped at 3 on the lower end. A cap at the higher end is also possible, but not necessary.

          At start, 17 STR and 17 DEX will get two blows per round with anything 5 pounds or lighter. 3 blows per round is attainable at start with anything 3 pounds or lighter, but not really if you want to invest significantly in INT or WIS.

          To get max blows with a 30 pounds weapon you will need to be near maximum in both STR and DEX. The heaviest weapon that has attainable max blows is 34 lbs.

          I ran through some intermediate values and they seem pretty good. I don't have a convenient graphical way to present the results though. Perhaps contour plots for individual weapon weights?

          Comment

          • PowerDiver
            Prophet
            • Mar 2008
            • 2820

            #6
            It probably does not matter, but in these formulas you should assume that 18/200 gets boosted from a value of 38 to a value of 40 for the bonus of maxing it out.

            My view is instead of making things multiplicative, to have several different formulas and take the min value. So you might be str limited, dex limited, or class/clvl limited. I don't really see how to decide which approach is better.

            Comment

            • Hariolor
              Swordsman
              • Sep 2008
              • 289

              #7
              Originally posted by PowerDiver
              It probably does not matter, but in these formulas you should assume that 18/200 gets boosted from a value of 38 to a value of 40 for the bonus of maxing it out.

              My view is instead of making things multiplicative, to have several different formulas and take the min value. So you might be str limited, dex limited, or class/clvl limited. I don't really see how to decide which approach is better.
              Theoretically, it should be possible to balance a single formula so that one can achieve a practical limitation because of str, or dex, or clevel. Any of the approaches above would seem to be on the right track.

              I suspect the best route for this would be to build several linear functions atop one another (summing), such that the sum of all of them, maxxed, would provide the optimal blows/round with the heaviest weapon. This would then be easily ported into a more granular system like fractional blows, as it would already be linear in nature, and hence potentially more fair...

              I'll try to whip something up here that demonstrates what I mean.

              Comment

              • Hariolor
                Swordsman
                • Sep 2008
                • 289

                #8
                OK - assumptions:
                STR and DEX range 1-40.
                Weapon Weight [WW] ranges 1-40.
                Character Level [CL] ranges 1-50.
                Everyone gets 1 blow no matter what.
                Then add to it the result of...

                Formula:

                Fighter

                (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL/3


                Paladins and Rogues
                (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL*4/15


                Rangers and Priests
                (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL*2/5


                Mages
                (LOG(((((STR+DEX)/2)/(WW))))+0.3)*CL*2/15

                I wanted to make a very simple line y=mx, so...

                Basically I averaged STR and DEX, then divided by the weight of the weapon.
                I then add .3 to this (due to the nature of the LOG function)
                Taking the LOG will linearize a wide range of possible values (1-40).
                This is the slope of my line.

                I then multiplied by an appropriate modifier based on CL.

                Round the result up or down to the nearest whole integer, and you have the number of bonus blows that round. Naturally, at higher stats and CL it becomes necessary to enforce a hard cap on the max number of bonus blows based on class. (Nobody should get 17 bonus blows/round, for example)

                I am not claiming this is a 1:1 replacement of the current system. It weights things a bit more heavily towards CL, especially in the early game.

                For example, a CL1 fighter with 18/50 STR and 18/30 DEX will not get a bonus blow until CL3, even with a whip (WW=3).

                This could be easily remedied by reducing the weight of the lightest weapons somewhat.

                I also recognize that this means a fighter with those stats will be getting 6 blows/round with a whip by CL12. However, I think that's OK, as you could also be getting 4 blows with WW=6, 3 with WW=18, and 2 with WW=32

                It's not perfect, but I think it might be close. Furthermore, eliminate the rounding, and it is an easy switch to a fractional system.

                if someone can tell me how to share it, I've made a spreadsheet with dropdowns for STR DEX CL and WW, which will automatically calculate the blows/round for each class under this method. I'll happily post it here or email it to anyone who'd like to play with it.

                Cheers

                Comment

                • half
                  Knight
                  • Jan 2009
                  • 910

                  #9
                  You almost certainly don't want to treat STR and DEX symmetrically. For example, when wielding a dagger, you shouldn't get more blows for having a higher strength, as you are dexterity limited with that weapon. In general, each weapon would benefit from extra strength only up to a certain amount of strength which depends on the weapon's weight. I think you want a formula that limits blows based on dex (in a weight independent manner?) and also limits blows based on strength in a very weight dependent manner. For example, you could have a function to deal with the strength part that lies between 0 and 1 and multiplies the dex part of the function. For example:

                  blows = 1 + (dex_part) * (strength_and_weight_part)

                  strength_and_weight_part = MIN(1, strength / weight * k)

                  dex_part = ?

                  ------

                  Another point is that you might want to use this opportunity to redo weapon weights in a sensible manner, since the people who put in the original values knew nothing about real weapons weights (perhaps they used values from D&D?). It is not that hard to find real weights based on old collections online, and I can provide sensible values for most weapons if people want them.

                  eg Longsword = 3lb, Shortsword = 1.5lb etc.

                  Comment

                  • fizzix
                    Prophet
                    • Aug 2009
                    • 3025

                    #10
                    Originally posted by half
                    You almost certainly don't want to treat STR and DEX symmetrically. For example, when wielding a dagger, you shouldn't get more blows for having a higher strength, as you are dexterity limited with that weapon. In general, each weapon would benefit from extra strength only up to a certain amount of strength which depends on the weapon's weight. I think you want a formula that limits blows based on dex (in a weight independent manner?) and also limits blows based on strength in a very weight dependent manner. For example, you could have a function to deal with the strength part that lies between 0 and 1 and multiplies the dex part of the function. For example:

                    blows = 1 + (dex_part) * (strength_and_weight_part)

                    strength_and_weight_part = MIN(1, strength / weight * k)

                    dex_part = ?

                    ------

                    Another point is that you might want to use this opportunity to redo weapon weights in a sensible manner, since the people who put in the original values knew nothing about real weapons weights (perhaps they used values from D&D?). It is not that hard to find real weights based on old collections online, and I can provide sensible values for most weapons if people want them.

                    eg Longsword = 3lb, Shortsword = 1.5lb etc.
                    This is roughly how the system stands now. The current implementation gives a number of blows based on STR/WW with some class modifications. It then puts that through a DEX filter that decides whether you get the full amount of blows or not. That's not exactly how it works, but it's very close.

                    The main problem I have with this system is that it, by necessity, creates arbitrary absolute break points in DEX. These break points would go away with a fractional blows system, but there's no way to get around it in a integral blows system. If you want a formula flexible for both, you need to make sure one of your limiting factors is not a single variable.

                    The second thing I was looking for was simplicity, trying to lose the arbitrary values from the strength, dexterity and bpt tables.

                    I originally looked at functions that were ratios of STR/(WW - DEX) with appropriate numerical factors eliminated. This did not yield any suitable functions.

                    The next set of functions I looked at were very similar to Hariolor's with STR+DEX in the numerator and a linear function of WW in the denominator. I switched to the product of STR and DEX and a quadratic in the denominator because I liked the idea of BPT being maximized when STR and DEX are roughly equal. In Hariolor's system, DEX becomes a useless stat to put points into until it's inefficient to put more into STR.

                    I'm not wedded to this idea. However, I think *something* simpler, without arbitrary break points in DEX, and adaptable to a fractional system is important.

                    Lastly, if there is a desire to reweigh the weapons, this will throw all of this off. And an entirely new set of functions will be necessary, perhaps even more contrived than before. Furthermore, it might require a reevaluation of the encumberance calculation. I think the current weights of weapons were not meant to be realistic, but rather were chosen for gameplay issues. After all, the same size long sword for a kobold and a dunadan is laughable. It might be better to not think of lbs as Imperial (or US) pounds but rather as MIddle-Earth pounds, an entirely different unit of measure.

                    Comment

                    • Hariolor
                      Swordsman
                      • Sep 2008
                      • 289

                      #11
                      One option that might deal with the weapon weight issue would be to introduce an "awkwardness" factor for use in the blows/round calculation. A weapon that is very heavy but well-balanced (zweihander or glaive, for example) might be considered less awkward than a similar weapon that is harder to use effectively (flail, scythe, greataxe).

                      Yes, this would mean adding another set of terms to the weapons, but making awkwardness a smaller range than weight (1-10, perhaps) might make the equations easier to deal with.

                      Fizzix, I have to disagree that Dex is less valuable than Str in my system. Both contribute equally to your #blows/round. The differences in the stats are structural and independent of the calculation. Str adds to-dam, and encumbrance. Dex adds to-hit, to-AC, and to-stealth.

                      For many characters, pouring points into Dex would be more valuable than pouring them into Str for this exact reason. The only reason why STR is so valuable now, is that in the blow/round indexes, STR is a more important factor than dex (beacuse it is directly affected by WW). I think making them weighted more equally would allow players to choose to be very stealthy/dextrous at the beginning and not be forced to have 1 blow/round from every weapon until stat-gain.



                      maybe I misunderstood what you meant?

                      Comment

                      • fizzix
                        Prophet
                        • Aug 2009
                        • 3025

                        #12
                        Originally posted by Hariolor
                        Fizzix, I have to disagree that Dex is less valuable than Str in my system. Both contribute equally to your #blows/round. The differences in the stats are structural and independent of the calculation. Str adds to-dam, and encumbrance. Dex adds to-hit, to-AC, and to-stealth.

                        For many characters, pouring points into Dex would be more valuable than pouring them into Str for this exact reason. The only reason why STR is so valuable now, is that in the blow/round indexes, STR is a more important factor than dex (beacuse it is directly affected by WW). I think making them weighted more equally would allow players to choose to be very stealthy/dextrous at the beginning and not be forced to have 1 blow/round from every weapon until stat-gain.

                        maybe I misunderstood what you meant?
                        I probably explained it poorly. When you consider the sum of STR and DEX you are not penalized for asymmetries in STR and DEX. 18/20 STR 14 DEX = 17 STR 17 DEX = 14 STR 18/20 DEX as far as blows are concerned. When you consider the product of STR and DEX 17,17 is more powerful than any asymmetrical option. Your system allows a character to pour all their stats into either STR or DEX, mine gives a small penalty for not distributing them evenly. It's probably an extremely minor point overall, though.

                        Comment

                        • buzzkill
                          Prophet
                          • May 2008
                          • 2939

                          #13
                          Shouldn't STR figure more prominently into the number of blows with a heavier weapon, and DEX do the same for a lighter one. It seems obvious that someone (DEX:10, STR:18/50) would get multiple blows would a (ya) bastard sword, but not with a dagger. Inverse also applies.
                          www.mediafire.com/buzzkill - Get your 32x32 tiles here. UT32 now compatible Ironband and Quickband 9/6/2012.
                          My banding life on Buzzkill's ladder.

                          Comment

                          • PowerDiver
                            Prophet
                            • Mar 2008
                            • 2820

                            #14
                            Originally posted by fizzix
                            I'm not wedded to this idea. However, I think *something* simpler, without arbitrary break points in DEX, and adaptable to a fractional system is important..
                            I think that once you have str 18, that should be enough for max blows with a dagger. I just don't see more str helping.

                            Here is a simple solution. I haven't thought it through, but it might be suggestive.

                            (1) blows < 4 * STR / WW
                            (2) blows < DEX / 6
                            (3) blows < 1 + min{3, CL/10} + 1 * (not pure spellcaster) + 1 * (is a warrior)


                            All calcs can be fractional or integers as you please.

                            It seems a bit high. Probably (3) needs not to be changed a bit, maybe replaced by 2 rules, but it is important to me that max blows should be achievable by CL 30 or so.

                            Comment

                            • fizzix
                              Prophet
                              • Aug 2009
                              • 3025

                              #15
                              Originally posted by PowerDiver

                              but it is important to me that max blows should be achievable by CL 30 or so.
                              why?

                              We're delayed here at work, so I made some contour plots of my original function after tweaking the variables a little more. It's a separate plot for each weapon weight. I can also make them for your function and Hariolor's function and post them here if you guys want. (I'd have to eliminate the clevel stuff though, no way to plot a function of three variables and make it legible)

                              Comment

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