Advanced Training 101: 969 and FCFS Theorycraft

Warning: Theorycraft inside.

Moderators: Fridmarr, Worldie, Aergis, theckhd

Advanced Training 101: 969 and FCFS Theorycraft

Postby theckhd » Tue Aug 25, 2009 10:32 am

Advanced Training 101: 969 and FCFS Theorycraft
Disclaimer: This article assumes a high level of familiarity with the 969 rotation. If you can't name the 5 core abilities by heart, or don't know what "969" even stands for, this article is not for you. Go read up on the basics of the rotation before attempting to slog through this text. Knaughty's Advanced FAQ has a pretty good explanation of the basics of 969 that will get you started.

This article is intended as a tutorial on the subtleties of rotation theorycraft. It's very long, very in-depth, and not particularly well-suited to a "TLDR"-style summary (though I've bolded sections of the text to help, and included a summary/conclusions section anyway). It's intended for people who find the details of theorycrafting interesting, which is probably a short enough list to fit on one hand. Nonetheless, it's done in fairly exacting detail, and it's written to be accessible even to those without a deep knowledge of theorycrafting, provided they have the requisite time (hours? days?) to read it.


------------------------------

Introduction
Lately, there seems to have been a large number of people questioning the validity of the 969 rotation. Some have suggested that we should move to a FCFS priority queue much like Retribution has. The most common reason given for this change is that "FCFS is better threat than 969." We'll see in a moment why, even if true, this argument falls short of being a convincing reason to abandon good old 969.

969 Rotation - Misconceptions and Goals
First let's discuss the goal of 969, and wait to worry about numbers until later. It's a common misconception (often repeated by some of us who should know better, even myself) that 969 is the highest-threat rotation we have available. This is not, in fact, the case. It would be true if we only had the 5 core abilities at our disposal, simply because we'd have nothing else to fill GCD's with. But unless they take away (or substantially change) Avenger's Shield and Hammer of Wrath, there will always be a way to out-threat 969.

The reason for this is that 969 prioritizes survivability as well as threat. The goal of the 969 rotation is to maximize threat under the following constraints:
  • We must keep 100% Holy Shield uptime
  • We want to cast Judgement as often as possible to minimize the chance that JotJ will expire
Those two constraints make all the difference, and explain why it's possible to find a rotation that out-threats 969. However, it's important to remember that any rotation that out-threats 969 will not satisfy these two constraints. This will become clearer as we look closely at the numbers.

Ability Breakdown
For starters, we need to know the damage and DPS of each of our abilities. I'm going to pull the numbers from this post; if you want more detail on how the numbers were generated, take a look at the link. I'm using values calculated for 3.2, since the 3.2.2 changes aren't finalized yet, and as they are right now would not affect the mechanics of the simulation.

Theck wrote:
Code: Select all
Ability  Damage   Glyphed   Threat   Glyphed
ShoR      3984        0     11041         0
HotR      2950        0      8175         0
Cons      3437        0      9525         0
JoV       2264     2490      6274      6901
AS        2562     5124      7100     14200
HoW       2525        0      6998         0
SoV        435        0      1206         0
VDoT      4810        0     13330         0
HS         933        0      2586         0
Melee      697        0      1017         0


Image

Code: Select all
Ability   DPS   Glyphed    TPS   Glyphed
ShoR      664       0     1840       0 
HotR      492       0     1363       0 
Cons      382       0     1058       0 
JoV       252     277      697     767 
AS         71     142      197     394 
HoW       281       0      778       0 
SoV       459       0     1273       0 
VDoT      321       0      889       0 
HS        149       0      414       0 
Melee     736       0     1073       0 

Image


For the moment, we'll only concern ourselves with the 7 abilities we can choose to use: Shield of Righteousness (ShoR), Hammer of the Righteous (HotR), Consecration (Cons), Judgement of Vengeance (JoV), Avenger's Shield (AS), Hammer of Wrath (HoW), and Holy Shield (HS). It's clear from the first plot that ShoR, Consecration, and HotR are our highest-damage abilities. However, since HotR is on a 6-second cooldown (as opposed to Consecration's effective cooldown of 9 seconds), it's higher DPS than Consecration. All three of these abilities out-damage and out-DPS Judgement.

In the DPS plot, AS is calcluated on a 36-second effective cooldown and HoW is calculated on a 9-second effective cooldown. Their DPS will fluctuate considerably if we adjust the cooldowns, so we'll have to be a little more careful with them. In particular, the plot misrepresents AS for our purposes because while it's an ability we'd only cast every 30+ seconds, we'd only sacrifice a small portion (like 1/4) of the DPS of one of the other abilities if we substituted it in. As a result, we'll get more mileage out of the damage plot for these two abilities.

