Opportunist: In which we beat dead horses

Opportunist: In which we beat dead horses

in Thief

Posted by: Nilgoow.1037

Nilgoow.1037

Opportunist is one of those weird traits where it’s hard to figure out, intuitively, what exactly you’re getting. On the other hand, taking it is a bit of a no-brainer since it’s a minor in the best trait tree.

Now that it’s slated to be nerfed, the question arises: ‘How much is enough?’. Fortunately, it’s easy to approximate the initiative gain in its current and proposed states.

Opportunist works like this. If you roll a crit you get a second roll for the trait. If you win that roll you get 1 point of initiative and can’t roll again until the cooldown is done.

Right now that sits at 30% chance to proc on crit with a 1 second ICD, with the proposed values being 50% with a 5 second ICD. Does the increased proc rate make up for the longer ICD? How much do crit chance and attack speed play into this? We will soon find out.

I programmed a short test using R to simulate attacking continuously for some long period of time. I timed a couple different weapons and found most of them to be around 1 hit per second (more or less), so I modeled the hit rate from 1 to 2 hits per second just to be safe. I varied crit between 5 and 100% and scaled the numbers up to simulate weapons that bounce or cleave. Most importantly, I varied the proc chance (the 30% and 50% values) and the internal cooldown (1 and 5 seconds), so that it would be possible to compare the proposed changes to the current state. At least that’s what I think I did.

The end result of this is a multi-dimensional array of numbers representing the average initiative gained per second over an immensely long period of time (~5.8 days) under varying conditions. Five days is probably overkill but my mom’s basement is cold this time of year so I thought I’d peg my CPUs and kill two birds with one stone.

Plotting these dimensions against each other yields interesting results. For example, if you took a hit rate of 1/s and the current proc rate (30%) against a single target, you could plot crit chance vs initiative/second at varying internal cooldowns.

http://i.imgur.com/O3iPtNX.png
The current case is shown in red (1s ICD).

http://i.imgur.com/iJiz6jY.png
You can also look at what would happen to the curves with a 50% proc rate. The init/s maxes out at a much higher point at the same 1s ICD, around 0.33/s versus 0.23/s at 30%. The proposed curve is in purple (5s ICD).

Comparing the current vs the proposed state looks something like this. You can really see how long ICDs on abilities flatten out the benefit of high crit.
http://i.imgur.com/WKHgR9V.png

As you can see, the current implementation gives much more initiative at higher crit levels thanks to the reduced ICD, whereas the proposed version’s increased proc rate has a small advantage at low crit levels.

Fitting a function to the respective curves shows that a thief with 57% crit hitting one target once every second will go from around 0.218/s to 0.113/s, a decrease of around half.

Opportunist: In which we beat dead horses

in Thief

Posted by: MyCondolences.8172

MyCondolences.8172

I must say excellent work.
Although that just shows how dire the situation is. Sword skills cleave, short bow is aoe and unload/PW both have a high number of successive hits even furthering the gap.

My question for you would be; how does this play when you consider the base increase in initiative gain. Ignoring multiple hits/targets ofc(unless you want to do that).

edit: NVM not hard to work out with graph. This graph does say that against single targets with that many aps we’ll have more initiative gain post patch. Although as i said above, doesnt consider the 9hits from PW every 2 odd seconds or hitting multiple opponents.

(edited by MyCondolences.8172)

Opportunist: In which we beat dead horses

in Thief

Posted by: Asudementio.8526

Asudementio.8526

Excellent work, thank you so much.

Leader of [Suh]
My moves are fresh, like my groceries.
#TeamEvonforever

Opportunist: In which we beat dead horses

in Thief

Posted by: brentend.7058

brentend.7058

What program or schema did you use to model this? If you don’t mind me asking.

A quick look at the numbers seems that the init return is under-performing the theoretical in both current and proposed methods for 1s:

