Elitist Jerks
Register
Blogs
Forums


Go Back   Elitist Jerks » Class Mechanics » Rogues

Closed Thread
 
LinkBack Thread Tools
Old 01/22/11, 6:20 AM   #1
korner
Von Kaiser
 
korner's Avatar
 
Troll Rogue
 
Азурегос (EU)
Complete Rogue Reforger tool

This thread will no longer be updated - I have quit WoW, so there is no reason for me to maintain it.

Preface
As we know, the problem of determining the best reforges is a NP-Complete problem - shortly, that means that there is no guaranteed way of solving it without trying all possible combinations.

So I decided to write a tool which will iterate through all possible variants, calculate EP of each and choose the best.
That way it is guaranteed that the solution is the best possible. Also, this way of calculation automatically handles stat caps, if EP is calculated correctly.

The one major drawback of this method is calculation time: even with all possible optimizations and on a powerful hardware it takes up to couple of minutes to iterate through all these 4,837,294,080 (e.g.) variants.
Now, to the tool itself:
It is written in Perl and uses simple config file to set options. The script is fully cross-platform, and can be run on PC, Mac, Linux, etc - basically, on every platform.


Downloads
  1. The script with a sample configuration file for those who have Perl installed:
    Reforger.zip (4.7Kb)
    Anyone can look at the source and check that it's not some malicious badware.
  2. For Windows users who do not want to download ActivePerl distribution, I have packaged an .exe file:
    Reforger-exe.zip (3.7Mb)
    Due to Perl specifics (not a compiled language), this executable includes minimalistic Perl interpreter and is quite big for such a small script. However, it works.
Mirrors : reforger.zip
reforger-exe.zip

Installation

To install it, just unzip the archive somewhere
To run the bare Perl version, you need to install Config::General , Parallel::ForkManager, Inline::C and Time::HiRes modules.
This can be done by issuing 'cpan ModuleName' on UNIX, or 'c:\somewhere\perl\bin\cpan install ModuleName' on Windows.
Also, script version must be installed into folder with path without spaces
(C:\tools\reforger\reforger.pl is OK, C:\Documents and Settings\user\Desktop\Reforger\reforger.pl is not OK)

Packaged executable from 'reforger-exe.zip' can be started without these prerequisites.

Configuration

The configuration is stored in reforger.cfg file in plain text.
To get quickly started as Mutilate rogue, you need to enter your character Armory URL in the 'url = ' line at the beginning of the file, and launch the tool.

Options available:
  • url - The Armory URL. List of items and gem/enchant stats will be pulled from there, if the next parameter is set to 1.
  • useArmory - set to 1 if you want to pull the data from Armory and do not want to enter item ID/stats
    manually.
  • ThreadCount - Set to number of your CPU cores to increase calculation speed. Default is 4 threads.
  • <items> - List of item IDs in the gear set. Item stats will be pulled from Wowhead.
  • <added_stats> - Stats, obtained from gems, enchants, etc. (not from gear items)
  • <want_reforge> This table determines, what reforge combinations are tried (left stat will be tried to be reforged to all the stats to the right)
    Changing this table affects calculation time significantly.
    However, as it is rather small now, feel free to add options there.
    Defaults are for Mutilate:
    <want_reforge>
    	hit = mst,hst
    	mst = hit
    	hst = hit,mst
    	exp = hit,mst,hst
    	cri = hit,mst,hst
    </want_reforge>
    For Combat, sample table is as follows: (updated for 4.0.6)
    Also, when switching to Combat, remember to update EP values to combat ones.

    <want_reforge>
    	hit = exp,hst
    	mst = hst,exp,hit
    	hst = exp,hit
    	exp = hst,hit,mst
    	cri = exp,hst,hit
    </want_reforge>
    It contains more possible variants, and so Combat calculations are much slower, while still in acceptable range (few minutes).
  • <ep_values> - These are pre-cap EP values (for stats which have cap), or simply EP values for all other stats.
    For hit, pre-cap means before spell hit cap (as yellow hit cap is reached automatically in current raiding gear)
  • <caps> - These are the stat caps. Default sre for mutilate, you should change them for Combat or gnomes.
    If, at some point, we will have some other cap (e.g., Mastery cap), it can be added here and will be taken into account automatically.
  • <ep_values_post> - These are EP values for post-cap stats. You must add entry there, if additional cap is added.
    For Hit, this is the value of white hit.
item_cache.cfg - This second configuration file serves as item stats cache, to pull item stats from Wowhead only once. Can be deleted safely, and will be recreated.
Items are firstly looked for in this file, so you can customize item stats here.