Holy Shield's Damage is for a single charge, while its DPS is calculated based on the player's block percentage (42% for this simulation, which should be reasonable assuming 100% HS uptime) and boss's attack speed (2.4 after JotJ). Despite the block % being a little off for some of the calculations we're about to see where HS doesn't have 100% uptime, the point of the plot is pretty clear - Holy Shield is our weakest ability for both damage and DPS.

So to summarize, here's how each ability pans out, from highest dps to lowest dps
Code: Select all
Ability   DPS     Defense
ShoR     High     ---
HotR     High     ---
Cons     High     ---
HoW      Med      ---
AS       Med      ---
JoV      Med      Med (JotJ uptime)
HS       Low      High (unhittable)


It's also worth noting at this point that I'm not going to use the AS or Judgement glyphs in this analysis. If I did, it would definitely change the outcome, at least insofar as AS would become our highest-damage ability and would move up to the top of the queue, making it a "High" DPS ability. However, it won't change the overall conclusions at the end, outside of which priority queue is the best for maximum damage output.

FCFS Simulation Details
Now, let's try and build a rotation out of these abilities. We'll try building an FCFS by writing a priority queue, and then calculate it's DPS and TPS. I've written some code that will simulate this by checking each spell in the priority queue and choosing the first one that's available (i.e. not still on cooldown). It then repeats this 1008 times to get enough data to smooth out short-term fluctuations. It also tracks the number of times each spell is cast, the number of empty GCDs (when nothing was available to cast), Holy Shield uptime (after 5 GCDs have passed, to avoid edge effects), and the exact order in which the spells were cast, so that we can do some diagnostics on the results.

The code is available here in MATLAB format: calc_fcfs.m
See my MATLAB thread for more details if you're interested in running the code yourself.

FCFS - Building the Queue
Let's try and craft our FCFS using the same rules as 969: We want 100% Holy Shield uptime, and we want to cast Judgement as often as we can to minimize JotJ drop-off. Thus we'll start our priority queue with:
#1: HS > JoV
To fill out the rest, we'll use the abilties in order of highest DPS. For now we'll skip the two situational abilities (AS and HoW) for simplicity; we'll add them to the mix in a little bit. So our final priority queue is:
#1: HS > JoV > ShoR > HotR > Cons

Running the simulation, we get the following results:
Code: Select all
Q#  DPS   TPS  HS Up%    Queue                                   
1  2437  6042   100     HS > JoV > ShoR > HotR > Cons       

Q# ShoR HotR Cons  JoV   HS  HoW   AS  Empty
1   168  168  168  168  168    0    0  168 


That TPS seems awfully low, and looking at the breakdown we see exactly why: 168 empty GCD's! Let's look at the line-by-line output to see what's causing this (read down each pair of columns):
Code: Select all
    '0'       'HS'      '15'      'Cons'
    '1.5'     'JoV'     '16.5'    '---'
    '3'       'ShoR'    '18'      'HS' 
    '4.5'     'HotR'    '19.5'    'JoV'
    '6'       'Cons'    '21'      'ShoR'
    '7.5'     '---'     '22.5'    'HotR'
    '9'       'HS'      '24'      'Cons'
    '10.5'    'JoV'     '25.5'    '---'
    '12'      'ShoR'    '27'      'HS' 
    '13.5'    'HotR'    '28.5'    'JoV'

So in our zeal to be defensive, we lead off with HS and JoV, followed by our 6-second cooldowns. However, in doing so we reach a point where all 5 abilities are on cooldown, and we can't cast anything, forcing us to push back our next cast. Another problem is that we're pushing ShoR and HotR back to keep HS and JoV up - note that the first cast of ShoR is at 3.0, but the next isn't until 12. We're losing out on nearly half the ShoR's and HotR's we could be getting.

To remedy this, let's try shifting ShoR and HotR up in the queue and placing JoV behind them, but ahead of Cons. Thus our next queue is
#2: HS > ShoR > HotR > JoV > Cons

Running the numbers on this, we get
Code: Select all
Q#  DPS   TPS  HS Up%    Queue                                   
1  2437  6042   100     HS > JoV > ShoR > HotR > Cons           
2  2820  7103   100     HS > ShoR > HotR > JoV > Cons       