Looking at the the first graph at 1s and 25% crit shouldn’t the theoretical be .25*.3*1=0.075 init/s while the graph shows ~0.07. At 50% with similar calculation it should be 0.15 init/s while the graph shows ~0.13.

For the second graph at 1s and 25% crit theoretical calc is 0.125 while it shows ~0.1125. For 50% theoretical is 0.25 while graph shows ~0.2.

I would look at the other cd’s but that seems a little more difficult than a simple calculation. Or maybe the slight reduction is from the added time after cd has finished until the next crit that procs opportunist? In that case shouldn’t the simulated values climb closer to theoretical as crit chance increases, (since increased cc means the next hit that triggers opportunitst is more likely to come sooner)?

Either way really cool results and methodology. I’d be interested in hearing more details about how you did this. I’ve been wanting to try some monte carlo simulations for this kind of setting but haven’t found a good approach to do that. My computer has also been getting lazy recently and needs a workout.

edit:attempts to fix spelling and grammar

Opportunist: In which we beat dead horses

in Thief

Posted by: DesertRose.2031

DesertRose.2031

Fitting a function to the respective curves shows that a thief with 57% crit hitting one target once every second will go from around 0.218/s to 0.113/s, a decrease of around half.

Assuming this and that the numbers in this thread are correct said Thief with Assassin’s Signet and two other Signets, 15 points in Trickery and using every Signet and Steal on recharge has slightly more initiative after the patch due to the passive 0.250 increase (if I haven’t miscalculated).

Opportunist: In which we beat dead horses

in Thief

Posted by: Maugetarr.6823

Maugetarr.6823

Fitting a function to the respective curves shows that a thief with 57% crit hitting one target once every second will go from around 0.218/s to 0.113/s, a decrease of around half.

Assuming this and that the numbers in this thread are correct said Thief with Assassin’s Signet and two other Signets, 15 points in Trickery and using every Signet and Steal on recharge has slightly more initiative after the patch due to the passive 0.250 increase (if I haven’t miscalculated).

Going to have to agree with you (on opportunist change alone, I haven’t looked at anything else) but at least to 2 attacks per second it is a slight buff. I suspect for 3 and over there is a breakover point in critical chance that this will be a nerf to, but for my D/D power build in close combat it’s a buff. With SB in a zerg fight it is probably a nerf at some point.

Did you use matlab for that?

Blank Players [BDL]-Anvil Rock
Maugen Rawr- Thief/Ele
Rebalance Ideas for Thief

Opportunist: In which we beat dead horses

in Thief

Posted by: Nilgoow.1037

Nilgoow.1037

What program or schema did you use to model this? If you don’t mind me asking.

I used ‘R’, which is a statistical programming language.

A quick look at the numbers seems that the init return is under-performing the theoretical in both current and proposed methods for 1s:

Looking at the the first graph at 1s and 25% crit shouldn’t the theoretical be .25*.3*1=0.075 init/s while the graph shows ~0.07. At 50% with similar calculation it should be 0.15 init/s while the graph shows ~0.13.

For the second graph at 1s and 25% crit theoretical calc is 0.125 while it shows ~0.1125. For 50% theoretical is 0.25 while graph shows ~0.2.

I would look at the other cd’s but that seems a little more difficult than a simple calculation. Or maybe the slight reduction is from the added time after cd has finished until the next crit that procs opportunist? In that case shouldn’t the simulated values climb closer to theoretical as crit chance increases, (since increased cc means the next hit that triggers opportunitst is more likely to come sooner)?

Either way really cool results and methodology. I’d be interested in hearing more details about how you did this. I’ve been wanting to try some monte carlo simulations for this kind of setting but haven’t found a good approach to do that. My computer has also been getting lazy recently and needs a workout.

edit:attempts to fix spelling and grammar

You are correct, the cooldown keeps the actual amount from reaching the theoretical maximum one would expect given only the proc rate, attack speed, and crit rate. Also, because the crit rate and proc rate are independent, one can miss on the proc despite having 100% crit.

