Jump to content

How to reduce ability delay?


rainbowunicorns

Recommended Posts

Issue

My abilities take longer to cast is greater than their advertised casting time. This results in less abilities/actions per minute, which is negatively impacting my DPS.

 

 

Question

Is there a way to minimize or eliminate the extent to which abilities take longer to cast than the advertised time? I would appreciate not only insight into a solution, but also the cause.

 

 

Story

I found that my DPS against a dummy was far below the target value per the optimal stats and DPS rankings by Goblin_Lackey (I have stats approximating the 220 recommended). Having done my best to focus on getting my rotation “right”, the gap was still large. I read through the assumptions in that post to see if I was missing something crucial, but I did not appear to be.

 

Feeling like my rotation was probably not “wrong enough” to cause the gap I was seeing, I decided to look at my combat log in StarParse, to see if my issue was that I was queuing up abilities that were still on cooldown when the current cast had finished (i.e.: ability is on cooldown party-way through the current cast, but it “looks like” it will be ready by the end of the cast), since that would be an obvious place for failure to occur. When I brought my ability usage into Excel and compared the time between ability usages, I noticed that the gap was almost always greater than the ability cast time (which would indicate that there is some pause between when a cast completes and when I activate the next).

 

Since my problem seemed pretty easy to solve, I played with a dummy focusing only on getting my casts to have no possible gaps, mostly ignoring rotation. Looking at the gaps in ability usage after, I still found that the gap was greater than the cast time of the abilities. I tried setting my graphics to low, disabling flying text, disabling sound, altering the Ability Action Queue Window, and even connecting via VPN through a server in Los Angeles; nothing resolved the issue.

 

Next, I tried using automated keyboard input for a single ability, to be activated every 250ms, which was both less than half my Ability Action Queue Window, so that the queue should be guaranteed to always have an ability in it. Still, the gap persisted.

 

I am out of ideas on what I can do to mitigate the gap, and am hoping someone knows of a solution.

 

 

Data/testing

I play a Telekinetics Sorcerer, that's what testing has been done on.

 

All testing was done using zero (0) alacrity rating, with an “Ability Action Queue Window” of 1.0 seconds, and by sending the instruction to cast the ability every 0.25 seconds. The test was halted once Force was almost depleted, so that not having sufficient Force would not end up skewing results.

 

I tested with each of “Weaken Mind”, “Disturbance”, and “Telekinetic Burst” (the latter twice). The testing of “Weaken Mind”, “Disturbance”, and one of the “Telekinetic Burst” tests was done while naked. For the naked “Telekinetic Burst” test, I first built up five (5) stacks of Telekinetic Focal Point (5% alacrity), so that I could get the largest possible number of casts while also having a consistent amount of alacrity (5%).

 

I tested “Telekinetic Burst” a second time with the 4-piece set bonus (cost reduction), but still no alacrity. In this latter test, since I had more Force to play with, I built up the Telekinetic Focal Point stacks during the combat, and then cast a “Telekinetic Wave” to indicate the point in the combat log at which five (5) stacks of Telekinetic Focal Point (5% alacrity) was achieved. In the spreadsheet, only the ability casts after that point are included, so that alacrity is consistent, but the building of stacks is in the Parsley upload linked on that sheet.

 

Google docs spreadsheet

 

 

Proactively responding to some questions

Q: The ability use is not written to the log at the exact instant it is cast, and the time it takes to write to the log can vary, does that not make ability cast times in the log useless?

A: Over a large number of ability casts, the average time between them should be consistent with the actual time to activate them. If, for example, an ability takes 0.1 additional seconds to write to the log, then all ability casts will be offset by 0.1 seconds, and therefore the time between casts in the log will be equal to the time between casts in the game. If an ability takes a variable amount of time to be written to the log, but we all abilities are in the log, then any “extra” time to write one ability (which would increase the gap with the preceding log event) will be precisely made up for by the reduced gap with the next log event.

 

Q: You did not provide a measure of your ping, does that not contribute?