Q# ShoR HotR Cons  JoV   HS  HoW   AS  Empty
1   168  168  168  168  168    0    0  168 
2   252  252  167  168  168    0    0    1 

We've gained over 1000 TPS by doing this, because we've gotten rid of nearly all of those empty GCD's and replaced them with ShoR or HotR casts. We still have one empty GCD though, and looking at the breakdown we see why:
Code: Select all
    '0'       'HS'      '15'      'JoV'
    '1.5'     'ShoR'    '16.5'    'HotR'
    '3'       'HotR'    '18'      'HS' 
    '4.5'     'JoV'     '19.5'    'ShoR'
    '6'       'Cons'    '21'      'Cons'
    '7.5'     'ShoR'    '22.5'    'HotR'
    '9'       'HS'      '24'      'JoV'
    '10.5'    'HotR'    '25.5'    'ShoR'
    '12'      '---'     '27'      'HS' 
    '13.5'    'ShoR'    '28.5'    'HotR'

We're still leading off with ShoR and HotR one after another, but this time our queue naturally shifts them so they're separated by one GCD. Unfortunately, we're still stuck with that one empty GCD early on due to clashing.

Let's try and fix this from the get-go by separating ShoR and HotR in our queue. We'll make one more shift, swapping HS and ShoR:
#3: ShoR > HS > HotR > JoV > Cons

Code: Select all
Q#  DPS   TPS  HS Up%    Queue                                   
1  2437  6042   100     HS > JoV > ShoR > HotR > Cons           
2  2820  7103   100     HS > ShoR > HotR > JoV > Cons           
3  2822  7109   100     ShoR > HS > HotR > JoV > Cons         

Q# ShoR HotR Cons  JoV   HS  HoW   AS  Empty
1   168  168  168  168  168    0    0  168 
2   252  252  167  168  168    0    0    1 
3   252  252  168  168  168    0    0    0 

Aha! We've finally nailed it - no empty GCDs, and 100% Holy Shield uptime. If we look at the breakdown:

Code: Select all
    '0'       'ShoR'    '15'      'HotR'
    '1.5'     'HS'      '16.5'    'Cons'
    '3'       'HotR'    '18'      'ShoR'
    '4.5'     'JoV'     '19.5'    'HS' 
    '6'       'ShoR'    '21'      'HotR'
    '7.5'     'Cons'    '22.5'    'JoV'
    '9'       'HotR'    '24'      'ShoR'
    '10.5'    'HS'      '25.5'    'Cons'
    '12'      'ShoR'    '27'      'HotR'
    '13.5'    'JoV'     '28.5'    'HS' 


That rotation should look awfully familiar, because it's 969. Note that it doesn't actually matter what order we use for the 9-second cooldowns in the queue, because we just rotate between them. We get the same results from the situation if we use this queue:
#4: ShoR > Cons > HotR > JoV > HS
In addition, it doesn't even matter whether we lead with a 9-second or a 6-second ability, as long as the two 6-second abilities aren't adjacent in the queue:
#5: HS > ShoR > JoV > HotR > Cons
Code: Select all
  Q# DPS   TPS  HS Up%    Queue                                 
   3 2822  7109   100     ShoR > HS > HotR > JoV > Cons           
   4 2822  7109   100     ShoR > Cons > HotR > JoV > HS           
   5 2822  7109   100     HS > ShoR > JoV > HotR > Cons       

  Q# ShoR HotR Cons  JoV   HS  HoW   AS  Empty
   3  252  252  168  168  168    0    0    0 
   4  252  252  168  168  168    0    0    0 
   5  252  252  168  168  168    0    0    0 

All three give exactly the same 969 rotation, despite having different queues. We would get identical results if we swapped ShoR and HotR as well. It's pretty clear that the particular order you use to fill in the queue doesn't matter, as long as the two 6-second abilities aren't adjacent. I'll elaborate more on this idea later in the article.

As one final test, let's see what happens if we build the queue in order of highest dps, as we would if we were trying to maximize threat, again grouping the two 6-second abilities, but this time placing them at the top of the queue:
#6: ShoR > HotR > Cons > JoV > HS
Code: Select all
  Q# DPS   TPS  HS Up%    Queue                         
   6 2642  6611    90     ShoR > HotR > Cons > JoV > HS         

  Q# ShoR HotR Cons  JoV   HS  HoW   AS  Empty
   6  252  252  126  126  126    0    0  126 

Again, lumping the two 6-second cooldowns together leaves some empty GCDs which drop our sustained output. Also note that with the two 6's next to one another, and HS in last place in the queue, we've lost Holy Shield uptime.