I’ll post the code sometime today when I get a chance to clean it up and add some comments.

(edited by Nilgoow.1037)

Opportunist: In which we beat dead horses

in Thief

Posted by: brentend.7058

brentend.7058

I used ‘R’, which is a statistical programming language.

You are correct, the cooldown keeps the actual amount from reaching the theoretical maximum one would expect given only the proc rate, attack speed, and crit rate. Also, because the crit rate and proc rate are independent, one can miss on the proc despite having 100% crit.

I’ll post the code sometime today when I get a chance to clean it up and add some comments.

Ohh, I didn’t realize “R” an actual reference on my first read through. Thanks for the reply I’ll have to try messing around with it later.

Opportunist: In which we beat dead horses

in Thief

Posted by: Ensign.2189

Ensign.2189

Back of napkin proc rate is one per ([cooldown] + 1 / ( [attacks per second] * [crit chance] * [proc chance] ) ) seconds.

The takeaway is that as your attack rate and crit chance go up the cooldown dominates the relationship. At very high AoE crit rates you were looking at proccing Opportunist every couple seconds; at kitten cooldown, that cooldown term is going to dominate the relationship, regardless of your attack rate or crit chance.

Slow attack or low crit characters will see a pretty modest hit to initiative gain, it’s the high performance builds that will drive opportunist to the cooldown that will see big performance hits (up to around 70% from my napkin scribbles).

Opportunist: In which we beat dead horses

in Thief

Posted by: Mika.9815

Mika.9815

Very interesting data to see, thank you for your efforts.

Fitting a function to the respective curves shows that a thief with 57% crit hitting one target once every second will go from around 0.218/s to 0.113/s, a decrease of around half.

Would you have data to share in this same case when hitting two targets every second? Personally I’ve been worried about what this change will do to the initiative of my wvw thief build when we are in middle of the zerg clashes, where you’re continuously hitting multiple opponents with auto-attack bounce and Cluster Bomb aoe. These engagements can last for a while, and I wonder how initiative starved I’ll end up being.

Opportunist: In which we beat dead horses

in Thief

Posted by: MyCondolences.8172

MyCondolences.8172

Laeir wrote this in the main topic about thief changes.



Initiative Increase (%) with only Opportunist

                  Attacks Per Second
Crit%  |    1      2      3      4      5      6
---------|-------------------------------------
       10 |   33    32    30    28    26    24
       20 |   32    28    23    19    16    12
       30 |   30    23    17    12      8      4
       40 |   28    19    11      6      1     -2
       50 |   25    14      6      1     -3     -6
       60 |   22    10      2     -3     -7   -10
       70 |   19      6     -2     -6   -10   -13
       80 |   17      3     -5     -9   -13   -15
       90 |   14      0     -7   -12   -15   -17
     100 |   11    -3   -10   -14   -17   -19


Initiative Increase (%) with Opportunist and Quick Recovery

                  Attacks Per Second
Crit%  |    1       2      3      4      5      6
---------|-------------------------------------
       10 |   17    16    15    14    12    11
       20 |   16    13    10      7      5      2
       30 |   15    10      5      2     -1     -4
       40 |   13      7      1     -3     -6     -9
       50 |   11      4     -2     -7   -10   -12
       60 |   10      1     -5   -10   -13   -15
       70 |     8     -2     -8   -12   -15   -18
       80 |     6     -5   -11   -15   -17   -20
       90 |     4     -7   -13   -17   -19   -21
     100 |     2     -9   -15   -18   -21   -22


Opportunist: In which we beat dead horses

in Thief

Posted by: Mika.9815

Mika.9815

Laeir wrote this in the main topic about thief changes.

That seems to contradict Nilgoow’s data.

Nilgoow gave an example of 57% crit chance hitting 1 target per second having a 48% reduction from opportunist. With base regeneration changes it would be a 0.145 or 14.98% increase.