A: It might, but it should not. If the “Ability Action Queue Window” is, in fact, a queue of size one on the server, then my ping is irrelevant so long as the next ability gets into that queue before the ability currently being cast finishes; that is the entire point of an action queue. If it is still relevant, my ping is generally in the 30-60ms range, though I have seen it spike to 165ms before.

Link to comment
Share on other sites

There is a nice little stat given by Starparse and on Bant spreadsheets... APM. Actions Per Minute. Or how many buttons you push every min. Considering TK has no channels to screw this up, the APM Bant gives (49.7) should be almost exactly your own.. So you should have 48.5-49 APM to be close to perfection and 45+ to be excellent. Note that APM for TK will vary because of how many time you reduce Mental Alacrity CD.

 

After checking everything.. Your APM is 39.63. The APM your tests with TKBurst should give is 42. Try it out again.. And if you can't seem to ever get close to 41-41.5 buy spamming ONLY TKBurst, I don't think we can help you at all.

Edited by Ryuku-sama
Link to comment
Share on other sites

There is a nice little stat given by Starparse and on Bant spreadsheets... APM. Actions Per Minute. Or how many buttons you push every min. Considering TK has no channels to screw this up, the APM Bant gives (49.7) should be almost exactly your own.. So you should have 48.5-49 APM to be close to perfection and 45+ to be excellent. Note that APM for TK will vary because of how many time you reduce Mental Alacrity CD.

 