So, now that we've considered all the possibilities available if we limit ourselves to the 5 fundamental abilities, we can draw some conclusions:
  • 969 is an FCFS constructed with only the 5 fundamental abilities with a priority queue of the form:
    • (6s) > (9s) > (6s) > (9s) > (9s), or
    • (9s) > (6s) > (9s) > (6s) > (9s).
    • The 6's and 9's can be placed in any order without changing the result, as long as the two 6's are never in adjacent spots.
  • 969 is the maximum threat rotation one can get with the 5 fundamental abilities
  • Any other FCFS one can come up with using only those 5 abilities will be inferior to 969 due to empty GCD's.

FCFS - Optional Abilities
The question remains, "How do our optional abilities (AS and HoW) fit into this?" For starters, we should note that since the 969 queue fills all GCDs, anything we tack on to the end of the queue will never get cast. So the following queues would give exactly the same result:
HS > ShoR > JoV > HotR > Cons
HS > ShoR > JoV > HotR > Cons > AS
HS > ShoR > JoV > HotR > Cons > Divine Shield > Hearthstone
You'll never have to fear bubble-hearthing with such a queue, because outside of school lockouts or gimmick bosses that increase your spell cooldowns, you'll never reach Divine Shield or Hearthstone. For us, this means that we'd have to slip AS and HoW into the queue somewhere before the last position.

However, we have a further constraint, this time a practical one. If we put either of those abilities between ShoR or HotR in the queue, we'll end up pushing back one of our 6-second casts, and lose DPS. For example, consider this queue:
#7: HS > ShoR > JoV > HoW > HotR > Cons
Here, we'll end up pushing back HotR and Cons every so often to fit HoW in. Unfortunately, both HotR and Cons are higher-dps abilities than HoW, so we should see a net loss of threat compared to 969:
Code: Select all
  Q# DPS   TPS  HS Up%    Queue             
   5 2822  7109   100     HS > ShoR > JoV > HotR > Cons         
   7 2697  6763   100     HS > ShoR > JoV > HoW > HotR > Cons 

  Q# ShoR HotR Cons  JoV   HS  HoW   AS  Empty
   5  252  252  168  168  168    0    0    0 
   7  252  168    0  168  168  252    0    0 


It should be clear by now that to gain any TPS from optional abilities, we have to lose one of our two original constraints (HS uptime or JotJ dropoff minimization). Anything else we do ends up lowering our output, either by disrupting the rotation or substituting a weaker ability for a stronger one (e.g. ShoR > HS > HotR > JoV > AS > Cons keeps HS and JotJ uptime, but swaps AS for Cons, which is a net threat loss). So we can confidently say we've shown that 969 is the highest-threat rotation that maintains 100% Holy Shield Uptime and minimizes JotJ dropoff chance.

FCFS - Max Threat Queues
As one last exercise, let's see what happens if we throw caution to the wind and ignore defenses entirely. Let's ask the question, "What's the highest-threat rotation we can come up with?" There are two ways we could approach this, now that we have a basic idea of what to expect from a FCFS queue:
  • We could put ShoR > HotR > Cons at the top, and then list the other abilities according to DPS. This would be a priority ordered mostly by DPS considerations.
  • We could put ShoR > Cons > HotR at the top, since we know that bunching ShoR and HotR ends up pushing things back. This would be a pseudo-969, but with JoV and HS last on the list.

Rather than dissect each of these in detail, I'm just going to post all of the simulation results, and make a few brief comments about them.


Code: Select all
  Q# DPS   TPS  HS Up%    Queue                                   
   1 2437  6042   100     HS > JoV > ShoR > HotR > Cons           
   2 2820  7103   100     HS > ShoR > HotR > JoV > Cons           
   3 2822  7109   100     ShoR > HS > HotR > JoV > Cons           
   4 2822  7109   100     ShoR > Cons > HotR > JoV > HS           
   5 2822  7109   100     HS > ShoR > JoV > HotR > Cons           
   6 2642  6611    90     ShoR > HotR > Cons > JoV > HS           
   7 2697  6763   100     HS > ShoR > JoV > HoW > HotR > Cons     
   8 2699  6768    70     ShoR > HotR > Cons > AS > JoV > HS     
   9 2916  7369     0     ShoR > HotR > Cons > AS > HoW > JoV > HS
  10 2923  7388     0     ShoR > HotR > Cons > HoW > AS > JoV > HS
  11 2923  7388     0     ShoR > HotR > HoW > Cons > AS > JoV > HS
  12 2941  7438     0     ShoR > Cons > HotR > HoW > AS > JoV > HS
  13 2942  7442     0     ShoR > Cons > HotR > AS > HoW > JoV > HS