Current:
Base 0.75
Opportunist 0.218
Total 0.968

Proposed
Base 1.00
Opportunist 0.113
Total 1.113

Whereas Laeir’s table indicates something around 23% increase for that scenario. So I wonder whose data is more accurate, and how the multiple hits will end up being. Laeir’s version would feel fair overall if real, only adversely affecting the very top end. And in that case compensation changes could be made to the individual weapon skills like unload.

(edited by Mika.9815)

Opportunist: In which we beat dead horses

in Thief

Posted by: Maugetarr.6823

Maugetarr.6823

Laeir wrote this in the main topic about thief changes.

That seems to contradict Nilgoow’s data.

Nilgoow gave an example of 57% crit chance hitting 1 target per second having a 48% reduction from opportunist. With base regeneration changes it would be a 0.145 or 14.98% increase.

Current:
Base 0.75
Opportunist 0.218
Total 0.968

Proposed
Base 1.00
Opportunist 0.113
Total 1.113

Whereas Laeir’s table indicates something around 23% increase for that scenario. So I wonder whose data is more accurate, and how the multiple hits will end up being. Laeir’s version would feel fair overall if real, only adversely affecting the very top end. And in that case compensation changes could be made to the individual weapon skills like unload.

It’s probably just a difference in ways they went about it. Permutations and chance and stuff. I have probability curves I came up with but you need to read them as 60% of the time the new proposed is a buff and 22% of the time its a nerf. They narrowed the band for initiative regen by bringing up the base and capping the top. What is interesting though is that pretty much all of the slightly different values do indicate a buff.

Blank Players [BDL]-Anvil Rock
Maugen Rawr- Thief/Ele
Rebalance Ideas for Thief

Opportunist: In which we beat dead horses

in Thief

Posted by: Nilgoow.1037

Nilgoow.1037

Can you post a link to the post with the tables?

Opportunist: In which we beat dead horses

in Thief

Posted by: Maugetarr.6823

Maugetarr.6823

Can you post a link to the post with the tables?

Certainly. I originally only linked my table with the 50 & 70% crit chances in the opportunist thread the devs created, so Ill link all of them here.

I did it with probability over a 4 second time period since 2 rounds dagger auto (almost) lines up exactly with that.

So for instance, the odds of gaining one initiative at a given crit chance would be “g” and the odds of of not gaining it would be “f”.

For a 4 second time period you had a total of 8 attacks meaning 2 attacks per second (I simplified them into each being .5 seconds). The odds of gaining exactly one initiative without affecting the next time period would look like this (broken into 1 second pairs):

(g)(1) * (f)(f) * (f)(f) * (f)(f)=> g*f^6

The “1” represents the cooldown for the rest of the second in which the gain happens. This is only the odds for that specific order though so its actually multiple times that to get the total chance of only 1 initiative in that 4 second period. Anyway, natural regen rate + regen from opportunist was added and then divided by the 4 second period to get the rate. I only did this for 2 attacks per second cause I didn’t want to waste too much more time on it. Similar methods were used for the possibility of a gain of 0, 2, 3, & 4.

The new rate is also included, but the line is much simpler because it only has the chance to proc once in that time period. Anyway, for those unfamiliar with reading a probability curve the total area under the curve represents 100% and the area between 2 different rates over the total area represents the chance for you to fall somewhere in between that region.

Edit: There should be more “*” in the equation but this format makes them a bold command….

Attachments:

Blank Players [BDL]-Anvil Rock
Maugen Rawr- Thief/Ele
Rebalance Ideas for Thief

(edited by Maugetarr.6823)

Opportunist: In which we beat dead horses

in Thief

Posted by: Laeir.5197

Laeir.5197

