**Mastery Loadouts**
Due to issues related to the release of Mastery Loadouts, the "free swap" period will be extended.
The new end date will be May 1st.
Options

How duration reduction affects damaging debuffs (not obvious)

If you're interested in how the game mechanics work in detail or like reading about game testing, read on. If you aren't, skip to the TL;DR at the very end for the punch line.

@BrianGrant recently posted a video where he tested the effects of Angela's new sig ability to reduce the duration of damaging debuffs. He was exploring the idea of what would happen if you reduced duration to a very tiny amount: could you get Willpower healing ticks without getting any damage ticks. Interestingly he discovered something unexpected: that when you reduce the duration of a damaging debuff to less than one "tick" the actual damage of that tick drops. For those interested in the test, or who just like learning about the inside ball of the game engine, I recommend watching the video here:

https://www.youtube.com/watch?v=uxLYh67GVAw

I watched this video very carefully and I was able to generalize his conclusions to determine, at least in the Angela tests, what's going on. Here's what I believe is actually happening.

So you'd think that if you reduce the duration of a damaging debuff you would reduce the number of ticks of damage you take. And this is true. But there's also another effect that occurs, and it occurs specifically on the last damage tick. In Brian's video Caltrops is dealing about 208 damage per tick and ticking over 6 seconds. Because damage over time debuffs tick every half second, the normal Caltrops debuff would deal 12 ticks of 208 damage, one tick every half second. In Brian's first test he takes Angela to sig 154 which means Angela reduces damage over time debuffs by 30.59% per buff. The interesting thing is to see Brian's first "failed" test where he triggers Caltrops while Angela has only two buffs. This would reduce Caltrops duration by 61.18%. This would take a 6s debuff down to 6 x 0.3882 = 2.3292s.~ 2.33s. 2.33s means a damage over time debuff should tick four times, and then there's 0.33s left. If the game really did apply debuffs every half second, that would be it: there's not enough time to trigger the next tick. But that's not what happens in Brian's test. If you watch very carefully, Angela takes four ticks of 208 damage and one last tick of 138 damage. Why 138?

The best explanation is that when the game has "left over time" it amortizes the last damage tick. It knows the player should take 0.33 seconds of damage, but the next tick is 0.5 seconds away. So it assumes the player should take a fraction of that last tick, in this case 0.33/0.5 = 0.66x the normal damage tick. And 208 x 0.66 = 137.28, which rounds to 137 on screen.

Let's see if this theory can predict the results of Brian's sig180 test. He takes Angela to sig 180, which means Angela now reduces damaging debuffs by 33.15% per buff, or 99.45% with three buffs. If the theory is right, then this should reduce the duration of Caltrops from 6s to 6 x 0.0055 = 0.033 seconds. If I do the math the same way I get 0.033/0.5 x 208 = 13.7 ~ 14. This is slightly lower than the visual result of the test which was a tick of 15 (actually the game ticked 15 for one debuff and 16 for another this is probably game engine clock quantum aliasing). If instead of 0.066 x 208 I round to 0.07 x 208 I get 14.56 which would round off to 15, a better agreement with the visual result.

It seems that in some cases the game rounds numbers to the nearest 0.01; doing that sort of round off at the right place generated results that agreed with Brian's test for sig 154 and again for sig 180. This is not the only instance in which this seems to have been the case in testing the game.

So it seems based on this test that the game engine doesn't just blindly tick damage over time at half second intervals. It does that so long as the duration of the debuff is a whole multiple of 0.5 seconds. If it is not, the game ticks off as many whole ticks of 0.5 seconds as it can, and then whatever left over time is remaining the game determines what portion of half a second that is, and ticks one last tick of damage that is a percentage of the normal tick.

For those that are confused by the math, here's a simple example to illustrate what's going on. Suppose you have a damage debuff that lasts 2 seconds and deals 400 damage. It will tick 4 times, every half second for 100 damage. If you reduce that duration by 50% somehow, it will tick for one second so you'd get two ticks, all still 100 damage. But let's say that you manage to reduce the duration down to 1.25 seconds instead. You'd get 2 ticks during that first second, and then since there's a quarter of a second to go, and that is half of a normal "tick" of half a second, your last damage tick will be cut in half. You'd get three ticks: two ticks of 100 damage and one tick of 50 damage.

