Jump to content

Actual DPS Simulator (early-ish phase)


ThomasCool

Recommended Posts

Hey guys,

I've been working at an actual DPS simulator since i can't find a recent comprehensive one.

you can find it here:

https://github.com/tomcool420/swtor-simulator-matlab

It is written in MATLAB (cause i'm lazy) and it's still in the early stages of development (I started yesterday really).

 

Current Working Specs (i'll be glad to fix any mistakes):

  • Gunslinger (ALL specs) - Snipers (missing engineering)
  • Vanguard (ALL specs) - Powertechs (just AP)
  • Shadow (ALL specs)
  • Scoundrel (Scrapper,Ruffian)
  • Guardian (Vigilance)

 

Early Work Completed on (Basically the JSON files)

  • Gunnery

 

HELP Needed:

There are a couple of way people can help

  1. Submit a couple of parses without relic/adrenals AND a couple with relic/adrenals (to compare). Also, submit gear ratings
  2. Help creating the JSON files, no programming experience needed, just some patience and about 30 mins per spec. (maybe a little more if you want to help getting all the spec coefficients)
  3. Help developing and debugging the code (matlab experience needed)
  4. Eventually - Writing rotations down in such a way that they can be programmed in (Guide people, i'm looking at you)

 

JSON Files

An example for the JSON file can be found here. An explanation for what all those numbers are can be found here. The XML file containing all the values can be found here

 

Someone could also adapt and xml parser to find those if they were good at parsing

Results

Tactics - based on Kwerty's no relics/no adrenal parse here

 

 

Thanks

~Lunagazer

P.S. even if you are not interested in helping with coefficients, i'd love any advice, opinions and/or other help

 

 

Credits:

* swtor_potato for coefficients

* KBN for lvl 55 equations (was easy to adjust them for 60)

* Kwerty for fixing my alacrity stupidity

Updates

 

 

  • June 10th - Vigilance
  • June 4th - First Working Optimizer (1 variable)
  • May 30th - Ruffian
  • May 29th - Scrapper
  • May 28th - Saboteur working
  • May 27th - Infiltration now works
  • May 27th - Tactics Fix + AP added (easy mirror)
  • May 26th - Plasmatech Added
  • May 25th - Serenity Working

 

 

Edited by ThomasCool
Link to comment
Share on other sites

  • Replies 52
  • Created
  • Last Reply

Top Posters In This Topic

Hey guys,

I've been working at an actual DPS simulator since i can't find a recent comprehensive one.

you can find it here:

https://github.com/tomcool420/swtor-simulator-matlab

It is written in MATLAB (cause i'm lazy) and it's still in the early stages of development (I started yesterday really).

 

There is more information on the front page but the basic point is that for now, just the virulence and dirty fighting spec have data for them.

 

I'd like to believe that it works well for those classes and seems to match pretty well to the expected values from my parse (as can be seen in the readme.md on that page).

 

If you are interested in that, I would LOVE some help, if not to code, then to find the coefficients for all the abilities

The explanation for the coefficients is explained there but it is tedious to have to search through

http://torcommunity.com/potato/3.2c/FullAbilities.xml to find them

 

Thanks

~Lunagazer

P.S. even if you are not interested in helping with coefficients, i'd love any advice, opinions and/or other help

P.P.S. i was going to post an example here BUT this forum is terrible at handling spaces

 

Have the vanguard + Powertech coefficients (well, the vanguard ones)!

Note: As I couldn't be bothered completely pulling apart my code from my old matlab gear optimizer model, you'll get it in the form of:

 

Ability Abreviation = ([Power + Standard Health Bonus] * Coefficient + [Ranged Damage]*Ranged Coefficient) * Discipline bonus's * Armor Penalty if applicable

Ability Abreviation *= (1 + (Crit Chance/100 + Surge/100))

 

Also note I didn't add in susceptible until I got to the final calculations. Oh and standard variation in abilities wasn't included because it was a model and not a simulator

 

 

 

PLASMATECH

HS = (weapon_damage + Ranged_Bonus)*Armor_Reduc*(Accuracy - 0.1) * 1.05;

HS = HS .* (1 + (crit/100 * Surge/100));

 

SHSk = (Tech_Bonus + STDH) * 1.78 * 1.15 * Armor_Reduc;

SHSk = SHSk .* (1 + (techcrit/100 * (Surge+30)/100));

 

HiB = (1.3089*weapon_damage + (Ranged_Bonus + STDH) * 1.9705)*(1 - (BossArmor * 0.4)/(15200 + (BossArmor * 0.4))) * 1.05;

HiB = HiB .* (1 + Surge/100);

 

SC = 0.98 * (Tech_Bonus + STDH+(81.5))*Armor_Reduc*1.05;

SC = SC .* (1 + ((techcrit + 175/8)/100 * Surge/100));

 

IP = (Tech_Bonus + STDH)*1.05;

IP = IP .* (1 + (elementcrit/100 * Surge/100));

 

SHSe = (Tech_Bonus + STDH) * 0.41 * 1.15;

SHSe = SHSe .* (1 + (elementcrit/100 * (Surge+30)/100));

 

IR = (Tech_Bonus + STDH) * 0.41 * 1.05;

IR = IR .* (1 + (elementcrit/100 * Surge/100));

 

IRb = (Tech_Bonus + STDH) * 0.34 * 1.05;

IRb = IRb .* (1 + (elementcrit/100 * Surge/100));

 

FP = (Tech_Bonus + STDH) * 1.74 * 1.05;

FP = FP .* (1 + ((100 + 3*elementcrit)/400 * (Surge+30)/100));

 

PCL = (Tech_Bonus + STDH) * 0.1715 * 1.35;

PCL = PCL .* (1 + (elementcrit/100 * Surge/100));

 

PCN = (Tech_Bonus + STDH) * 0.55 * 1.55 * 1.1;

PCN = PCN .* (1 + (elementcrit/100 * (Surge+30)/100));

 

PT = (Tech_Bonus + STDH) * 0.37 * 1.05;

PT = PT .* (1 + (elementcrit/100 * (Surge+30)/100));

 

TACTICS

 

HiB = (1.31*weapon_damage + 1.97*(Ranged_Bonus+STDH))*(1 - (BossArmor * 0.1)/(15200 + (BossArmor * 0.1))) * 1.15;

HiB = HiB .* (1 + (crit/100 * (Surge+30)/100));

 

CB = 4*0.84*(STDH + Tech_Bonus)*Armor_Reduc*1.15;

CB = CB .* (1 + (techcrit/100 * (Surge+30)/100));

 

SS = 1.77*(Tech_Bonus + STDH)*Armor_Reduc*1.25;

SS = SS .* (1 + ((techcrit+5)/100 * (Surge+30)/100));

 

AP = 2.48*(Tech_Bonus + STDH)*Armor_Reduc*1.15;

AP = AP .* (1 + ((techcrit+5)/100 * (Surge+30)/100));

 

Gut = 0.95 *(Tech_Bonus + STDH)*Armor_Reduc * 1.15;

Gut = Gut .* (1 + (techcrit/100 * (Surge+30)/100));

 

TS = 1.72*(Tech_Bonus + STDH)*Armor_Reduc*1.15;

TS = TS .* (1 + (techcrit/100 * (Surge+30)/100));

 

SC = 0.98*(Tech_Bonus + STDH+(81.5))*Armor_Reduc*1.25;

SC = SC .* (1 + ((techcrit + 175/8)/100 * Surge/100));

 

HS = (weapon_damage + Ranged_Bonus)*Armor_Reduc*(Accuracy - 0.1)*1.10;

HS = HS .* (1 + (crit/100 * Surge/100));

 

Bleed = 0.25*(Tech_Bonus + STDH) * 1.25;

Bleed = Bleed .* (1 + (techcrit/100 * (Surge+30)/100));

 

 

 

Link to comment
Share on other sites

Yea i was gonna do vanguards next (the tactics coefficients are already up) shoulder cannon was giving me some issues though.

P.S. My vanguard gear is kinda crap. could you give me your gear and link a parse?

Edited by ThomasCool
Link to comment
Share on other sites

Marksman/Sharpshooter has now been added.

Ability Cooldown is now implemented

 

Taking the best result of a high number of iterations reproduces the results from Tosh'oldi'mel (link) to within 2-3K damage although it still runs it a bit fast (as expected). I also do not know the exact stats that he had then (If he reads this, i'd love to have them)

Edited by ThomasCool
Link to comment
Share on other sites

Marksman/Sharpshooter has now been added.

Ability Cooldown is now implemented

 

Taking the best result of a high number of iterations reproduces the results from Tosh'oldi'mel (link) to within 2-3K damage although it still runs it a bit fast (as expected). I also do not know the exact stats that he had then (If he reads this, i'd love to have them)

 

I'll send him your way (he's a guildy). I'm sure he'd be very interested to help.

 

Awesome work, btw!

Link to comment
Share on other sites

Yea i was gonna do vanguards next (the tactics coefficients are already up) shoulder cannon was giving me some issues though.

P.S. My vanguard gear is kinda crap. could you give me your gear and link a parse?

 

Sure. I'll do 10 parses and link the list to ya. No relics + adrenals for said parses because it makes it more consistent, and if you've got relics/adrenals working fine then no need to incorporate em here.

 

As for gear:

 

3907 Aim

1638 Power (there is more but I took relics off)

441 Crit Rating

720 Alacrity

760 Accuracy

302 Surge

 

Full 198s with a 204 mainhand

 

Also note that since 3.2 dropped i've had issues with hitting my usual APM - I've been ~2 below it, and that's been hurting my DPS. I might drop an alac piece for an acc piece and get more power augments if testing can prove its better, but until the PTS comes back up no testing will be done.

 

PARSES BEING ADDED AFTER ALL 10 ARE DONE

 

EDIT - Ok I know I said 10, but my stim is running out so I'll drop it to 5.

5 should be good for an average-ish situation right?

Edited by TACeMossie
Link to comment
Share on other sites

KBN, thanks. BTW Tosh is one of the few people that seems to have a rotation where the parser doesn't have to wait for Aimed Shot. (standard rotation has 1s lost due to PB only being 2s) - No one notices it due to the clunky way the proc works

 

Kwerty, I got tactics working and have it up on github. I'll test it a bit more against your parses when i get them (there might be something off but i was guesstimating so yea.

Edited by ThomasCool
Link to comment
Share on other sites

where are the parses?

 

Forgot to link em :p

 

Note: Thats no relics, no adrenals, so its a little lower than usual. Just gonna emphasize that

I can do more with relics + adrenals, however I'll only be able to get 1-2 for ya. And right now, I'm doing some plasmatech parses because i'm trying to break 5.1k

Link to comment
Share on other sites

Update to the Tactics Simulations

 

So... I did in fact have a mistake (forgot to take into account the 10% boost to stockstrike from the passive)

 

That being said, here are the results i obtained once i fixed that (with Kwerty's ability usage and stats).

Using this parse: Kwerty

I first ran the simulation for 2000 iterations with the APM unckecked (basically no lag, either computer or server) and obtained this: Image. The mean is around 4620 DPS and the standard deviation is about 86.5. The best Parse got the following results:

STATS: time - 203.832, damage = 1000232.301, DPS = 4907.132, APM =  53.57, Crit = 0.38

As a sanity check, i made sure it was (in theory) possible to get this so i counted the number of abilities on the GCD:

1 Gut, 37 HiB, 15 AP, 24 SS, 49 TS, 9 CD, 12 HS = 147 Activations on the GCD

With 8.3% Alacrity that is

147*1.5*(1-0.083)=202.13s

(I manually add a very small delay before each HiB to allow the gut dot to tick before the refresh)

On Average, it seems like Kwerty looses about 0.237s per HiB cycle (lag, i know) which amounts to around 8.7s on this high end results

 

On the other hand, when i matched the APM to his parse, I get results very similar to his:

 

STATS: time - 222.449, damage = 1013629.050, DPS = 4556.690, APM =  49.09, Crit = 0.35

 

This is mostly as expected.

The histogram is here (again for 2000 iterations). The histogram is completely skewed because the APM is being matched but not damage above the total dummy HP is being accepted so it somewhat truncates the high end while leaving the low end tail alone (maybe i can allow it to go over 1mil when just looking at numbers like this.

 

An additional thing i checked was: what would happen if i added a 0.237s delay before HiB. The best result i got was:

STATS: time - 207.203, damage = 1000555.490, DPS = 4828.860, APM =  52.70, Crit = 0.40

But, more interestingly the mean apm was dropped by about 1.5 over the unchecked rotation. In addition, the mean dps was 4489 which is closeish to the average of his linked parses. (Histogram)

 

If you want more information, here are the detailed results for the best parses Results

 

I am actually surprised (And happy) about how well this turned out

 

~Lunagazer

Edited by ThomasCool
Link to comment
Share on other sites

Hey Luna, hope I can help! Especially since you were the one I modeled my lethality parsing after when SWTORBoard was a thing back in the 2.x's. Unfortunately I'm out on vacation with my family this weekend, so I don't have access to my swtor client, since I just have my macbook air with me, not my gaming PC.

 

I don't have the exact stat setup in my brain, but I'm in full 198's except for my mainhand barrel and a bracer armoring. I think my crit is somewhere in the low 300's, and 1 alacrity enhancement. I don't recall the amount of accuracy I have, but I'm just over 100% accuracy with 1 accuracy augment... can't recall the number of enhancements off the top of my head. I just changed over to cunning augs from power augs since I last parsed. Don't have any explanations for these, other than following the gospel of KBN :p same thing with my rotation, followed his suggestions (doing them when I had the 4pc/2pc illegal mods was super fun and cheesy!) and they worked great so I kept doing them :) Almost got a 5k doing that, but then double proc-ing got fixed.

 

I'll be back at my apt monday evening, what info/parses would you like when I return?

Edited by Archaetorrhi
Link to comment
Share on other sites

For parses, I just need a couple to get an idea of an average. I don't need an exceptional parse. If you can do a couple with adrenal/relics and a couple without that'd be amazing (mostly SS), i'm pretty confident with my DF numbers but if you want i can check those too. Oh and obviously the gear you use for each type :p

Thanks

 

~Luna

Edited by ThomasCool
Link to comment
Share on other sites

Sounds good! I don't really don't DF that well now, I've almost exclusively played sharpie for all of 3.x so far because of the bug that favors sharpie for slingers - I've used it for every single guild kill we've done so far! for whatever reason I just find DF to be annoying this time around, but now that sharpie has been adjusted I should probably re-learn DF again. Do you have a 3.x writeup for it, or know of a good one? I had one but can't find it anymore.

 

Have you done any stat testing for sharpie/DF? I usually just cede that to the superior mathemagicians :p If you have done testing, do you know the optimal stat layouts for DF/Sharpie?

 

Oh also for clarification when I get started - do you want some with Relics/Adrenals, some without, and some with one or the other? or just the first two?

Edited by Archaetorrhi
Link to comment
Share on other sites

For DF right now i'm using the old 4pc new 2pc. Sadly we don't get to raid as much as i want so i'm not full 198s yet but i've gotten some pretty damn good results with it. the new 6pc works also with either 3 WS or 2WS rotation (for the 2WS rotation look at lord_of_stone's post from a while back.

I've simulated both the 2WS with old set bonus and 3WS with new and honestly it's super close. Right now, i'm still more focused on actually getting the simulations to match up with parses to prove that they are valid-ish. The 2WS is much much more flexible in combat. Honestly in combat i usually go back and forth between them.

 

As for the parses: I'd like a couple with as high as possible numbers (so relic + adrenals) and a couple more constant parses (no adrenals or relic)

 

Thanks

~Luna

Link to comment
Share on other sites

Got another bit of feedback for ya luna, based off those sims you ran.

The APM was looking a little high which is why I started looking.

 

You are currently handling alacrity wrong!

 

Alacrity isn't a multiplication of (1-alacrity) for cooldowns + the GCD, but rather it is a division of (1+alacrity). The easiest way to see this is beserk on a combat sentinel. Master Strike goes from 3 sec channel / 18 sec cooldown with no alacrity to 2.25 sec channel / 13.53 sec cooldown with 33% alacrity. If alacrity worked the way you currently have it coded, it would be a 2.01 second channel and a cooldown of 12.06 seconds.

 

Also explains why you had 12 hammer shots in your best parse whereas I found that I'd have 10 if I didn't make silly mistakes like using HiB->TS when that would cap me on energy whereas TS->HIB would not, since you got the resource regen part of alacrity right.

Link to comment
Share on other sites

Nice work! I'll be back later today probably around 5 or 6, if I'm not too exhausted I'll parse some then (hopefully I'm not too family-hungover to be effective, these babies were too frakkin' loud! :mad: ), if not, I'll take care of it tomorrow
Link to comment
Share on other sites

Got another bit of feedback for ya luna, based off those sims you ran.

The APM was looking a little high which is why I started looking.

 

You are currently handling alacrity wrong!

 

Alacrity isn't a multiplication of (1-alacrity) for cooldowns + the GCD, but rather it is a division of (1+alacrity). The easiest way to see this is beserk on a combat sentinel. Master Strike goes from 3 sec channel / 18 sec cooldown with no alacrity to 2.25 sec channel / 13.53 sec cooldown with 33% alacrity. If alacrity worked the way you currently have it coded, it would be a 2.01 second channel and a cooldown of 12.06 seconds.

 

Also explains why you had 12 hammer shots in your best parse whereas I found that I'd have 10 if I didn't make silly mistakes like using HiB->TS when that would cap me on energy whereas TS->HIB would not, since you got the resource regen part of alacrity right.

 

Of course, Bioware decides to use campy logic. Why would I expect anything different?

 

Anyhow, nice job OP! Keep whacking it! We'll all thank you later ;)

Link to comment
Share on other sites

Of course, Bioware decides to use campy logic. Why would I expect anything different?

 

Anyhow, nice job OP! Keep whacking it! We'll all thank you later ;)

 

How is that campy logic? Doing it that way means that 1% alacrity = 1% more DPS.

 

If they did it so its times (1 - Alac%), then 100% alacrity would be infinite DPS. But the way they did it, 100% alacrity is a 100% DPS boost.

Link to comment
Share on other sites

×
×
  • Create New...