Mistral/Wind Stalker items

These items are fully supported now, if you use Armory as input source.
[Stormwake the Tempest's Reach] is kind of bugged in Armory or even in game - sometimes Armory shows that this item's reforge is counted twice. It may be an Armory bug, or it may be even ingame bug (I don't have that sword to test).
When in doubt about results, obtained with that item - use manual configuration.
If you prefer manual items input, you should still enter your random epic item stats into the item_cache.cfg file.

Results
The results will be presented in the following form:

Suggested reforge options (only those that you need to change):
--- no ---      (Neck)  Don Rodrigo's Fabulous Necklace
cri -> hit      (Shoulder)  Poison Protocol Pauldrons
cri -> hit      (Chest)  Sark of the Unwatched
--- no ---      (Waist)  Belt of Nefarious Whispers
cri -> hst      (Legs)  Wind Dancer's Legguards
--- no ---      (Feet)  Storm Rider's Boots
cri -> mst      (Back)  Dory's Finery
exp -> hit      (MH)  Organic Lifeform Inverter
exp -> mst      (OH)  Scaleslicer
===============
 Resulting stats:
hit: 1332
mst: 2612
hst: 729
exp: 118
cri: 531
Resulting EP: 5872.04, 153.94 gained
===============
Unused reforge options found:
hit -> hst
mst -> hit
exp -> hst
Only items you need to change reforges on are listed.
Also, item slots names are provided for convenience.

Reforges listed as 'unused' can be potentially removed from want_reforge table. However, be careful - they may be needed at your next gear set.

"Gained" EP displays the gain in EP over your current reforges.
As it does not take into acccount Agility, you should not compare different gear sets with this tool - use Shadowcraft instead.


This will also be saved to results.txt file, so they are not lost when you close the console window.

Short FAQ
  • Q: It is terribly slow, can it be made faster?
    A: It is fast already, and if calculation time of few seconds/minutes seems too long for you - you are welcome to rewrite the tool in Assembler or for GPU calculation.
  • Q: Why Perl, and not Python as in Shadowcraft?
    A: I code in Perl much better, and this tool can not be integrated to Shadowcraft web ui anyway (see the next question).
  • Q: Can we have a Web UI?
    A: You can look at WowReforge - it now uses a very similar calculation approach that my tool, and will produce the same results. But you will need to have Silverlight installed.
  • Q: there is an Optimal Reforger Calculator around, how this is different?
    A: Optimal Reforger Calculator does not guarantee the perfect solution, it simply reforges the stats with less EP to the stats with max EP. This tool guarantees that the solution is the best possible.
  • Q: Displayed stats (haste and mastery) do not match the ones I see in game, if Armory import is used.
    A: This has been fixed for the most characters. If you still observer such behaviour - that is most likely and Armory bug, let's wait until Blizzard implements Armory XML feed again.

Conclusion
I have tested the tool on a dozen characters, and it always generates results close to what you would want from the EP perspective: capped stats are within 2-10 points from the cap, maximum EP stat is maximized, etc.
So, this tool can be used to provide the guaranteed to be best answer to "How should I reforge?" question, given that you are able to configure it correctly.

Last edited by korner : 03/13/11 at 3:50 PM.

Ukraine Offline
Old 01/22/11, 8:09 AM   #2
THEFREAKISH
Glass Joe
 
Orc Rogue
 
Die Nachtwache (EU)
Works fine for me. Plugged my rogue in, had it run the numbers, compared the results in shadowcraft with my previous reforging and found it being 21 DPS superior.

Thanks.

Offline
Old 01/22/11, 8:30 AM   #3
Mafew
Glass Joe
 
Undead Rogue
 
Doomhammer (EU)
The links currently seem to be down for me not sure about others?

Edit: Scrap that they have just started working again.

Offline
Old 01/22/11, 8:40 AM   #4
korner
Von Kaiser
 
korner's Avatar
 
Troll Rogue
 
Азурегос (EU)
Originally Posted by Mafew View Post
The links currently seem to be down for me not sure about others?

Edit: Scrap that they have just started working again.
Added a mirror to the original post, might be useful if Dropbox fails.

Ukraine Offline
Old 01/22/11, 8:53 AM   #5
Syncness
Von Kaiser
 
Night Elf Hunter
 
Caelestrasz
WoW Reforge Calculator was mentioned in the other thread, and does very similar.

You can set the EP values, have it aim to reach, exact, over, below, near, a designated value, the "optimize" the rest based on EP.

Australia Offline
Old 01/22/11, 9:08 AM   #6
Nryka
Glass Joe
 
Pandaren Rogue
 
Hyjal (EU)
The script is working fine on my Mac (SL 10.6.6), though I’d like to add the correct commands for installing the missing modules (notice the missing “install”):

$_ cpan Config::General
$_ cpan Time::HiRes
Reforger.pl has correctly spotted my Wind Stalker belt, and upon correction in said item_cache.cfg, the script is now working finely. It currently processes through 497,664,000 steps and expects a 68 minutes calculation time.

I’ll post at the end to see how far I’ve been in my own calculation from Reforger.pl’s calculation.

[e]: So, reforger.pl has finally calculated the correct combination, and indeed I was pretty much off. Reforger puts me slightly below Hir Cap (8 points less), reduces my Haste by a significant margin, but improves my Mastery significantly. I’ll be following its advice then.

Thank you Korner for the tool!

Last edited by Nryka : 01/22/11 at 10:22 AM.

France Offline
Old 01/22/11, 9:21 AM   #7
Sulphuric
Von Kaiser
 
Sulphuric's Avatar
 
Human Rogue
 
Frostmane (EU)
Started running it now, and yeah, mutiliate* is displaying a 286 minutes caculation time, so pretty drastical step up in timeframe.

But one question though, is it taking the human/gnome expertise racial into account?

Last edited by Sulphuric : 01/22/11 at 6:43 PM.

Norway Offline
Old 01/22/11, 9:36 AM   #8
korner
Von Kaiser
 
korner's Avatar
 
Troll Rogue
 
Азурегос (EU)
Originally Posted by Sulphuric View Post
Started running it now, and yeah, combat is displaying a 286 minutes caculation time, so pretty drastical step up in timeframe.

But one question though, is it taking the human/gnome expertise racial into account?
You need to change the expertise cap value to account racials.
However, wielding different weapon types and having an expertise racial ( having different expertise caps for each hand) is not modelled.

Ukraine Offline
Old 01/22/11, 10:35 AM   #9
atroxes
Von Kaiser
 
Human Rogue
 
Auchindoun (EU)
First of all, it is beyond awesome that you are making a tool that can find the best way to reforge, according to current EP values.

That said, 10-20 minutes is more than fair, but I too am experiencing 210+ minute calculations unfortunately with 16 reforgeable items. I trust you're doing all that you can do optimize the tool, and making it multithreaded would also reduce the time significantly as you said.

Good tool though, been wanting something like it alot

Offline
Old 01/22/11, 10:41 AM   #10
Fae
Von Kaiser
 
Human Rogue
 
Argent Dawn (EU)
First of all, thanks korner for such an amazing tool, my perfectionist heart really loves it. Thank you.

As for racial expertise and using mixed weapon types, there is a dirty but working solution. At least thats my theory, please correct me if I am wrong.

You can use values that Aldriana posted here (please note that those apply for combat) to find out whats value of your expertise once you cap your racial-buffed weapon. Then use this value in <ep_values_post> section, lets say like this:
# EP values for capped stats after the cap.
<ep_values_post>
    exp = 0.73
    hit = 1.03
</ep_values_post>
As this expertise value is lower than any other stat, the script should not stack it too much and go over the cap. Voilá, optimal reforge even with expertise racial.


I'd like to take this opportunity to share one observation I made when experimenting with ShadowCraft. It seems that when assembling various BiS lists, the possibility of the set to be optimally reforged can outweight absolute EP scores of individual items. Purely hypothetical situation, let's say we have [Dispersing Belt] and [Belt of Nefarious Whispers] that are ranked very close to each other, for example with 15 EP difference. But when we are trying to reforge the whole set for example to reach expertise cap as close as possible, the lower ranked belt may end up as a better choice due to "better" stats distribution.

And thats why I think this tool is so great. It will make this kind of evaluations much easier, faster and more precise.

Offline
Old 01/22/11, 10:47 AM   #11
korner
Von Kaiser
 
korner's Avatar
 
Troll Rogue
 
Азурегос (EU)
Originally Posted by Fae View Post
First of all, thanks korner for such an amazing tool, my perfectionist heart really loves it. Thank you.

As for racial expertise and using mixed weapon types, there is a dirty but working solution. At least thats my theory, please correct me if I am wrong.

You can use values that Aldriana posted here (please note that those apply for combat) to find out whats value of your expertise once you cap your racial-buffed weapon. Then use this value in <ep_values_post> section, lets say like this:
# EP values for capped stats after the cap.
<ep_values_post>
    exp = 0.73
    hit = 1.03
</ep_values_post>
As this expertise value is lower than any other stat, the script should not stack it too much and go over the cap. Voilá, optimal reforge even with expertise racial.
Yes, this solution should work - the gap in which this value is valid is quite large (~100 expertise), so the tool would not go over the second cap, and will calculate everything correctly.

Ukraine Offline
Old 01/22/11, 11:25 AM   #12
sp00n
Bald Bull
 
Night Elf Rogue
 
Wrathbringer (EU)
While you cannot directly pull item stats from the armory (or wowhead) for the random enchanted items, you are provided with the suffix id.

This is the link for the normal version of Wind Stalker Leggings of the Windstorm:
<a href="/wow/en/item/63503" data-item="i=63503&e=4126&g0=1755&g1=1763&r=-197&re=144&s=1701511817&d=116">Wind Stalker Leggings of the Windstorm</a>
The "r=-197" part is the suffix id, for which you need a lookup table to identify.

I used this table in my Shadowcraft Tools modification, however I didn't need (nor have) the exact relation between the suffix id and the actual stats (or which suffix id is actually used for which piece of gear).
Note that the suffix ids can be negative, but in the game itself it doesn't matter if you enter them negative or positive (no clue why they did it this way).


suffixIds = {
	["133"] = "stormblast",
	["134"] = "galeburst",
	["135"] = "windflurry",
	["136"] = "zephyr",
	["137"] = "windstorm",
	
	-- No Galebursts?
	["196"] = "windflurry",
	["197"] = "windstorm",
	["198"] = "zephyr",
	["199"] = "stormblast",
	
	["199"] = "stormblast",
	["200"] = "windflurry",
	["201"] = "windstorm",
	["202"] = "zephyr",
	
	["216"] = "stormblast",
	["217"] = "windflurry",
	["218"] = "windstorm",
	["219"] = "zephyr",
	
	["233"] = "stormblast",
	["234"] = "windflurry",
	["235"] = "windstorm",
	["236"] = "zephyr",
}

Stopped Playing

Offline
Old 01/22/11, 12:12 PM   #13
Layta
Glass Joe
 
Human Rogue
 
Deathwing
I'm getting 579 minutes with my rogue (mutilate).

What kind of information do you need to troubleshoot? Or is this working as intended?

I put in my belt stats manually in to the item_cache.cfg and it's chugging along.

i5 2500k @ 4.5GHz is my CPU for reference.

Offline
Old 01/22/11, 12:23 PM   #14
korner
Von Kaiser
 
korner's Avatar
 
Troll Rogue
 
Азурегос (EU)
Originally Posted by Layta View Post
I'm getting 579 minutes with my rogue (mutilate).

What kind of information do you need to troubleshoot? Or is this working as intended?

I put in my belt stats manually in to the item_cache.cfg and it's chugging along.

i5 2500k @ 4.5GHz is my CPU for reference.
I've tried your character (Layta @ Deathwing - Game - World of Warcraft) - Everything is OK, except that you have a lot of gear with crit and expertise. Both these stats reforge to 3 "top" stats as per default want_reforge table (hit, mastery and haste), and that adds a lot to possible variants count.
You can try removing the opportunity to reforge crit to haste, and that will cut the calculation time to 100 minutes.

To do that, use the following config:

<want_reforge>
	hit = mst,hst
	mst = hit
	hst = hit,mst
	exp = hit,mst,hst
	cri = hit,mst
</want_reforge>

PS: sp00n, thanks for the idea - that will be included into the next release.

Ukraine Offline
Old 01/22/11, 12:31 PM   #15
wtrhzrd
Glass Joe
 
Orc Rogue
 
Black Dragonflight
I ran mine for Mutilate and it took ~20 minutes as expected. The only thing I noticed after doing the Reforge was the haste and mastery results came out slightly lower than what was expected from the "Resulting Stats".

Starting stats:
hit 1332
mst 2186
hst 879
exp 188
cri 275

Expected Stats:
hit 1332
mst 2325
hst 808
exp 188
cri 275

Actual Stats:
hit 1332
mst 2300
hst 783

exp 188
cri 275

Not much of a difference, I'm just curious if I'm missing something. Thought I'd throw it out there in case it's a calculation issue with the script or to see if I'm just missing something.

Last edited by wtrhzrd : 01/22/11 at 1:04 PM.

Offline
Closed Thread

Go Back   Elitist Jerks » Class Mechanics » Rogues

Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Optimal Reforger Calculator Reeshet Public Discussion 59 07/15/11 7:34 PM