TL;DR: If you reduce the duration of a damaging debuff you get less damage ticks, and you also can get a smaller last damage tick. If you reduce a damaging debuff to less than 0.5 seconds you'll only get one damage tick, and it will be smaller than normal based on how short it is. The only way to take zero damage is to reduce the duration to zero, but you can reduce the damage of a damage over time debuff to less than one full tick of damage.

Credit to Brian Grant for taking the time to conduct this test and sharing the full video of the test failures, which produced the data that allowed me to figure this out.

Note: one last thing. I did some of my own testing here, and it seems if you reduce the duration of a damage over time debuff low enough, you don't get Willpower healing ticks. You might get a very tiny damage tick, but it seems likely a DoT debuff must last a certain minimum amount of time to trigger Willpower. Maybe at least one animation frame (1/30 seconds).

Comments

  • Options
    The_Sentry06The_Sentry06 Posts: 7,781 ★★★★★
    Interesting. I always though that was how the game calculated damage over time effects when I first started playing but forgot about it completely once I got used to this '2 ticks per second' system.
  • Options
    Colonaut123Colonaut123 Posts: 3,091 ★★★★★
    Very interesting indeed. Could the reverse be true also?
  • Options
    DNA3000DNA3000 Posts: 18,687 Guardian

    Very interesting indeed. Could the reverse be true also?

    You mean, would effects that increase the duration of damage over time effects do the same thing? I suspect so, although I cannot think of a situation off the top of my head where we would be able to control that for testing purposes to the same degree as Angela does by virtue of her sig ability changing very smoothly to almost any number. If you can think of one, let me know and I will try to test it if I can.
  • Options

    Very interesting indeed. Could the reverse be true also?

    Wondering what you mean by the “reverse” ?
    Going from whole ticks to a fractional tick, would the reverse of that mean that somehow there exists an even “whole'er” type of number (going from a whole number to a whole'er number) ?

    If your asking that instead of going from 5 sec to 4.7 sec. what would happen if you went from 5 sec to 5.2 sec.
    Well that would be no different. Instead of going down from 10 ticks to 9 full ticks plus a 40% tick. It would instead go to 10 full ticks plus a 40% tick.
  • Options
    DNA3000DNA3000 Posts: 18,687 Guardian

    Very interesting indeed. Could the reverse be true also?

    Wondering what you mean by the “reverse” ?
    Going from whole ticks to a fractional tick, would the reverse of that mean that somehow there exists an even “whole'er” type of number (going from a whole number to a whole'er number) ?

    If your asking that instead of going from 5 sec to 4.7 sec. what would happen if you went from 5 sec to 5.2 sec.
    Well that would be no different. Instead of going down from 10 ticks to 9 full ticks plus a 40% tick. It would instead go to 10 full ticks plus a 40% tick.
    That's the logical assumption, but there have been cases where the engine programmers made an ad hoc algorithm going one way and not the other, like they did (several different times) for positive verses negative armor. So while it is likely this is true, we wouldn't actually be certain without testing a fractional duration increase (one that increases duration by a non-integer number of half second ticks).
  • Options
    LibertyPrimeV1LibertyPrimeV1 Posts: 4,179 ★★★★★
    Hmm not related to the Test here but it made me think of something, Magneto's Sharpnel Bleeds have a "Expiration Burst"...
    If they ever put a High Sig Angela on a Bleed Vulnerability Node with a lot of Buffs, you could still deal Mad Damage by using Magneto and utilizing his Burst Bleed Damage. Very specific set of circumstances but just found that interesting.
  • Options
    LibertyPrimeV1LibertyPrimeV1 Posts: 4,179 ★★★★★
    DNA3000 said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    I had a hard enough time staying awake during Data Structures and Algorithms. Amortized Analysis is probably interesting in practice, but honestly I've never even felt tempted to apply it to anything.
    Kill_Grey said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    Tf is that?
    Amortized analysis is a set of techniques within the study of computational efficiency. It is a bit complex and dry, but the best way I can explain it is to ask if you have a recipe for beef stew, what's the worst case scenario for how long it would take to execute that recipe. You could look at every single step of the recipe and try to figure out what the worst case scenario is for each step, then add them up. Let's say the first step is to brown beef. How long does that take in the worst case scenario? The worst case scenario might be that you don't even have beef and have to go to the store to get it. So that one step's worst case scenario might be an hour. The second step might be to dice and add onions. But that step's worst case scenario might also be that you don't have onions, so that step's worst case is also one hour.

    Amortized analysis (and this is super over simplified) would say that the naive estimate for those two steps is two hours, but the proper estimate is to realize if you go to the store to buy beef, you're also going to buy onions while you're there. So those two steps cannot take two hours in the worst case scenario, because once you have to go to the store to buy beef, you've "paid" the time cost of going to the store for any other ingredient you might be missing. The first missing ingredient costs an hour. The second costs an additional two minutes to find it.

    Needless to say, mastering this subject will make you the life of the party.
    I mean, in the Worse Case Scenario is you would get back home after buying the Beef then realize you forgot the Onions and had to go back to the store... 😂😝 Jkjk
  • Options
    DNA3000DNA3000 Posts: 18,687 Guardian
    HI_guys said:

    DNA3000 said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    I had a hard enough time staying awake during Data Structures and Algorithms. Amortized Analysis is probably interesting in practice, but honestly I've never even felt tempted to apply it to anything.
    Kill_Grey said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    Tf is that?
    Amortized analysis is a set of techniques within the study of computational efficiency. It is a bit complex and dry, but the best way I can explain it is to ask if you have a recipe for beef stew, what's the worst case scenario for how long it would take to execute that recipe. You could look at every single step of the recipe and try to figure out what the worst case scenario is for each step, then add them up. Let's say the first step is to brown beef. How long does that take in the worst case scenario? The worst case scenario might be that you don't even have beef and have to go to the store to get it. So that one step's worst case scenario might be an hour. The second step might be to dice and add onions. But that step's worst case scenario might also be that you don't have onions, so that step's worst case is also one hour.

    Amortized analysis (and this is super over simplified) would say that the naive estimate for those two steps is two hours, but the proper estimate is to realize if you go to the store to buy beef, you're also going to buy onions while you're there. So those two steps cannot take two hours in the worst case scenario, because once you have to go to the store to buy beef, you've "paid" the time cost of going to the store for any other ingredient you might be missing. The first missing ingredient costs an hour. The second costs an additional two minutes to find it.

    Needless to say, mastering this subject will make you the life of the party.
    Soooo is it he same as using the slowest step in a chemical reaction to determine the rate of reaction?

    I'm assuming you have done chem since here it's necessary before being able to do computer
    That's more of a bottleneck analysis. The presumption is the products of the slowest step are necessary for successive steps, but the steps are all taking place in parallel (assuming we're talking about chemical reactions all taking place within a single system) so whichever step is the slowest governs the total.

    Amortized analysis generally looks at serialized algorithms, as it tries to find the (worst case) average time to complete a sequence of operations. So it has to account for the time it takes for every operation to happen separately.
  • Options
    LibertyPrimeV1LibertyPrimeV1 Posts: 4,179 ★★★★★
    DNA3000 said:

    DNA3000 said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    I had a hard enough time staying awake during Data Structures and Algorithms. Amortized Analysis is probably interesting in practice, but honestly I've never even felt tempted to apply it to anything.
    Kill_Grey said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    Tf is that?
    Amortized analysis is a set of techniques within the study of computational efficiency. It is a bit complex and dry, but the best way I can explain it is to ask if you have a recipe for beef stew, what's the worst case scenario for how long it would take to execute that recipe. You could look at every single step of the recipe and try to figure out what the worst case scenario is for each step, then add them up. Let's say the first step is to brown beef. How long does that take in the worst case scenario? The worst case scenario might be that you don't even have beef and have to go to the store to get it. So that one step's worst case scenario might be an hour. The second step might be to dice and add onions. But that step's worst case scenario might also be that you don't have onions, so that step's worst case is also one hour.

    Amortized analysis (and this is super over simplified) would say that the naive estimate for those two steps is two hours, but the proper estimate is to realize if you go to the store to buy beef, you're also going to buy onions while you're there. So those two steps cannot take two hours in the worst case scenario, because once you have to go to the store to buy beef, you've "paid" the time cost of going to the store for any other ingredient you might be missing. The first missing ingredient costs an hour. The second costs an additional two minutes to find it.

    Needless to say, mastering this subject will make you the life of the party.
    I mean, in the Worse Case Scenario is you would get back home after buying the Beef then realize you forgot the Onions and had to go back to the store... 😂😝 Jkjk
    And then you burn the beef and have to go back to the store and then you decide to give up and just make Hamburger Helper. And then you realize when you get home you forgot to get beef again and DoorDash your dinner. And then the DoorDash driver's GPS goes on the fritz and takes your food to a completely different neighborhood.

    Amortized analysis would be more entertaining if this was the homework.
    Then the Food finally reaches you and it turns out the Cook had Covid...
  • Options
    DNA3000DNA3000 Posts: 18,687 Guardian
    HI_guys said:

    DNA3000 said:

    HI_guys said:

    DNA3000 said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    I had a hard enough time staying awake during Data Structures and Algorithms. Amortized Analysis is probably interesting in practice, but honestly I've never even felt tempted to apply it to anything.
    Kill_Grey said:

    HI_guys said:

    I knew I should have paid attention in amortized analysis class

    Tf is that?
    Amortized analysis is a set of techniques within the study of computational efficiency. It is a bit complex and dry, but the best way I can explain it is to ask if you have a recipe for beef stew, what's the worst case scenario for how long it would take to execute that recipe. You could look at every single step of the recipe and try to figure out what the worst case scenario is for each step, then add them up. Let's say the first step is to brown beef. How long does that take in the worst case scenario? The worst case scenario might be that you don't even have beef and have to go to the store to get it. So that one step's worst case scenario might be an hour. The second step might be to dice and add onions. But that step's worst case scenario might also be that you don't have onions, so that step's worst case is also one hour.

    Amortized analysis (and this is super over simplified) would say that the naive estimate for those two steps is two hours, but the proper estimate is to realize if you go to the store to buy beef, you're also going to buy onions while you're there. So those two steps cannot take two hours in the worst case scenario, because once you have to go to the store to buy beef, you've "paid" the time cost of going to the store for any other ingredient you might be missing. The first missing ingredient costs an hour. The second costs an additional two minutes to find it.

    Needless to say, mastering this subject will make you the life of the party.
    Soooo is it he same as using the slowest step in a chemical reaction to determine the rate of reaction?

    I'm assuming you have done chem since here it's necessary before being able to do computer
    That's more of a bottleneck analysis. The presumption is the products of the slowest step are necessary for successive steps, but the steps are all taking place in parallel (assuming we're talking about chemical reactions all taking place within a single system) so whichever step is the slowest governs the total.

    Amortized analysis generally looks at serialized algorithms, as it tries to find the (worst case) average time to complete a sequence of operations. So it has to account for the time it takes for every operation to happen separately.
    My memory is hazy but what I learned is that even though reaction steps are done successively the slowest step is taken as the rate determining step. And while comparing two reactions only the RDS of the two reactions are considered

    @Sarvanga1_ am I right?
    To be clear, in a chemical sequence each reaction happens successively in terms of following the reaction to the final product, but each individual reaction happens concurrently as reactants are available.

    In other words, if A+B yields C, and then C+D yields E, if the C+D reaction is way slower than the A+B reaction then the presumption is all the A and B will react and generate a pile of C, but that C will react slower with D to form E so the C+D reaction is the bottleneck and however long that takes is likely to dominate the overall speed of the reaction. Conversely if A+B is way slower, then C+D will get starved of C and have to wait on the A+B reaction, and then it will be the A+B reaction that basically dictates the overall rate of the production of E.

    There are cloud computing systems that work this way and have to be analyzed similarly. Amortized analysis can adapt to this, but I think mainly by breaking things down into separate non-parallel components. Although I'm not up on my state of the art computational efficiency analysis. I spend too much time playing a mobile video game.
  • Options
    Colonaut123Colonaut123 Posts: 3,091 ★★★★★
    edited March 2021
    Double.
  • Options
    PulyamanPulyaman Posts: 2,365 ★★★★★
    @DNA3000 I have watched both of the videos BG put up in his channel. Angela is supposed to convert a resilience charge into a regen buff. But in both videos, she gained regen buff even when she did not have a resilience charge. Watch exactly time 3:58, she gains regen out of nowhere.
    In the sinister video he posted, she went from 1% to 100% over the fight. Again, she was gaining regen even after hitting 100% which she is not supposed to do because she has no resilience charge. I cannot think of how she does is doing this. Any insight?
  • Options
    PulyamanPulyaman Posts: 2,365 ★★★★★
    HI_guys said:

    Pulyaman said:

    @DNA3000 I have watched both of the videos BG put up in his channel. Angela is supposed to convert a resilience charge into a regen buff. But in both videos, she gained regen buff even when she did not have a resilience charge. Watch exactly time 3:58, she gains regen out of nowhere.
    In the sinister video he posted, she went from 1% to 100% over the fight. Again, she was gaining regen even after hitting 100% which she is not supposed to do because she has no resilience charge. I cannot think of how she does is doing this. Any insight?

    Resilience converts directly to regen as long as no regen is active. Just like hype with his charges.
    HI_guys said:

    Pulyaman said:

    @DNA3000 I have watched both of the videos BG put up in his channel. Angela is supposed to convert a resilience charge into a regen buff. But in both videos, she gained regen buff even when she did not have a resilience charge. Watch exactly time 3:58, she gains regen out of nowhere.
    In the sinister video he posted, she went from 1% to 100% over the fight. Again, she was gaining regen even after hitting 100% which she is not supposed to do because she has no resilience charge. I cannot think of how she does is doing this. Any insight?

    Resilience converts directly to regen as long as no regen is active. Just like hype with his charges.
    But why would she get resilience at 100% health?
  • Options
    PulyamanPulyaman Posts: 2,365 ★★★★★
    edited March 2021
    HI_guys said:

    Pulyaman said:

    HI_guys said:

    Pulyaman said:

    @DNA3000 I have watched both of the videos BG put up in his channel. Angela is supposed to convert a resilience charge into a regen buff. But in both videos, she gained regen buff even when she did not have a resilience charge. Watch exactly time 3:58, she gains regen out of nowhere.
    In the sinister video he posted, she went from 1% to 100% over the fight. Again, she was gaining regen even after hitting 100% which she is not supposed to do because she has no resilience charge. I cannot think of how she does is doing this. Any insight?

    Resilience converts directly to regen as long as no regen is active. Just like hype with his charges.
    HI_guys said:

    Pulyaman said:

    @DNA3000 I have watched both of the videos BG put up in his channel. Angela is supposed to convert a resilience charge into a regen buff. But in both videos, she gained regen buff even when she did not have a resilience charge. Watch exactly time 3:58, she gains regen out of nowhere.
    In the sinister video he posted, she went from 1% to 100% over the fight. Again, she was gaining regen even after hitting 100% which she is not supposed to do because she has no resilience charge. I cannot think of how she does is doing this. Any insight?

    Resilience converts directly to regen as long as no regen is active. Just like hype with his charges.
    But why would she get resilience at 100% health?
    Because she gets it any time she loses 10% health. If she loses 5%, heals back to full through some other means, and then again loses 5%, she has lost a net 10% and will gain a resilience that immediately converts to regen. And since she had suicides she is constantly losing health. When the list amount adds up to 10% she gains regen
    Did you see the video? Because if you see she does lose 10%health from the start of the fight. Although I am not sure that's how her regen works.
  • Options
    PulyamanPulyaman Posts: 2,365 ★★★★★
    Pulyaman said:

    HI_guys said:

    Pulyaman said:

    HI_guys said:

    Pulyaman said:

    @DNA3000 I have watched both of the videos BG put up in his channel. Angela is supposed to convert a resilience charge into a regen buff. But in both videos, she gained regen buff even when she did not have a resilience charge. Watch exactly time 3:58, she gains regen out of nowhere.
    In the sinister video he posted, she went from 1% to 100% over the fight. Again, she was gaining regen even after hitting 100% which she is not supposed to do because she has no resilience charge. I cannot think of how she does is doing this. Any insight?

    Resilience converts directly to regen as long as no regen is active. Just like hype with his charges.
    HI_guys said:

    Pulyaman said:

    @DNA3000 I have watched both of the videos BG put up in his channel. Angela is supposed to convert a resilience charge into a regen buff. But in both videos, she gained regen buff even when she did not have a resilience charge. Watch exactly time 3:58, she gains regen out of nowhere.
    In the sinister video he posted, she went from 1% to 100% over the fight. Again, she was gaining regen even after hitting 100% which she is not supposed to do because she has no resilience charge. I cannot think of how she does is doing this. Any insight?

    Resilience converts directly to regen as long as no regen is active. Just like hype with his charges.
    But why would she get resilience at 100% health?
    Because she gets it any time she loses 10% health. If she loses 5%, heals back to full through some other means, and then again loses 5%, she has lost a net 10% and will gain a resilience that immediately converts to regen. And since she had suicides she is constantly losing health. When the list amount adds up to 10% she gains regen
    Did you see the video? Because if you see she does lose 10%health from the start of the fight. Although I am not sure that's how her regen works.
    *she does not lost health.
  • Options
    Silver_GooseSilver_Goose Posts: 488 ★★★
    This is literally the definition of "Insightful".
Sign In or Register to comment.