Code: Select all
  Q# ShoR HotR Cons  JoV   HS  HoW   AS  Empty
   1  168  168  168  168  168    0    0  168 
   2  252  252  167  168  168    0    0    1 
   3  252  252  168  168  168    0    0    0 
   4  252  252  168  168  168    0    0    0 
   5  252  252  168  168  168    0    0    0 
   6  252  252  126  126  126    0    0  126 
   7  252  168    0  168  168  252    0    0 
   8  252  252  126  126  101    0   51  100 
   9  252  252  126  126    0  201   51    0 
  10  252  252  126   84    0  252   42    0 
  11  252  252  126   84    0  252   42    0 
  12  252  252  168  126    0  168   42    0 
  13  252  252  168  120    0  168   48    0 


We see that we do get an increase over 969 with the ShoR > HotR > Cons queues, and that in thos cases it's best to have HoW higher in the queue than AS. There's a subtle reason for this - it's due to cooldown clashes that lead to JoV casts. Going from Q#9 to Q#10, we trade 42 JoV casts and 9 AS casts for 51 HoW casts. We lose a little bit of DPS by swapping HoW for AS, but offset that loss and gain slightly more by replacing those 42 JoV's with HoW.

However, the ShoR>Cons>HotR queues come out solidly ahead. This is for exactly the same reason 969 works well - by separating the two 6-second casts, you spread out the empty GCDs and make it easier to fill them with the high-DPS, long-cooldown spells like Consecration (168 casts compared to only 126 for the best-performing Shor>HotR>Cons queues, #10 and #11). Also note that in this case, we do better prioritizing AS over HoW, as it lets us drop 6 more Judgements from our rotation and replace them with AS. Note that at 7442 TPS, this is as good as it gets, meaning the gain over a standard 969 is about 330 TPS for losing all of your Holy Shield uptime and about 25% of your Judgement casts.

FCFS - Decoupled Queues
This leads us to one final, very subtle point. Spreading the 6-second casts out in this fashion does something that we could call "decoupling" the priority queue. In other words, because of the way the cooldowns work out, for this queue:
ShoR > Cons > HotR
Cons will always be on cooldown for every other 6-second cast, because Cons will be on cooldown for 6 GCDs. So no matter what we put after HotR, we'll always be in the pattern of:
6-second cast
something else
6-second cast
something else
6-second cast
something else.

This is actually true for any queue that puts an 8+ second cooldown ability in between ShoR and HotR. So in essence, we could split this into two separate queues, one for 6-second abilities and one for "everything else." We could then build the rotation by alternating between the two queues, casting a spell from the 6-second queue, followed by a spell from the "everything else" queue, followed by another 6-second spell, and so forth. This is also very easy to simulate, so here's one last set of tables to chew on:


Code: Select all
   Q#    DPS   TPS  HS Uptime    Queue1           Queue2                   
  1-1   2822  7109   100         ShoR > HotR      HS > JoV > Cons           
  1-2   2822  7109   100         ShoR > HotR      Cons > JoV > HS           
  1-3   2858  7207    80         ShoR > HotR      Cons > JoV > AS > HS     
  1-4   2933  7416     0         ShoR > HotR      Cons > JoV > HoW > HS     
  1-5   2942  7442     0         ShoR > HotR      Cons > AS > HoW > JoV > HS
  1-6   2941  7438     0         ShoR > HotR      Cons > HoW > AS > JoV > HS
  1-7   2905  7340     0         ShoR > HotR      HoW > AS > Cons > JoV > HS
  1-8   2923  7388     0         ShoR > HotR      HoW > Cons > AS > JoV > HS
  1-9   2905  7340     0         ShoR > HotR      AS > HoW > Cons > JoV > HS
  1-10  2927  7399     0         ShoR > HotR      AS > Cons > HoW > JoV > HS

Code: Select all
   Q#   ShoR HotR Cons  JoV   HS  HoW   AS  Empty
  1-1    252  252  168  168  168    0    0    0 
  1-2    252  252  168  168  168    0    0    0 
  1-3    252  252  168  168  126    0   42    0 
  1-4    252  252  168  168    0  168    0    0 
  1-5    252  252  168  120    0  168   48    0 
  1-6    252  252  168  126    0  168   42    0 
  1-7    252  252  101  100    0  252   51    0 
  1-8    252  252  126   84    0  252   42    0 
  1-9    252  252  101  100    0  252   51    0 
  1-10   252  252  151  151    0  151   51    0 


The first two entries (1-1 and 1-2) are just 969. The third and fourth slip in our optional abilities, shifting HS to the back of the line. The rest are the 6 possible incarnations that place Cons, AS, and HoW ahead of JoV and HS. Some of the entries should look familiar, since they equate to several of the entries in the earlier simulation. The advantage here is that by treating things this way, we're far less sensitive to initial conditions, so we'll never end up with pushback due to bunching of the 6-second abilities. Again, the best we can do is #1-5, which is the 7442 TPS queue that we came up with in the first simulation.

FCFS - Conclusions
As a final thought, we're already beginning to see why we don't usually refer to 969 as a priority queue system. For one thing, the best way to go about generating it is by treating it as two different priority queues. In addition, we've seen in the past that in some cases it's better to alternate abilities into the rotation in a fashion that doesn't adhere to queue-like rules (i.e. substitute Avenger's Shield or Exorcism in for every other Judgement). If you want to describe those scenarios, you'd need to make it three queues (one for 6's, and two for the "other" abilities, alternating back and forth between the 6-second and both of the 9-second queues). And with all of this complexity, we still have a rotation that's easily described in one 5- or 12-step cycle (96969, or 969696969696 if you want the whole rotation) with an easy rule for how to "weave in" other abilities (e.g. sub AS for every 4th Judgement).