If your APM is low (likely), you are doing your rotation too slowly. And if spamming GCD abilities without any alacrity gives you anyless than 39-40 APM, you have a problem no one here can fix :(

 

Yes, I am aware of APM. This post discusses how abilities are taking longer for me to cast (based on the logs) than the advertised time to cast them. That each ability takes longer to cast than it should necessarily pushes APM down. As I noted in the post there exists a *possibility* that I had the computer press the ability key ever 0.25 seconds to eliminate human error and deal with the occasional lost packet.

 

While it is possible that there is no solution, I would like to think that I am not the only one to have experienced this problem, and that perhaps someone has experienced it and has a solution (or can at least explain it).

Link to comment
Share on other sites

Your methodology is excellent. I wish more people asked questions this way…

 

Unfortunately, I don't have a good answer for you. Your log looks like that of a player who isn't correctly using the ability action queue, but having a queue of 1 second and automatically pressing Burst once every 250 milliseconds basically rules that out. You're absolutely right that the queue should have the next item in it.

 

The only thing I can think of is that there are some timing pathologies that we're missing. Half the ability action queue is indeed the break point for guaranteeing entry. You're at 1/4th, but 250 milliseconds isn't actually that much time. Your ping is around 60ms, so that's 190 milliseconds left to account for. Add in input lag caused by the game engine (let's say another 20 ms, which is actually less than I think it is), and server sync lag (could be as much as 100% of your ping, or another 60 ms) and we can account for a fraction of that. We're still left with 110ms of unaccounted time, so I'm not sure if that's accurate.

 

When I play, I do tend to spam my ability repeatedly (far faster than 1/250ms) when I am in an action queue window. You could try that (set the automated keyboard frequency to something like 1/40ms; my music background suggests that I'm spamming my abilities right around that rate when I parse). I'm not sure if it will fix the issue though.

 

It's possible that this is an underlying bug with the game engine that you've surfaced

Link to comment
Share on other sites

The only thing I can think of is that there are some timing pathologies that we're missing. Half the ability action queue is indeed the break point for guaranteeing entry. You're at 1/4th, but 250 milliseconds isn't actually that much time. Your ping is around 60ms, so that's 190 milliseconds left to account for. Add in input lag caused by the game engine (let's say another 20 ms, which is actually less than I think it is), and server sync lag (could be as much as 100% of your ping, or another 60 ms) and we can account for a fraction of that. We're still left with 110ms of unaccounted time, so I'm not sure if that's accurate.

 

When I play, I do tend to spam my ability repeatedly (far faster than 1/250ms) when I am in an action queue window. You could try that (set the automated keyboard frequency to something like 1/40ms; my music background suggests that I'm spamming my abilities right around that rate when I parse). I'm not sure if it will fix the issue though.

 

It's possible that this is an underlying bug with the game engine that you've surfaced

 

A very reasonable suggestion, and thorough explanation, thank you. I had not considered that 250ms would be insufficiently frequent when a considering all other factors that add delay.

 

I have added another sheet to the spreadsheet linked in the original post, re-doing the test and procedure from the second "Telekinetic Burst" test (4-piece, 0 alacrity, etc.), but this time sending the instruction to cast the ability every 0.04 seconds (40 milliseconds). Unfortunately, the results appear to be approximately the same as sending the instruction every 0.25 seconds. After repeating several times, I could not get as large a continuous dataset as with the last, I guess I was unlucky with procs (or lucky last time), but 400 casts is probably still a large enough dataset to see a trend.

 

 

Did some quick tests to see if it's an isolated case. I got similar results though. Average time of 1.589 s for Disturbance and 2.09 s for Telekinetic Throw as Balance :rak_02:

They say misery loves company, and I am glad that I am not alone in having this issue. Also, thank you for taking the time to do some testing, knowing I am not some sort of special snowflake case is reassuring.

Link to comment
Share on other sites

Hi! As far as gear goes (because it wasn't explicitly stated in OP), do you use ops gear, ie. set bonus and left side pieces called mk-1? The comms gear stuff is A TRAP if you ask Admiral Ackbar and myself because it is very endurance heavy and power starved and will yield way lower results!

 

As far as ability delay goes, once I too tried the ability queing thingy because it's fun to try new stuff. It didn't at all work as well as the traditional hammer-the-keybind-like-you'd-want-to-hurt-it-when-the-cast-or-GCD-is-nearly-over method. Have you tried using said traditional method to compare? For me the outcome was substantially different using aforementioned traditional method.

 

Regards,

Link to comment
Share on other sites

Do you have other classes to test with? This really sounds like a bug, and I'm curious if it's universal.

 

I have sub-65 Warrior, Inquisitor, and Trooper, which I expect means they don't have the talents/features unlocked that make long-term spamming of some (actual) ability feasible.

 

After I get home from work, I will try with the basic/free attack on my Trooper and post an update.

Link to comment
Share on other sites

I have sub-65 Warrior, Inquisitor, and Trooper, which I expect means they don't have the talents/features unlocked that make long-term spamming of some (actual) ability feasible.

 

After I get home from work, I will try with the basic/free attack on my Trooper and post an update.

 

I think the inquisitor in particular would be very interesting, but the Trooper should also be revealing. I can't decide which scenario I like less: if this is a bug with the whole game, or just with one class.

Link to comment
Share on other sites

I knew going in that the APM that I had on the Optimal stats page was going to be higher than possible. Mainly because I decided to deliberately ignore the any possibility of any delays due to input lag or time rounding. Because it affects everything equally and made my life easier, I kept it that way.

But I love it when I find out more information about things I didn't know about.

 

One thing you might want to think about including in the testing procedure is a time keeping ability. What I mean is that it would be interesting if the the ability action queue was compared against an in game ability that had a multiple parts that had a tick rate that was equivalent to the GCD. For example, using Weaken Mind once every ~18s instead of Disturbance because the Weaken Mind ticks should occur with the same spacing between them as two Disturbances.

 

 

I have also been thinking about something similar to this in the back of my mind for a few weeks now as well.

Mainly due to the question:

 

Where does SWTOR round when it comes to Alacrity (or for things in general)?

 

I have done some thought experiments to try and determine the best way to generate a dataset that would be useful in determining the answer to this problem.

In the spoiler tag is the experiment procedure that I am thinking about using to test this:

(Note: I haven't run this myself due to both time commitments and lack of motivation to sit around and test)

(Note 2: the parts in italics are the explanations and logic behind each of the parts)

 

 

 

Experimental Setup:

Corruption Sorcerer (Seer Sage works as well) Level 65

This class does not need accuracy to function and has several abilities that have different time rates on them

 

Gear:

  • No Relics
    This will remove some of the excess data and rng from the Combat Log
  • No Alacrity Augments
    to reduce credit cost of the trial and to reduce the number of Alacrity to 10
  • No Set Bonus
    The two piece set adds RNG to the combat log
  • Have available, one Alacrity for each enhancement slot (including ear and implant)
    These are the number of experimental trials

 

Target is Operations Dummy on Ship.

A convenient target that resets automatically and is in a low population instance. The resetting also helps choose a new start time so that the starting point of each trial is sufficiently random

 

Experimental Procedure:

1) Record the Trial Number

This is done for clarity

 

2) Record Current Alacrity Rateing

This is the current Alacrity Level being tested

 

3) Record the Alacrity % on the Character Sheet

This is the comparison number to check against for major discrepancies

 

4) Targeting the Operations Dummy, use the following abilities in the order shown:

 

Ability Usage Oder

  • Polarity Shift (if available)
    Using Polarity Shift allows for the testing of Higher Alacrity values (+20%), but it is not available 100% of the time due to trial lengths. It is technically part of a different alacrity trial run
  • Affliction
    This is being used as a time keeper here to start the Combat log and to finish the combat log. It also has a 3s tick rate to check
  • Revivification
    This is used because it has a 2s cast time combined with a 1s tick rate
  • Innervate
    This is used because it is a reduced length channel (80%) that ticks 4 times. Since this will rarely divide neatly with respect to time, it is the main test move. It is used after revivification so that the cast time is unaffected
  • Resurgence
    This has a 3s tick rate and is used to benchmark time
  • Wait
    This serves to clear out the action queue so that the GCD is no longer being tested
  • Innervate
    This move is used twice because it is an informative move and also has a cooldown so that the button can be spammed in order to have it fire immediately

 

5) Wait for combat to end and copy the trial data from the combat log.

Combat Log is being used due to lack of other options

 

6) If Polarity Shift was used then record this information

That way the Polarity shift runs can be isolated and looked at as a different trial run

 

7) Repeat N number of times, if at 0 Alacrity repeat it M times.

