Do regeneration health increase ticks synchronize by server timer ticks?


Ad Astra

 

Posted

A lot of actions are synchronized so that they can only occur at intervals decided by the minimum time unit between each server tick. This applies to activating powers, where we call it "Arcanatime", but what other things are tied to the ticks?

The time interval between regeneration health increase ticks is said to vary based on a formula such as this:

Time in seconds = 3/(Regen percentage * 0.25)

which can be shortened as

Time in seconds = 12/Regen percentage

For 100% regen (no buffs) that should mean 12 seconds between each health increase tick. At that level any potential difference based on server ticks would be negligible, and impossible to measure. What caused my question was that when I work on builds for Regeneration scrappers and Willpower tanks/scrappers, and some buffing characters like Empaths, it is possible to buff regeneration to rather extreme levels. Stacking Regeneration Aura and Adrenalin Boost on the same target, for example. According to Paragonwiki (http://paragonwiki.com/wiki/Limits#Health_Regeneration), there are hard caps for each archetype. Scrappers and stalkers get 3000%, brutes and tankers get 2500%, everyone else gets 2000%. An extremely good level to reach on your own buffs alone might be around 1200%, which would translate to one second between health increase ticks. At that point any difference from server ticks is still small, but might be noticeable.

However, if I play an Empath and buff a Willpower scrapper he can actually reach his hard cap at 3000%. The problem is that this does not match up with an even number of the most commonly seen figure for the duration of a server tick, 0.132 seconds.

2 ticks = 0.264 seconds ==> 4545.5% regen
3 ticks = 0.396 seconds ==> 3030.3% regen
4 ticks = 0.528 seconds ==> 2272.7% regen
5 ticks = 0.660 seconds ==> 1818.2% regen
6 ticks = 0.792 seconds ==> 1515.2% regen
7 ticks = 0.924 seconds ==> 1298.7% regen
8 ticks = 1.056 seconds ==> 1136.4% regen
9 ticks = 1.188 seconds ==> 1010.1% regen

So, back to my question. Two assumptions:

  1. That the length of a server tick is 0.132 seconds (Arcanaville said it was a "best guess" when it was introduced but it seems rather commonly adhered to)
  2. That regeneration health increase ticks can only happen on server ticks (it would be very difficult to program it some other way, but possible)
Combining those assumptions, we get a situation where the difference in hard regen caps between tankers and scrappers does not influence actual time difference between health increase ticks when you buff each of them to their cap (same for stalkers vs brutes). We also see that at the high end, only certain levels of buffage actually matter, and giving small increases in between those is irrelevant. If this is true it might influence both build choices and target selection by buffers. I have so far never seen it discussed though.

My question is whether my second assumption has been tested by anyone? I did not see any threads on it when I searched, but it was hard to think of the right keywords.


 

Posted

ever heard of analysis paralysis?
jeez just play the game!


 

Posted

Sheesh, a hard maths question.

I summon Arcanaville!

OP, you may want to pm Arcanaville, who is consider the queen of math here on the forum. If she doesn't have the direct answer, she can certainly check you process.


Altoholic - but a Blaster at Heart!

Originally Posted by SpyralPegacyon

"You gave us a world where we could fly. I can't thank you enough for that."

 

Posted

I'm quite sure regeneration ticks can only happen on server ticks, but I'm not sure if the server can actually calculate that the right amount of regen ticks is given over a certain amount of time. I'm thinking of a cycle like this: you get 10 ticks every 0.264 seconds and then one after 0.132 to get you the correct regeneration on average.

Quote:
Originally Posted by roodawg View Post
ever heard of analysis paralysis?
jeez just play the game!
You might want to accept the fact that some people actually like fiddling with numbers and are interested in them. I, for one, like maths and find in-depth knowledge of the game interesting.


- @DSorrow - alts on Union and Freedom mostly -
Currently playing as Castigation on Freedom

My Katana/Inv Guide

Anyone who doesn't take truth seriously in small matters cannot be trusted in large ones either. -Einstein

 

Posted

Good News Everyone!

This requires Farnsworthian Mathemagics! LOL

My brain asplode.


The Story of a Petless MM with a dream
Quote:
Originally Posted by Deus_Otiosus View Post
This entire post should receive some kind of award for being both hysterical and fantastic.
Well done.
I have a 50 in every AT, but Scrappers and Dominators are my favorites.

 

Posted

Quote:
Originally Posted by DSorrow View Post
I'm quite sure regeneration ticks can only happen on server ticks, but I'm not sure if the server can actually calculate that the right amount of regen ticks is given over a certain amount of time. I'm thinking of a cycle like this: you get 10 ticks every 0.264 seconds and then one after 0.132 to get you the correct regeneration on average.
Thanks for the reply, I think I see what you are getting at. A number of health increase ticks could occur at one interval, then a shorter or longer interval occasionally to even out the average amount of health over time. Very interesting, and I sure hope some algorithm like that exists in the game. Tricky to program it correctly though, and you would need to keep track of one extra counter per player.

The mathematics is not difficult, the tricky part is to test it in a reliable way. It would require the cooperation of at least two characters, who together can buff the regen of one of them to 2000%-3000% (to see the effects easier) and keep it consistent for long enough to run trials either against a known damage source or for the time to regen from 0 to full health (after a long drop or something). I can't test that by myself, and I wanted to hear if someone else had done such tests before I start looking for a way to run trials (it would be a lot easier for someone with two accounts).

Thanks Ad Astra for the tip about PM:ing Arcanaville, you are probably correct that if someone had done such tests she would at least know about it.

As for why doing things like these instead of "just playing the game"... Like I said, it helps with build plans. For example, one Empath I am designing could self buff to 1207% regen with Regeneration Aura slotted a certain way, but if everything from 1137% to 1298% gives the same end result anyway, I can do the slotting a lot cheaper (use lower level enhancements, ignore set bonuses etc). It also has implications for who I would cast Adrenalin Boost on, and whether I should bother slotting for maxed heal enhancements in Adrenalin Boost.


 

Posted

Quote:
Originally Posted by Fulmens View Post
Arcanaville. I summon thee, I summon thee, I summon thee.
* Poof *

Where am I? Where's the emergency? Castle nerfing Electric Armor? Someone thinks taunt should debuff your height? What?


Oh. This? Jeez, ok, but let me get my morning coffee first.









Ok. Let's see here. First of all, I think some people have misinterpreted what ArcanaTime says about server clocks. In the original analysis I described this in more detail. There's a combat clock which is about 0.125 seconds long. And there is an animation clock that is about 0.033 seconds long. The game seems to align on server clocks but anything that *roots* has to align with the animation clock because rooting animations always run for a whole number of animation frames. Thus, to fire off an attack, you have to wait until the last server combat clock tick ends, then start the power on the next combat tick, but the animation will actually start on the next animation tick. So the alignment takes place four animation clock ticks later, or 0.33 * 4 = 0.132 seconds. That's the first animation clock that happens after one combat clock of 0.125.

Its a *little* more complicated than that due to a slight shifting in alignment over time, but since internal lag tends to blur that almost to the point of being undetectable and it always averages out, I didn't bother to provide a formula for being more precise. Its not worth it when calculating attack chains.

However, things that just happen and don't involve rooting animations either align with the combat clock of 0.125s per tick, or the server quantum clock of about 0.033 seconds (30 ticks per second), not the 0.132 "Arcanatime" clock. That really isn't a clock, but rather a "beat" of two clocks.


I *did*, however, actually look at the issue of rapidly ticking things. Not regeneration specifically, but damage DoT ticks and other effects that tick very fast. They do not have to align with those server clocks. The game seems to work backwards: on the next combat tick, it goes back and figures out what events were supposed to happen and does them. If a DoT (or a regeneration tick) was supposed to tick twice since the last time they occured, they just tick twice.


And actually, we have a hint for how this probably works. My guess is that all timers, including DoT timers, regeneration timers, and recharge timers, are decremented by the 30/sec server clock. When they reach zero, stuff happens. For things like regeneration and fast DoT, their timers could decrement to zero twice before they are processed. My guess is that when those timers decrement to zero a counter is incremented and they wrap around like an odometer in reverse. The next time the server comes around to check on them, it reads the counter, does their thing that many times, and resets the counter. So if the regen counter decremented to zero once, you get one health tick. If it decremented to zero twice, the game pulses you with two ticks. In this way, even though the game has a relatively slow combat clock (8/sec) it can process correctly (albeit in a slightly delayed fashion) events that take place much faster than that or events not aligned perfectly to that clock.

How do we know this? Hamidon raids. Pre-I9 Hamidon raids offered great insight into how the game processes things. Under the severe lag conditions of a packed raid, the server slowed down. Everything, including recharge, began to run slower. This implies the server doesn't literally back-calculate *everything* because if it did, the server would get more *jumpy* but not slower. Actually getting slower implies that things in the game that should be ticking at one rate are actually ticking at a slower rate. And that can only happen if the thing doing the ticking slowed down. Which is exactly what would happen when the server was so overloaded with things to do it actually took more than a 30th of a second to process everything that was supposed to happen in that 30th of a second. So the 30/sec server quantum clock couldn't run 30 ticks per second. When it started running at 10 ticks per second, everything in the game universe slowed down to 1/3rd speed, including recharge and probably regeneration and recovery ticks (of course, in those raids who would notice those).

So, my best guess: combat ticks are back-calculated. The game figures out what should have happened in the last 0.125 seconds, and does them. Quantum ticks are not back-calculated: they do the same thing every time they tick, which is supposed to be 30 times per second. If the game cannot do so fast enough, it starts slowing down and everything that relies on that clock slows down with it.

Which implies that things like regeneration ticks might be forced to align with quantum clocks. But not necessarily if their counters are wrap-around counters.

Let me see what I can dig up on this. This might be very difficult to test precisely, but I may have some old data that could be mined to figure out whether regeneration ticks are forced to align with anything. My hunch is, when the server is working correctly, its not.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Quote:
Originally Posted by Arcanaville View Post
Ok. Let's see here. First of all, I think some people have misinterpreted what ArcanaTime says about server clocks. In the original analysis I described this in more detail. There's a combat clock which is about 0.125 seconds long. And there is an animation clock that is about 0.033 seconds long. The game seems to align on server clocks but anything that *roots* has to align with the animation clock because rooting animations always run for a whole number of animation frames. Thus, to fire off an attack, you have to wait until the last server combat clock tick ends, then start the power on the next combat tick, but the animation will actually start on the next animation tick. So the alignment takes place four animation clock ticks later, or 0.33 * 4 = 0.132 seconds. That's the first animation clock that happens after one combat clock of 0.125.

Its a *little* more complicated than that due to a slight shifting in alignment over time, but since internal lag tends to blur that almost to the point of being undetectable and it always averages out, I didn't bother to provide a formula for being more precise. Its not worth it when calculating attack chains.

However, things that just happen and don't involve rooting animations either align with the combat clock of 0.125s per tick, or the server quantum clock of about 0.033 seconds (30 ticks per second), not the 0.132 "Arcanatime" clock. That really isn't a clock, but rather a "beat" of two clocks.


I *did*, however, actually look at the issue of rapidly ticking things. Not regeneration specifically, but damage DoT ticks and other effects that tick very fast. They do not have to align with those server clocks. The game seems to work backwards: on the next combat tick, it goes back and figures out what events were supposed to happen and does them. If a DoT (or a regeneration tick) was supposed to tick twice since the last time they occured, they just tick twice.


And actually, we have a hint for how this probably works. My guess is that all timers, including DoT timers, regeneration timers, and recharge timers, are decremented by the 30/sec server clock. When they reach zero, stuff happens. For things like regeneration and fast DoT, their timers could decrement to zero twice before they are processed. My guess is that when those timers decrement to zero a counter is incremented and they wrap around like an odometer in reverse. The next time the server comes around to check on them, it reads the counter, does their thing that many times, and resets the counter. So if the regen counter decremented to zero once, you get one health tick. If it decremented to zero twice, the game pulses you with two ticks. In this way, even though the game has a relatively slow combat clock (8/sec) it can process correctly (albeit in a slightly delayed fashion) events that take place much faster than that or events not aligned perfectly to that clock.

How do we know this? Hamidon raids. Pre-I9 Hamidon raids offered great insight into how the game processes things. Under the severe lag conditions of a packed raid, the server slowed down. Everything, including recharge, began to run slower. This implies the server doesn't literally back-calculate *everything* because if it did, the server would get more *jumpy* but not slower. Actually getting slower implies that things in the game that should be ticking at one rate are actually ticking at a slower rate. And that can only happen if the thing doing the ticking slowed down. Which is exactly what would happen when the server was so overloaded with things to do it actually took more than a 30th of a second to process everything that was supposed to happen in that 30th of a second. So the 30/sec server quantum clock couldn't run 30 ticks per second. When it started running at 10 ticks per second, everything in the game universe slowed down to 1/3rd speed, including recharge and probably regeneration and recovery ticks (of course, in those raids who would notice those).

So, my best guess: combat ticks are back-calculated. The game figures out what should have happened in the last 0.125 seconds, and does them. Quantum ticks are not back-calculated: they do the same thing every time they tick, which is supposed to be 30 times per second. If the game cannot do so fast enough, it starts slowing down and everything that relies on that clock slows down with it.

Which implies that things like regeneration ticks might be forced to align with quantum clocks. But not necessarily if their counters are wrap-around counters.

Let me see what I can dig up on this. This might be very difficult to test precisely, but I may have some old data that could be mined to figure out whether regeneration ticks are forced to align with anything. My hunch is, when the server is working correctly, its not.
*Chugs his Cherry Wheat, rolls onto the floor into the fetal position, and begins sucking his thumb.


 

Posted

Quote:
Originally Posted by Arcanaville View Post
Where am I? Where's the emergency? Castle nerfing Electric Armor? Someone thinks taunt should debuff your height? What?
What is this madness about Electric Armor getting castle'd? don't scare me like that...


 

Posted

Thanks!

This was exactly the type of information I was looking for. It was my assumption about the server clock granularity that was incorrect.

If the granularity is that fine, regen will work as you would expect for all levels of buffing. It means enhancement slotting will always matter and there will not be any points where a buff is without value.


 

Posted

It worked and I didn't get quartered ! Excellent!

Quote:
Originally Posted by arcanaville
My guess is that all timers, including DoT timers, regeneration timers, and recharge timers, are decremented by the 30/sec server clock. When they reach zero, stuff happens. For things like regeneration and fast DoT, their timers could decrement to zero twice before they are processed. My guess is that when those timers decrement to zero a counter is incremented and they wrap around like an odometer in reverse. The next time the server comes around to check on them, it reads the counter, does their thing that many times, and resets the counter. So if the regen counter decremented to zero once, you get one health tick. If it decremented to zero twice, the game pulses you with two ticks. In this way, even though the game has a relatively slow combat clock (8/sec) it can process correctly (albeit in a slightly delayed fashion) events that take place much faster than that or events not aligned perfectly to that clock.
My guess would be a separate entry into the queue for each item every time the timer hits zero. This would be simpler code and would give correct results in the case of, for instance, a race between Regen Rate and Fast DoT. . . but in almost all cases, you'd get the same results either way. And my opinion on the right way of coding it does not necessarily align with the actual code.


Mini-guides: Force Field Defenders, Blasters, Market Self-Defense, Frankenslotting.

So you think you're a hero, huh.
@Boltcutter in game.

 

Posted

Hmmm

If thats right, then the absolute theoretical maximum regen would by 12/0.0033 (3636.35%)

The cap of 3000% for scrapper/stalker seems iin line with that (whether by design or by accident)



@Catwhoorg "Rule of Three - Finale" Arc# 1984
@Mr Falkland Islands"A Nation Goes Rogue" Arc# 2369 "Toasters and Pop Tarts" Arc#116617

 

Posted

Quote:
Originally Posted by ChaosAngelGeno View Post
*Chugs his Cherry Wheat, rolls onto the floor into the fetal position, and begins sucking his thumb.
Drinking Octoberfest right now....

Sam Adams = Love.


 

Posted

This thread makes my brain hurt.


 

Posted

Quote:
Originally Posted by Catwhoorg View Post
Hmmm

If thats right, then the absolute theoretical maximum regen would by 12/0.0033 (3636.35%)

The cap of 3000% for scrapper/stalker seems iin line with that (whether by design or by accident)
Erm.... I don't get it. It would be 12/0.033 I think. Plus Arcanaville said that during those 0.033 seconds, if Regen rate is too high, another "value" would be incremented that would "multiply" (or increment, as you wish) the value of health you would receive on the next tick (the 30/sec one). As I understood, server doesn't apply any limit on maximum regeneration rate.

Or maybe I'm totally wrong and Arcanville fried my brain.

Yeah, I'm gonna go with that... I think.


 

Posted

Eurgh, i'm gunna stick to just smashing stuff with footstomp

Arcana you are far far to clever


@Effy
Effy On Hot Sauce Fire/Cold Corr
Effy On Hot Chilli Fire/Dark Corr
Effy On Heat FM/SD Before FoTM
Effy Unleashed DP/EN Blaster 1st 50 @ Union

 

Posted

I found this thread to be an informative, good read I actually understood it!