So while it's really a FCFS at heart, the trusty old 969 is simple enough that it's easier to describe to beginners as a "rotation" than a complicated series of FCFS queues.

To summarize the major points of this article, here's a quick TLDR summary:
  • 969 is an FCFS constructed with only the 5 fundamental abilities with a priority queue of the form:
    • (6s) > (9s) > (6s) > (9s) > (9s), or
    • (9s) > (6s) > (9s) > (6s) > (9s).
    • The 6's and 9's can be placed in any order without changing the result, as long as the two 6's are never in adjacent spots.
  • 969 is the maximum threat rotation one can get with the 5 fundamental abilities
  • Any other FCFS one can come up with using only those 5 abilities will be inferior to 969 due to empty GCD's.
  • 969 is the highest-threat rotation that maintains 100% Holy Shield Uptime and minimizes JotJ dropoff chance.
  • To gain any TPS from optional abilities, we have to lose one of our two original constraints (HS uptime or JotJ dropoff minimization).
  • The maximum gain by using a "max-threat" FCFS over a standard 969 is about 330 TPS for losing all of your Holy Shield uptime and about 25% of your Judgement casts.
  • 969 is effective because it decouples the 6-second abilities from "everything else." It thus ensures that we get maximum use out of our two high-DPS 6-second abilities while spacing the 9-second abilities out to avoid cooldown clashes.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8028
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Serv » Tue Aug 25, 2009 10:41 am

Srsly, my head!
Awesome work Theck. Thanks a lot! I'm gonna need two or three times of reading to fully get all of the information you provide.
Image
Thanks to LAVE for the sig

www.rent-a-tank.net ...:::... www.nil-gilde.net
Serv
 
Posts: 228
Joined: Fri Jun 05, 2009 8:50 am

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Solare » Tue Aug 25, 2009 11:12 am

Not to undermine all the impressive and verbose work you did here, Theck, but this isn't anything a lot of us didn't already know. For instance, when you're OTing or soloing, you typically drop Holy Shield in your rotation because you don't need the extra block chance or you're not actively targeted. I used to sub exorcism in there. ;_; Damn pvp-induced cast times. But you're right that Avenger's Shield or Hammer of Wrath could easily fill it's spot, but not as smoothly. There's a determined flow to the 969 which just makes it feel right. But there's an immense difference in having a 'feeling' about the core of your abilities and having a solid article you can reference for all of the non-believers. Thanks a bunch. ^^
Image
User avatar
Solare
 
Posts: 132
Joined: Wed Sep 10, 2008 2:41 pm
Location: Sacramento, California

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Meloree » Tue Aug 25, 2009 11:52 am

Is there any reason you don't consider replacing HotR with Glyphed AS when it's available? That's what I typically do on occassions when I have AS glyphed and the freedom to use it in rotation (Mimi P1/2/4, Hodir, Freya). It maintains maximum judgement uptime, something that matters for me with under 100 hit, and 100% holy shield coverage, and AS ends up with a 30 second cooldown, not 36.

--
Meloree, <Edge>, Garona
Meloree
Maintankadonor
 