N is the number of trials run at each level and will be determined by the precision needed. M is larger than N because 0 is serving as the control.

 

8) Add a single piece of Alacrity and repeat steps 1-7

This tests the range of normally used values. Hopefully this will show something interesting.

 

 

Data Recorded:

Identify the following Time points for each trial:

  • Affliction Apply
  • Affliction ticks 1-7
  • Revivification Apply
  • Revivification ticks 1-11
  • Innervate A Apply
  • Innervate A Ticks 1-4
  • Resurgence Apply
  • Resurgence Ticks 1-4
  • Innervate B Apply
  • Innervate A Ticks 1-4

 

 

Analysis (work in progress)

  1. Compare the expected time [Time / (1 + Alacrity %)] against the reported time for each of the abilities.
  2. Try to determine where the rounding point is for time and if there are key alacrity percentages that round helpfully
  3. ???
  4. PROFIT

 

This setup should be able to test the ability delay and the Alacrity rounding but it does rely on the combat log. The big downside is that it is boring to test :(

 

 

 

I will eventually get around to testing this, but it will likely wait until I have nothing else to do.

Link to comment
Share on other sites

I have added sheets for a Trooper. I had to do the testing on the "Gav Daragon" combat dummy, instead of on my ship, as I was unable to hit the operations dummy sufficiently consistently to remain in combat, leading to large gaps when the character stuttered trying to attack it as the combat was being terminated.

 

Both Trooper (Commando) tests were done similar to the Sage, using zero (0) alacrity rating, with an “Ability Action Queue Window” of 1.0 seconds.

The"rotation" in the rotation version was "Grav Round" sent every 50ms, 200 times, then "Hammer Shot" sent every 50ms, 400 times; this "rotation" drew down energy cells, then allowed them to regenerate, while remaining in combat. For this sheet, I have added an additional column and summary block, which includes only the delay between casts of "Grav Round" (i.e.: a value is only present if the current and previous ability are both "Grav Round"). This new column really needs more data points to be interesting, it just hadn't occurred to me until I was finished testing and making pretty spreadsheets that this would be something I wanted to see.

The "Hammer Shot" spreadsheet is exactly what it sounds like, a whole lot of "Hammer Shot".

 

 

What I am starting to get from this is that it may be that instant abilities ("Hammer Shot") suffer less from ability delay than abilities with a cast time of 1 GCD ("Telekinetic Burst" and "Grav Round").

 

I knew going in that the APM that I had on the Optimal stats page was going to be higher than possible. Mainly because I decided to deliberately ignore the any possibility of any delays due to input lag or time rounding. Because it affects everything equally and made my life easier, I kept it that way.

But I love it when I find out more information about things I didn't know about.

 

Yep, I understand. To an extent, I understand and accept that casting will probably not be perfect, I was just concerned that the casting I was experiencing was 4%+ longer than advertised, when I had expected something something like a maximum of 1%. I had hoped that there might exist people who had had similar issues, but had found a way to resolve them, but it is appearing that that may not be the case.

Link to comment
Share on other sites

I just did some testing with a Sorcerer in Lightning spec. Naked, with prestacked Focal Point (so, 5% alacrity). Average delay was 1.5055s, min was 1.407s and max was 1.572s. Expected value was 1.429s.

 

So, this is definitely a bug, and it definitely affects all (or at least several) classes.

Link to comment
Share on other sites

I've done may own test where tried to kill 500k dummy with just assault and good old one button smashing. Here is the result http://parsely.io/parser/view/103957/1.

My stats are:

  • about 86 ms ping
  • 8.91% alacrity (845 rating)

This means that my GCD should be 1.3773 s and my APM 43.564. So as expected the APM in the parse is worse (42.8) and what is most interesting the minimal time between activations of the assault is lower than GCD.

 

About ability queue, how does it work?:

a) you queue abilities and the queue is send to the server and there should be no delays