I’m posting the MATLAB code I wrote to generate the tables that MyCondolences quoted. I didn’t include it in the main thread since it was a bit off topic, but it wouldn’t hurt to have a few extra eyes check it for correctness. I added a few comments and corrected a potential round off issue when comparing floating point values for equality (hence the 4.9999 and 0.9999), but otherwise it’s the same code that generated the tables I posted. I used fixed intervals between attacks which probably doesn’t model the bursty nature of many Thief skills, but I think it’s a reasonable first approximation.


function table = init_increase

max_t = 60000; % Simulation time in seconds
max_aps = 6;   % Maximum Attacks Per Second
table = zeros(11,7); % Initialize the return table
rn = random('unif', 0,100, max_t * max_aps, 2); % Big RNG matrix

for aps = 1:max_aps % Attacks Per Second
    table(1, aps+1) = aps; % Column label is Attacks Per Second
    atks = max_t * aps;    % Number of attacks to simulate

    for cc = 10:10:100 % Crit Chance
        table(cc/10+1, 1) = cc; % Row label is Crit Chance
        new_init = (1 + 0.1) * max_t; % Change 0.1 to 0.0 to remove Quick Recovery
        old_init = (0.75 + 0.2) * max_t; % Change 0.2 to 0.0 to remove Quick Recovery

        % Simulate Opportunist procs for all attacks.

        new_t = -10; % Time of last Opportunist proc for new_init
        old_t = -10; % Time of last Opportunist proc for old_init
        for i = 1:atks % Attack Index
            t = i / aps; % Time (in seconds) of this attack (evenly spaced attacks)

            % Check Opportunist proc for proposed changes

            if (t - new_t > 4.9999) && (rn(i,1) < cc) && (rn(i,2) < 50)
                new_t = t;
                new_init = new_init + 1;
            end

            % Check Opportunist proc for current implementation

            if (t - old_t > 0.9999) && (rn(i,1) < cc) && (rn(i,2) < 30)
                old_t = t;
                old_init = old_init + 1;
            end
        end

        % Percent increase of New value over Old value

        table(cc/10+1,aps+1) = round(100 * (new_init - old_init) / old_init);
    end
end

(edited by Laeir.5197)

Opportunist: In which we beat dead horses

in Thief

Posted by: Kadin.2356

Kadin.2356

I see all this math going on and I just wanted to make sure that we were taking into account actual time on target. I can understand that’s not as big a concern for PvE characters but for PvP you are not going to be just straight up hitting someone as fast as possible. There’s going to be a good amount of downtime while you circle around and get a tick or two of healing from stealth before you re-engage. I see that really benefiting the new system over the current. It still might be an overall loss, but it will be much less than if you are looking at it as a 100% time on target situation. Couple that with the baseline regeneration increase and I’d be surprised if it’s not an overall buff.

Opportunist: In which we beat dead horses

in Thief

Posted by: Maugetarr.6823

Maugetarr.6823

I see all this math going on and I just wanted to make sure that we were taking into account actual time on target. I can understand that’s not as big a concern for PvE characters but for PvP you are not going to be just straight up hitting someone as fast as possible. There’s going to be a good amount of downtime while you circle around and get a tick or two of healing from stealth before you re-engage. I see that really benefiting the new system over the current. It still might be an overall loss, but it will be much less than if you are looking at it as a 100% time on target situation. Couple that with the baseline regeneration increase and I’d be surprised if it’s not an overall buff.

Yeah, the new system benefits less time on target and is a benefit to up through (at least) 2 hits a second.

@Laeir: I’m sorry, I’m terrible at checking others’ code! Ask 5 people to write a code to do the same thing and end up with 5 different codes.

Blank Players [BDL]-Anvil Rock
Maugen Rawr- Thief/Ele
Rebalance Ideas for Thief

(edited by Maugetarr.6823)

Opportunist: In which we beat dead horses

in Thief

Posted by: Smiley.5376

Smiley.5376

Bump this thread because it is usefull

Opportunist: In which we beat dead horses

in Thief

Posted by: Shogun.7401

Shogun.7401

They are not going to change anything because either way we have to deal with this kitten.