Posts: 1420
Joined: Wed Mar 12, 2008 10:15 am

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby theckhd » Tue Aug 25, 2009 12:09 pm

Solare wrote:Not to undermine all the impressive and verbose work you did here, Theck, but this isn't anything a lot of us didn't already know.

.....

But there's an immense difference in having a 'feeling' about the core of your abilities and having a solid article you can reference for all of the non-believers.

I think those two statements are the best summary I can come up with of why I wrote this article. Most of us know at least the basics of this, though I'd bet that many weren't aware that you can actually construct 969 from an FCFS queue, and even fewer were familiar with the subtleties involved in decoupling the two queues. So hopefully there's some good information in there even for more advanced theorycrafters.

But having a thorough tutorial that does it all step-by-step is a convenient thing to link to every time someone comes up with a "new rotation that's better than 969," which happens more often than you might think.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8028
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby theckhd » Tue Aug 25, 2009 12:16 pm

Meloree wrote:Is there any reason you don't consider replacing HotR with Glyphed AS when it's available? That's what I typically do on occassions when I have AS glyphed and the freedom to use it in rotation (Mimi P1/2/4, Hodir, Freya). It maintains maximum judgement uptime, something that matters for me with under 100 hit, and 100% holy shield coverage, and AS ends up with a 30 second cooldown, not 36.

--
Meloree, <Edge>, Garona

Mostly because there are a number of different substitutions we could look at, and the article was already fairly long and involved. Also, like I said at the end of the article, treating substitutions is very difficult within the confines of FCFS. You need to be able to flip a toggle switch and say "Ok, now I want to switch to this slightly-different queue because ability X is available." It's certainly not impossible to code, but it does make it more complicated than a simple queue. The dual-queue system would cover your particluar case pretty easily if you stuck AS in front of HotR. But you could also imagine versions where you want to cast it in place of Judgement or Consecration, which would require multiple versions of Queue 2.

And in the end, substitutions are better-dealt with by treating 969 as a rotation and doing the calculations analytically. You can easily figure out how much TPS you'd get by substituting for an ability by hand:

(New Ability Damage - Old Ability Damage) / (Frequency of substitution)

For example, substituting AS for every 5th HotR gives you:
(5124 - 2950) / 30 = 72 TPS
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8028
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Argali » Tue Aug 25, 2009 1:03 pm

Some people need proof for everything, and this work is definitely solid proof of why you should use 969 all the time, except when doing lolcontent.
Image
User avatar
Argali
 
Posts: 1080
Joined: Sat Jan 26, 2008 7:38 am

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Awyndel » Wed Aug 26, 2009 1:56 am

The lengths you go through to entertain the incurably stubborn :P .

Well now we do have a link to put in all their faces. Wonder if they would read it all though.
User avatar
Awyndel
 
Posts: 672
Joined: Sat Feb 14, 2009 8:49 am
Location: The Netherlands

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Wrathy » Wed Aug 26, 2009 12:00 pm

That was quite an eloquent evaluation. Great work!
Dakiros wrote:Hear that sound? Its Wrathy breaking Wowhead and Wordpress while he quickly comes up with the Rival set.

Avenging Wrathy - A Protection Paladin Blog
Wrathy's Guide to Gear Sets

Image
Wrathy
Maintankadonor
 
Posts: 548
Joined: Sat Feb 28, 2009 4:17 pm

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Aranbenjo » Thu Aug 27, 2009 3:26 am

so i have to use exorcism, uh? :D:D

GREAT WORK!
The savior of the broken,the beaten and the damned

Aranbenjo.Thunderhorn.EU
Aranbenjo
 
Posts: 133
Joined: Wed Oct 17, 2007 10:34 am
Location: italy

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Popeman » Thu Aug 27, 2009 8:58 am

That's an excellent analysis. I would point out one additional argument for using 969. Much of the theory-crafting about FCFS vs 969 assumes a simple tank and spank on a single target and I understand that it would be a monumentally difficult task to analyze it from any other point of view. However, most of the boss fights where maximization like this is beneficial have some sort of gimmick/ability that complicates the fight. I think it is important to note that both of the abilities that a paladin would swap into his 969 are his only two ranged attacks (especially now that we've lost Exorcism).

If you use Avenger's Shield or Hammer of Wrath in a standard rotation, it will very likely be unavailable for use during those times when you have to run out of an explosion, or the boss drops a rune/aoe, or the boss goes airborne, or the boss charges another player, or the boss teleports, or the boss disappears and adds spawn that you need to pick up, etc. From that standpoint, you are much better served if you save your ranged attacks for those times when you find yourself at range with only one/two options for your GCD.
Popeman
 