or

b) you queue abilities but the game allows activation of the next ability only when it recieves information that previous cast/GCD has been finished.

 

I don't know much about these things but second option would produce delay no matter what (but then again my parse has shown lower than GCD interval between ability activiations).

Link to comment
Share on other sites

This issue is very odd to say the least, sadly I don't really have a solution for you either. One thing I did notice (which I don't see anyone else mention) is that the delay on your Disturbances was extremely consistent. Every time the cast was delayed, it was delayed by almost exactly 100 ms. That could give some clue to what the issue is.
Link to comment
Share on other sites

I think the inquisitor in particular would be very interesting, but the Trooper should also be revealing. I can't decide which scenario I like less: if this is a bug with the whole game, or just with one class.

 

Oh that bug's been affecting me since 3.1.1 came out. It sucks, cause I got my 204 mainhand in 3.1.1 and didn't notice a DPS increase because of it.

Link to comment
Share on other sites

I've done may own test where tried to kill 500k dummy with just assault and good old one button smashing. Here is the result http://parsely.io/parser/view/103957/1.

My stats are:

  • about 86 ms ping
  • 8.91% alacrity (845 rating)

This means that my GCD should be 1.3773 s and my APM 43.564. So as expected the APM in the parse is worse (42.8) and what is most interesting the minimal time between activations of the assault is lower than GCD.

 

About ability queue, how does it work?:

a) you queue abilities and the queue is send to the server and there should be no delays

or

b) you queue abilities but the game allows activation of the next ability only when it recieves information that previous cast/GCD has been finished.

 

I don't know much about these things but second option would produce delay no matter what (but then again my parse has shown lower than GCD interval between ability activiations).

 

GS-MM Penetrating blast also takes longer to finish then what the tool tip and alacrity would suggest. Trick shot / follow through seems to not be able to trigger reliable at the end of the penetrating blast (series of shot) channel.

Link to comment
Share on other sites

So what IS the proper way to activate skills? Im new to dps and i have noticed my APM is below optimal even though i keybind, never click anything, and i can see the abilitys flash multiple times before the ability activates. I have the action window set to 1 second so there should be loads of time for the ability to que but sometimes i notice little hiccups with some skills especially when going from an instant ability to a channel ability, like the que glitches or lags and causes an animation delay.

 

