Resistances: additive vs boolean

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Timo Pietilä
    Prophet
    • Apr 2007
    • 4096

    #16
    Originally posted by pampl
    I've been thinking about resistances and I'm not sure which of two options is better: the classic Angband system,[snip] or the approach used by OAngband/EyAngband/FAAngband and most (all?) Diablo-ish games: each resistance on your equipment adds to the net total resistance.
    I could vote each way. It really doesn't matter which one is "better" because they can't be "better" than anything else. It all depends of how game is balanced, and balancing is made after game rules have been set.

    Which of the rules is easier to balance? I don't know. Which one allows more variety? Also don't know, because game is a combination-game. Additive resistances might actually reduce variety by making choices less drastic.

    I think I vote for vanilla system.

    Comment

    • Tiburon Silverflame
      Swordsman
      • Feb 2010
      • 405

      #17
      I'm not sure the question's answerable without discussing implementation specifics.

      In a purely additive system, a huge issue is that the stacking can result in total immunity, especially for fairly common resists like the basic four. This suggests that most items need to give relatively low resistance percentages...but that probably makes inventory management almost impossibly complex, because we now *need* double or triple resists. Temporary resists could easily become temporary immunities.

      So, implementation issues become:

      --how many item slots have ego types that grant resists? Do we need to review the existing types? And how will artifacts play a role...especially things like the ring of power. Note that defender weapons may become *incredibly* powerful in this scenario.

      --what is the appropriate percentage for the types we keep?

      And I still see, at best, a very fragile system insofar as balance goes.

      Andrew's accumulative approach is a heckuva lot simpler, in that we never hit immunity, that the first gives what it gives now so there's not a total overhaul, and that there's diminishing returns, which I think is good here. It's inherently more robust. However, are we going to find ourselves yelling out for that great crystal drake to do more damage, because we've got double shards resistance? The simplicity of the V system allows for much simpler monster design.

      Comment

      • pampl
        RePosBand maintainer
        • Sep 2008
        • 225

        #18
        I think most additive systems sidestep the immunity issue by capping resistances then requiring a separate flag if you want to go above the cap. The Un approach appeals to me too.. though it doesn't reward specialization as much as the straight additive approach does, where the value of each point of resistance grows the more resistance you already have (until you reach the cap and they stop being worth anything). It would be kind of cool having players stockpile different sets of EQ to deal with different kinds of enemies, especially with a quest system that let you know in advance what you're going to be facing. Also the strategy involved in min-maxing resists in the straight additive system sounds more fun to me, though I've never gotten very far in Un so I'm not speaking from experience.

        Not entirely relevant, but I've been thinking about resistance reducers as well. I'm not sure which approach is best:
        A) the current Angband approach of having them be unnecessary because the player doesn't have a full set of resists and immunities until the very end, so there's no need for an 'arms race'. Also allowing absurd overkill for unresisted damage so that resists become extremely important (OK, not true for all resists, but let's pretend)
        B) having especially potent attacks cut through resistance, either by a straight subtraction or by dividing them.. e.g. hellfire is a 150% strength fire attack, so it subtracts 50% (or divides by 1.5) from the target's resistance. Both ways means the biggest proportional change is among people with the highest resistance, which seems wrong for some reason, though maybe it's how resistance reduction should work?
        C) just doing a straight subtraction/division of resistances across the board as the levels increase, a la Diablo 2
        D) relying on unresistable damage, e.g. hellfire is 50% fire damage and 50% mana damage, so fire resistance doesn't help much. This gets around high resistances but it does so in a way that makes them much less valuable, not more valuable
        E) temporarily deactivating individual sources of resistance so that redundant resists gain value, e.g. >The succubus tricks you into taking off your trousers of fire resistance! >The succubus casts Hellfire!
        I guess the problem is conflicting design goals: how can resistances stay valuable while you inflate them, without making them so essential that the only viable choice is the set of maximally resistant armor?

        Comment

        • andrewdoull
          Unangband maintainer
          • Apr 2007
          • 872

          #19
          Originally posted by Philip
          That is indeed an interesting idea, although I think that you meant that 1 level of resistance reduces damage by 1/2(still sensible), 2 levels by 2/3(not 1/3 which would punish you for multiple resistance) and so on, where damage is reduced by X/X+1 where X is number of resistances. Question: Are those attacks beefed up? This way they do less damage, but maybe you went the O way, where nothing much was done and noone actually cares.
          I've not really needed to beef up the attacks - if anything they are weaker. Don't forget Angband 2/3 damage resistance is the equivalent of having two resist foo items in Unangband, so the basic resistances are tougher to get to start with.

          Andrew
          The Roflwtfzomgbbq Quylthulg summons L33t Paladins -more-
          In UnAngband, the level dives you.
          ASCII Dreams: http://roguelikedeveloper.blogspot.com
          Unangband: http://unangband.blogspot.com

          Comment

          • Philip
            Knight
            • Jul 2009
            • 909

            #20
            Yes, I don't think anyone really understands the O system. In O, it would take about 8 or so resistance items to get IM_BASE, and the more you invest, the lower return you have. It also allows semiimunity items, which would add 80% resistance under normal circumstances. It does not work in the way that wearing an armor with rbase, a shield with rbase and a defender weapon give you immunity or something. That would give you maybe 70% resistance.

            Comment

            • the Invisible Stalker
              Adept
              • Jul 2009
              • 164

              #21
              Either system is playable, once you understand how it works. As coded, the O system is more transparent for new players than the V system, because the 'C' command shows you your resistance percentages. But that's more of a user interface question than a gameplay question. The O base resistance progression starts 0% -> 45% -> 75% -> 85%. After three resistances, it's really not worth the bother any more. There are also minor resistances, which seem to be worth half a resist. Depending on your class and the resistance, you might also have the progression -30% -> 25% -> 60%. I can't check how these continue without recalling to town. Not all higher resists in O are percentage based, only light, dark, confusion, sound, shard, nexus, nether, chaos, and disenchantment. The others are binary. Often the same equipment item will have fewer resists in O than in V, or minor resists instead of full, so holes in the higher resists are common even in the endgame, and you rarely get multiple high resists. But that's the way O is balanced, not a consequence of additive resists in general.

              Comment

              • dos350
                Knight
                • Sep 2010
                • 546

                #22
                as a MAJOR diablo 2 advocate, i voted additive, but i dont think it would work in vanilla angband, ee~ binary feels good , but it took me awhile to get used to..
                ~eek

                Reality hits you -more-

                S+++++++++++++++++++

                Comment

                • Philip
                  Knight
                  • Jul 2009
                  • 909

                  #23
                  Why should it not work? There are two perfectly good implementations, both mentioned in the thread in quite some detail.

                  Comment

                  • dos350
                    Knight
                    • Sep 2010
                    • 546

                    #24
                    please no, so wat? , eee
                    ~eek

                    Reality hits you -more-

                    S+++++++++++++++++++

                    Comment

                    • Philip
                      Knight
                      • Jul 2009
                      • 909

                      #25
                      What on earth is that post supposed to mean? Could you explain using more that 4 words?

                      Comment

                      • Timo Pietilä
                        Prophet
                        • Apr 2007
                        • 4096

                        #26
                        Originally posted by Philip
                        What on earth is that post supposed to mean? Could you explain using more that 4 words?
                        I don't think you will get anything comprehensible from eek. At most you get some yeek-talk. Apparently he is quite incapable of writing like a human being.

                        Comment

                        • half
                          Knight
                          • Jan 2009
                          • 910

                          #27
                          There are several different specifics that can be used for 'additive' resists. First, let's suppose that all resists are either present or not on an object or temporary source (like now) but that having multiple copies of a resist improves your resistance. There are a few obvious approaches:

                          Code:
                          (1):  66.7%, 88.9%, 96.3%, ...  (2/3, 8/9, 26/27, ...)
                          (2):  50.0%, 75.0%, 87.5%, ...  (1/2, 3/4, 7/8, ...)
                          (3):  50.0%, 66.7%, 75.0%, ...  (1/2, 2/3, 3/4, ...)
                          (1) is closest to the current system, and continually divides the damage by 3. This currently occurs with permanent + temporary resistance, and this would simply extend this to incorporate multiple permanent sources. (2) is similar, but halves the damage instead of dividing by 3. This is perhaps better balanced with current resistance distribution on items. (3) is weaker again, but quite elegant.

                          Alternatively, some systems have different (numerical) bonuses to resistance. For example an item might give +40% resistance to fire and another might give +20% resistance to fire. There are three natural ways for this to combine in an 'additive' way:

                          Code:
                          (4): add the numbers, if it is 100% or greater, you are immune
                          (5): add the numbers with a cut-off maximum resistance such as 90%
                          (6): 'co-multiplication'
                          (4) and (5) are fairly self-explanatory. (5) features in Diablo.

                          (6) is more tricky, but features in at least one variant (FA?). You take the complements of the resistances (the complement of X% is (100-X)%) and then multiply these and then take the complement of that. This is also the way that you 'add' probabilities to get the probability of (A or B) from the probability of A and the probability of B, and often comes up in mathematics (e.g. in De Morgan's laws).

                          For example, if you have +40% resistance from one source and +20% from another, the complements are +60% and +80%. Multiplying these gives +48%, and the complement of this is +52%, so you have +52% resistance.

                          Note that (6) is the equivalent to (1) and (2). For example, if you have two items with 50% resistance, it gives you 75% resistance, and if you have three it gives you 87.5% resistance. Two items with 66.7% resistance give you 88.9% resistance etc.

                          I think all six options are workable, but people might want to refer to this list when thinking about them as some of them have problems that others do not. For example (1) makes the game strictly easier, while the others do not.

                          Comment

                          • Derakon
                            Prophet
                            • Dec 2009
                            • 9022

                            #28
                            My general opinion is that important algorithms should be as transparent as possible while still achieving the desired effect. Thus I'd suggest simply that resists divide damage by (N + 1), where N is the number of sources of resistance (thus 1/2, 1/3, 1/4, 1/5, etc.). Simple, scalable, easy to understand, doesn't distinguish between permanent and temporary resists or between basic 4, poison, and the rest. Basic elements are made about 16% more dangerous (which if necessary could be compensated for by tweaking damage formulae and caps), high element resistance is regularized.

                            Comment

                            • Nick
                              Vanilla maintainer
                              • Apr 2007
                              • 9638

                              #29
                              Originally posted by half
                              (6) is more tricky, but features in at least one variant (FA?). You take the complements of the resistances (the complement of X% is (100-X)%) and then multiply these and then take the complement of that. This is also the way that you 'add' probabilities to get the probability of (A or B) from the probability of A and the probability of B, and often comes up in mathematics (e.g. in De Morgan's laws).

                              For example, if you have +40% resistance from one source and +20% from another, the complements are +60% and +80%. Multiplying these gives +48%, and the complement of this is +52%, so you have +52% resistance.
                              Yes, FA. I like to think of it (and it is coded) as reduction of damage - so in your example the first item reduces damage to 60%, and then the second item cuts off 20% of that, leaving damage at 48%.
                              One for the Dark Lord on his dark throne
                              In the Land of Mordor where the Shadows lie.

                              Comment

                              • pampl
                                RePosBand maintainer
                                • Sep 2008
                                • 225

                                #30
                                Originally posted by Derakon
                                My general opinion is that important algorithms should be as transparent as possible while still achieving the desired effect. Thus I'd suggest simply that resists divide damage by (N + 1), where N is the number of sources of resistance (thus 1/2, 1/3, 1/4, 1/5, etc.). Simple, scalable, easy to understand, doesn't distinguish between permanent and temporary resists or between basic 4, poison, and the rest. Basic elements are made about 16% more dangerous (which if necessary could be compensated for by tweaking damage formulae and caps), high element resistance is regularized.
                                If we want higher resistances to reduce damage by less than low resistances we could always generalize that as damage = x/(x+n) where x = 1 for low resists and maybe 2 or 3 for high ones.

                                edit: haven't thought about it much, but this might be a good system for resistance reduction as well
                                Last edited by pampl; February 12, 2011, 01:10.

                                Comment

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