Posts: 6
Joined: Mon Aug 10, 2009 2:35 pm

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby theckhd » Thu Aug 27, 2009 9:28 am

Popeman wrote:That's an excellent analysis. I would point out one additional argument for using 969. Much of the theory-crafting about FCFS vs 969 assumes a simple tank and spank on a single target and I understand that it would be a monumentally difficult task to analyze it from any other point of view. However, most of the boss fights where maximization like this is beneficial have some sort of gimmick/ability that complicates the fight. I think it is important to note that both of the abilities that a paladin would swap into his 969 are his only two ranged attacks (especially now that we've lost Exorcism).

If you use Avenger's Shield or Hammer of Wrath in a standard rotation, it will very likely be unavailable for use during those times when you have to run out of an explosion, or the boss drops a rune/aoe, or the boss goes airborne, or the boss charges another player, or the boss teleports, or the boss disappears and adds spawn that you need to pick up, etc. From that standpoint, you are much better served if you save your ranged attacks for those times when you find yourself at range with only one/two options for your GCD.

That's another very good point that's often overlooked by those of us doing the number crunching. Thanks for bringing that up.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8028
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby Funtodin » Thu Aug 27, 2009 11:19 am

Great job there Theckhd! Now that you've shown that, I see the reasoning behind a lot of things.

Actually now, looking at my keybinds, I realize that they're positioned in a "decoupled" queue style, in that I have my two 6-sec cd abilities in the middle, being the most accessible keys, surrounded by the "everything else" ones, that I push as they become available alternating inside => outside. :o
Image
User avatar
Funtodin
 
Posts: 55
Joined: Thu Feb 19, 2009 9:55 am

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby amh » Fri Aug 28, 2009 5:07 am

Theck wrote:
Code: Select all
Ability  Damage   Glyphed   Threat   Glyphed
HS         933        0      2586         0

Code: Select all
Ability   DPS   Glyphed    TPS   Glyphed
HS        149       0      414       0 




How did you calculate your HS dps? Assuming 933 damage per hit, 2.4 second swing timer, 60% avoidance, I'd expect higher numbers (obviously higher dps with lower avoidance):

Code: Select all
per hit   933
sw-timer   2,4
avoid   0,6
time   20
hits taken   5
HS dmg done   4665
HS dps   233,25
I used to play a paladin.
User avatar
amh
Maintankadonor
 
Posts: 3012
Joined: Fri May 02, 2008 6:25 am
Location: Oh hi

Re: Advanced Training 101: 969 and FCFS Theorycraft

Postby theckhd » Fri Aug 28, 2009 6:24 am

This is buried somewhere in the MATLAB thread, but it's probably faster to retype it from scratch than search for it (go ahead and try searching for any of my posts with "DPS" and you'll see what I mean - adding HS to it might help narrow down the selection some though).

First you have to calculate the average number of Holy Shield procs per second. The formula for this is:
Code: Select all
avg_HS_pps=min([8/9.*ones(size(boss_net_swing_speed)); (max([(player_block./100) 0])./boss_net_swing_speed)]);

Breaking this down, it's the minimum of two expressions:
8/9
player_block_% / boss_swing_speed

the rest of the code there is window dressing (stuff to handle arrays and fix bugs, like having a negative player_block percentage - yes, I ran a simulation once where Holy Shield did negative TPS. Don't ask.).

Basically, you'll either get your block % divided by the boss's swing speed, or the maximum of 8 procs every 9 seconds (if you block every hit and the boss is swinging fast enough). Rarely, if ever, does the maximum value get invoked. player_block_% is around 40%, and boss_swing_speed is usually 2.4, so usually you get around 0.2 procs per second, or 1 proc every 5 seconds. DPS would then be (using 0.4/2.4=0.1667 for the pps value):
average_HS_pps * HS_Damage = 0.1667 * 933 = 156 DPS, which is pretty close to what I've given. The actual block % in that simulation was a little lower than 40% if I remember correctly, which is why it came out a little under this rough estimate.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8028
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Next

Return to Advanced Theorycraft and Calculations

Who is online

Users browsing this forum: No registered users and 1 guest

Who is online

In total there is 1 user online :: 0 registered, 0 hidden and 1 guest (based on users active over the past 5 minutes)
Most users ever online was 380 on Tue Oct 14, 2008 6:28 pm

Users browsing this forum: No registered users and 1 guest