So is the proper way mashing the button multiple times until the skill goes off or is it better to hit it a couple times then stop just before you see it go off, then go to the next skill? or should I not be going by the animations at all?

Link to comment
Share on other sites

  • 1 month later...
Bump. People shouldn't forget about this. It makes some disciplines (such as Madness and Pyro) unplayable with an optimal rotation due to the GCD forcibly drifting out of sync with effect durations. It also severely diminishes the output (and playability) of other alacrity-heavy disciplines, such as Lightning, Marksmanship and Bodyguard. It needs to be fixed.
Link to comment
Share on other sites

  • 4 weeks later...

Measure using Star Parse. Measured from the time of Star Parse registers the ability activation not the damage.

 

Imp sniper zero alacrity

corrosive dart--->penetrating blast. expected ~1.5 second Average over 10 runs 1.407 (faster then expected)

Penetrating blast--->FT expected ~2.0 seconds. Average 2.03 seconds.

Snipe-->Snipe Expected ~1.5. Average 1.55. Low 1.505 High 1.6

 

Rep

Gunslinger. 977 Alacrity (10.04%)

VS-->PR expected ~1.35 seconds. Average 1.04 seconds

PR-->TS Expected ~1.8 second. low = 1.996 Average 2.12 range 1.996-2.237

CB-->CB expected 1.35 seconds Low 1.382 High 1.455

 

Rep

Gunslinger 73 alacrity (0.9%)

VS-PR expected ~1.5 Average 1.37 Low 1.317 high 1.409

PR-TS expected ~2 average 2.087 Low 2.085 High 2.096

CB-->CB expected ~1.5 average 1.59 Low 1.515 High 1.631

 

Rep

GS Burst Volley alacrity buff 20.04

PR-->TS Expected ~1.6 seconds

1.807

1.897

1.897

1.789

 

I'll do some more testing but going from PR-->TS is not working correctly. It is consistently longer (slower) than I would expect.

Also the time from an instant (VS) to a cast (PR) is shorter than I would expect

Link to comment
Share on other sites

Did some testing on my Sage with zero gear on, so a GCD of 1.5 seconds, using disturbance, mind crush, saber strike, and weaken mind. Round numbers of 1.50 and 1.60 seconds (rounded to the nearest .01) show up surprisingly often. Here are my impressions from looking through the logs trying these various abilities. (My apologies for being too lazy to provide more concrete counts and statistics.)

 

Disturbance: The large majority of casts took 1.60 seconds.

 

Mind Crush: Smaller sample size, as I put these in a rotation with Disturbance, but a majority took 2.10 seconds

 

Saber Strike: Nearly all took 1.50 seconds. Notably, several of the times that it was off it was 1.60 seconds (though there were rare other values as well).

 

Weaken Mind: Here the majority were 1.50 seconds, but there were also a good deal of 1.60 seconds (as well as a few others)

 

I also tried alternating Disturbance - Saber Strike. This was interesting:

 

Time elapsed for Saber Strike was often 1.60 seconds

Time elapsed for Disturbance was often 1.50 seconds

(there was occasional variation with less round values, as above, but a sizable number were round)

 

(Time elapsed for an ability means the time from its activation in the log to the activation of the following ability.)

 

What this seems to suggestis that there's a problem which primarily shows up at the beginning of a casted ability that causes a 0.1 second delay.

 

(For reference, my server lag during this experiment was 84 ms. I took the less scientific route and just spammed the keys. My spamming rate was perhaps on the order of 0.1 seconds, though I was not entirely consistent; I also tried faster spamming, probably close to 0.05 seconds, with similar results.)

 

One more anecdotal observation: I tried casting Disturbances only pressing the key once per cast. This still was mostly 1.60 seconds, but there were a small number of 1.50 casts, whereas when I simply spammed the key I had no 1.50 casts. Sample size roughly 20 for each.

 

-

 

As to the post above me referencing the Penetrating Rounds - Trick Shot transition as being slow, this has been the case going back to Speed Shot - Trick Shot days. My guess has been that there's some delay here related to confirming that Trick Shot has in fact reset/procced.

Link to comment
Share on other sites

From a programmers perspective (though not one who has ever actually written/worked with large distributed systems), excessive button mashing could be causing synchronization problems that is adding latency. I've heard anecdotal evidence from a couple of people who parse heavily that *reducing* the queue time and pressing a key only once can actually help with latency; though sometimes at the cost of the skill not going off at all due to dropped packets. Perhaps someone can do an experiment with this somehow?
Link to comment
Share on other sites

From a programmers perspective (though not one who has ever actually written/worked with large distributed systems), excessive button mashing could be causing synchronization problems that is adding latency. I've heard anecdotal evidence from a couple of people who parse heavily that *reducing* the queue time and pressing a key only once can actually help with latency; though sometimes at the cost of the skill not going off at all due to dropped packets. Perhaps someone can do an experiment with this somehow?

 

Generally, the only case I'm aware of where button mashing can result in increased latency is if you're button mashing on a cyclic period which intersects poorly with your latency and your ability action queue, resulting in you getting the ability to the server later than you would have with a calmer (and more measured) timing. In this case, we've eliminated that possibility.

 

Regarding your broader point…* The SWTOR client doesn't send every keystroke or even every activation attempt to the server. Doing so would allow malicious users to DoS servers by simply sending an impossible number of failed activations per second, forcing the server to react to them all. Instead, what happens is the server communicates to the client on the timing of the GCD, and the client then determines a queue of actions which fit within that GCD. Anything off-GCD is of course exempt to this. Once the timing "quantizes" between the server and the client (i.e. a GCD boundary is about to be reached), the client sends the top element of this queue to the server, which then puts it in its own queue and activates the action at the true GCD boundary (rather than just trusting the client). This results in some weird syncing behavior sometimes, notably where your client's notion of timing can fall a bit out of sync with the server and your abilities start going off at the "wrong" time.

 

This sort of "buffer, enqueue and dump" design is very common in all forms of distributed systems as it encodes a variant of "negative feedback". Basically negative feedback is where a system speeds up its processing as a function of input volume as you apply higher load to it. In this case, the "load" is simply the keystrokes/clicks, and the processing rate is the number of calculations which must be performed by the server and the client per activation. The negative feedback comes from the fact that the client is able to discard most of the information you're giving it, and the server is further able to discard an additional subset, and they are both able to make that determination efficiently. This improves responsiveness on both sides and allows the server to scale to a large set of concurrent users.

Link to comment
Share on other sites

More testing

Change ability queue time from 0.75 to 0.25

 

GS

Alacrity 10.04%

expected ~1.35

VS-->PR

1.293

1.298

1.298

1.324

1.191

Mostly faster then expected. No change from queue time of 0.75-->0.25

 

PR->TS

expected ~1.8

2.194

2.065

2.094

2.186

2.095

Slower then expected

 

(CB-->CB)-->AS-->TS

I am using CB to buff AS and already have TS ready. Per theory above TS is delayed after PR because the server needs to register the TS is available. If TS is already available we should not see a delay after the AS cast.

expected ~1.35

1.51

1.495

1.416

1.518

1.43

Average 1.474

range 1.43-1.51

Still not as fast as expected but better then PR-->TS

 

(CB-->)PR-->TS

Same test. Using CB to buff TS before doing the PR channel.

Expected ~1.8

1.904

1.809 ("clipped" logged all five, but screen stated channel was canceled)

1.913

1.903

1.9

1.913

 

I was not able to get another clipped PR where all 5 shots (5 main hand and 5 off hand) registered.

 

I am not sure what to make of this.

For Rep Gunslingers

1: Instant abilities seem to be slower then expected after channeled and casted abilities

2: For PR-->TS it is way slower then expected. Like due to the delay in registered the buff.

3: VS-->PR the ability is faster then I would expect by a wide margin.

4: Change the Queue time from 0.75-->0.25 did not seem to make a difference.

Link to comment
Share on other sites

×
×
  • Create New...