Elitist Jerks
Register
Blogs
Forums


Go Back   Elitist Jerks » Public Discussion » User Interface and AddOns

Closed Thread
 
LinkBack Thread Tools
Old 12/15/08, 7:16 AM   #16
Bethink
Von Kaiser
 
Bethink's Avatar
 
Blood Elf Warlock
 
Nera'thor (EU)
I like this proposal.

With the increased dynamics and interdependencies in WoW 3.0, simulation is increasingly becoming a "must have" for accurate results. I believe that numerous spreadsheets that have been providing good use to us in WoW 2.0 are quickly approaching their limit.

The main problem with existing simulation tools is that some of the most interesting questions cannot be easily asked in a declarative way. Instead, they are dependent on changing the strategy of individual units, which generally requires coding. Consider the following question for an Affliction lock: When Nightfall procs (making the next Shadow Bolt instant), is it better DPS-wise to cast the Shadow Bolt (and drop the rotation, possibly missing a Haunt renewal and dropping Corruption of the target)? Or is it better to maintain the rotation until Shadow Bolt is cast as a natural filler spell (possibly missing the Nightfall proc)? With a simulator, questions like these are easily answered.

Since I have a deep Java background (and only limited experience with C++), I went ahead last weekend and implemented a combat simulator for affliction warlocks. It is personal throw-away code, but already sufficient to answer quesetions like the one phrased above. I have no plans of productizing this simulator. However, once you get your framework going, I would be happy to contribute modelling code for affliction warlocks.


As mentioned above, I do not buy into declarative parameterization of the simulation. Is is a good starter, but only that. Interesting questions often require changing the actual code that controls the actions/spells of the the units involved. In my personal simulator, this aspect is implicitly adressed since I control the code myself. In a more productized approach, I would suggest looking into the use of scripting to control the units and their actions, thus allowing users to customize unit behavior in a flexible way. Lua would be a natural choice as a scripting language since many World of Warcraft players are familiar with it. Incidentally, I have been working on a project called JNLua which provides a type-safe integration of Lua for Java, including full reflexive access to Java objects from Lua. If you are going the down the scripting path, you may want to have a look at it.

Good luck with the project and keep us posted

Switzerland Offline
Old 12/15/08, 9:58 AM   #17
Ullas
I hate springtime
 
Ullas's Avatar
 
Draenei Shaman
 
Azjol-Nerub
Originally Posted by Bethink View Post
As mentioned above, I do not buy into declarative parameterization of the simulation. Is is a good starter, but only that. Interesting questions often require changing the actual code that controls the actions/spells of the the units involved. In my personal simulator, this aspect is implicitly adressed since I control the code myself. In a more productized approach, I would suggest looking into the use of scripting to control the units and their actions, thus allowing users to customize unit behavior in a flexible way. Lua would be a natural choice as a scripting language since many World of Warcraft players are familiar with it. Incidentally, I have been working on a project called JNLua which provides a type-safe integration of Lua for Java, including full reflexive access to Java objects from Lua. If you are going the down the scripting path, you may want to have a look at it.

Good luck with the project and keep us posted
I don't see any reason to use LUA for scripting. Right now I'm working towards allowing custom code to be written in Java. What I have completed is the necessary code for "journaling", meaning you click a "record actions" button, and the equivalent actions are written to a specified text file as Java code. Thus, you could record some process (setting up of a simulation or something), and then have a kind of macro that you can adjust and play back. The fact that this macro is in its self a java file means you can easily integrate with just about anything else.

I would prefer to keep everything consistent (i.e., not using multiple programming languages) to keep as easy a learning curve as possible for potential contributors and developers.

Offline
Old 12/15/08, 12:53 PM   #18
Bethink
Von Kaiser
 
Bethink's Avatar
 
Blood Elf Warlock
 
Nera'thor (EU)
Originally Posted by Ullas View Post
I don't see any reason to use LUA for scripting. Right now I'm working towards allowing custom code to be written in Java.
I personally do not mind writing Java code. Potential users of the non-programming kind might

Will there be support for Javassist-style runtime compilation of the custom Java code?

Switzerland Offline
Old 12/15/08, 1:18 PM   #19
Ullas
I hate springtime
 
Ullas's Avatar
 
Draenei Shaman
 
Azjol-Nerub
Originally Posted by Bethink View Post
I personally do not mind writing Java code. Potential users of the non-programming kind might

Will there be support for Javassist-style runtime compilation of the custom Java code?
Lua is considerably more obscure than Java, especially now that intro programming courses are given in most universities for anyone in a technical field (math, science, engineering). Anyone who knows C++ could probably make the small jump to java easily, especially if I make one or more tutorials (which I plan to do anyway, just to demonstrate the features of the API).

I'm not sure I want to get into Javaassist, as I always want to be able to rely on the integrity of a default set of mechanics. Instead of allowing people to modify one set of mechanics (requires modification of java bytecode at runtime), you may select one "representation" to use when running a simulation. There will most likely be one default representation (not modifiable), and the ability to create additional custom representations that override some or all of the default representation. I (or other developers) may release a new version of the software every time major mechanics change, and the default representation will be updated as such.

You could help me a lot by answering the following question:
What, specifically, would you want to write custom java code for? How complicated would it be, and what other types of objects would you want to be abl e to listen to and/or access (i.e., listening to target health, # of debuffs on target, etc...)?

Also
I'm looking for some help in retreval of information relating to WoW mechanics. For example, I was looking around for a table of base stats vs. level for each class/race. Apparently, such a table does not yet exist, but the information should be relatively easy to obtain. Without this, it's difficult to do things like allow leveling players to select the most effective quest rewards.

Last edited by Ullas : 12/15/08 at 1:25 PM.

Offline
Old 12/16/08, 5:07 PM   #20
Ullas
I hate springtime
 
Ullas's Avatar
 
Draenei Shaman
 
Azjol-Nerub
Hi all,

I finally have something to show you guys. I have added a screenshot of the user-interface to the first post. Obviously it's still a work in progress, but hopefully it will give you an idea of what it will look like, and how you might use it.

The pane in the bottom will have one tab for the program output (println), and another tab for the combat log of the simulation. The pane in the middle will show a variety of things (more tabs), including tables, plots, and web content.

I know it doesn't seem like much, but for a project like this there's a whole lot to do before you can do anything of interest via the gui. I still expect to be able to give you guys something to play around with between christmas and new years. You most likely will have to plug your stats in manually (as opposed to linking to armory, picking from a list of gear, etc...), and attack a stationary opponent who doesn't fight back. My aim is to get you guys testing the hell out of it while I'm working on the next step.

Offline
Old 12/17/08, 1:17 PM   #21
Hythloday
Von Kaiser
 
Human Paladin
 
Ghostlands (EU)
Here are questions I might want to use your tool to answer for me.

Given my existing gear (on my character and in my bank), what's the best spec for me? What are the two best specs that will give me the highest average DPS? I'm a full-time PVE DPSer who wants to use the dual-spec feature optimally.

What's the single highest average DPS spec? I respec to PVP during the weekends, but I'm interested in performing optimally in a DPS role the rest of the time.

What's the best gear for me (out of a selection of gear) given a specified spec? I'm a PVE healer/tank who respecs to PVP DPS during the weekends. I have some rep gear, some offspec PVE items, and my PVP gear. Our raid has too many healers tonight so I'm going to be DPSing in my PVP spec and want to do it optimally.

Given a guild list, including alts, what's the highest raid DPS possible for a particular fight? I'm a raid leader working on a hard progression fight who wants to give us the best chance of success. However, asking a Mage to respec from Frost to Fire is a very different question than asking a Paladin to respec from Ret to Holy; and in the same way a rogue who has gear for Combat might not have gear for Mutilate. I should be able to arbitrarily lock out certain specs.

What allocation of an item that's just dropped is the optimal one for raid DPS? I should be able to take into account scenarios like: I have a hunter and a death knight, both with the Ebon Blade 2H sword. The [Betrayer of Humanity] drops. Obviously this is a bigger upgrade for the death knight than the hunter. However, the guild bank has the mats available to craft the Titansteel Destroyer. What's better from a raid DPS perspective, giving the crafted weapon to the death knight and the axe to the hunter, or giving the axe to the death knight?

What single spec brings the greatest increase in raid DPS? I'm a guild master assessing his recruitment needs. what spec should I be recruiting, based on a number of players less than 25, to bring the greatest raid DPS benefit? Similar use-cases: I have a member who wants to reroll or respec. How much of a loss of raid DPS does that imply?

Offline
Old 12/17/08, 3:02 PM   #22
Ullas
I hate springtime
 
Ullas's Avatar
 
Draenei Shaman
 
Azjol-Nerub
Originally Posted by Hythloday View Post
Here are questions I might want to use your tool to answer for me.

Given my existing gear (on my character and in my bank), what's the best spec for me? What are the two best specs that will give me the highest average DPS? I'm a full-time PVE DPSer who wants to use the dual-spec feature optimally.
What's the single highest average DPS spec? I respec to PVP during the weekends, but I'm interested in performing optimally in a DPS role the rest of the time.

What's the best gear for me (out of a selection of gear) given a specified spec? I'm a PVE healer/tank who respecs to PVP DPS during the weekends. I have some rep gear, some offspec PVE items, and my PVP gear. Our raid has too many healers tonight so I'm going to be DPSing in my PVP spec and want to do it optimally.
Although this is certainly possible once we get the gear into the program, figuring out what's in your bank without requiring you to manually add each item (from a list of items) is difficult/impossible. Even if one day you can see what's in your bank via armory, it will certainly be password protected. I have no intention of providing a means to access the password-protected sections of armory (guild bank, calendar, etc...), just because that's substantially more complicated than XML parsing (which is pretty much all that's required for just getting things like items, character data, etc...)

Originally Posted by Hythloday View Post
Given a guild list, including alts, what's the highest raid DPS possible for a particular fight? I'm a raid leader working on a hard progression fight who wants to give us the best chance of success. However, asking a Mage to respec from Frost to Fire is a very different question than asking a Paladin to respec from Ret to Holy; and in the same way a rogue who has gear for Combat might not have gear for Mutilate. I should be able to arbitrarily lock out certain specs.
I don't have an answer for you here yet. This type of thing is easy if I design a specific "main/alt raid optimizer" action, but I would rather have a more elegant solution that is more broadly useful (i.e., you have two warriors, both with tanking and dps gear, but you only need one of them to. Which one should tank, given the nature of the fight? Maybe one of them has an enhancement shaman alt, and the other has a mage alt. What's the optimal setup?)

Originally Posted by Hythloday View Post
What allocation of an item that's just dropped is the optimal one for raid DPS? I should be able to take into account scenarios like: I have a hunter and a death knight, both with the Ebon Blade 2H sword. The [Betrayer of Humanity] drops. Obviously this is a bigger upgrade for the death knight than the hunter. However, the guild bank has the mats available to craft the Titansteel Destroyer. What's better from a raid DPS perspective, giving the crafted weapon to the death knight and the axe to the hunter, or giving the axe to the death knight?
Many people have asked for this. This feature will be available very soon after I release the armory module (looking at mid to end of January for that).

Originally Posted by Hythloday View Post
What single spec brings the greatest increase in raid DPS? I'm a guild master assessing his recruitment needs. what spec should I be recruiting, based on a number of players less than 25, to bring the greatest raid DPS benefit? Similar use-cases: I have a member who wants to reroll or respec. How much of a loss of raid DPS does that imply?
This is a complicated problem, and if you can tell me exactly how you would methodically figure it out by creating hypothetical WoW encounters and comparing results, I can implement it. This is a simple matter of finding the increase in dps per unit of each stat ( the "value" of each stat to that character), and then computing the total value of an item to each character. That being said, I have no idea how to figure this type of thing out for a healing class, other than by picking some arbitrary metric of performance like throughput or regen.

For example:
Do you test each character independantly or in a raid or both? Who's in their party? What buffs do they have? What is the nature of the boss fight? Do you take raid maintenence into account (i.e., a melee class often needs more healer attention than a ranged class)? Maybe combat rogues perform better than either destruction warlocks and spriests, but the spriest and warlock together do better than both rogues?

I love the discussion that's going on here. You all are steering me towards providing the WoW community with something really cool.

Offline
Old 12/17/08, 6:05 PM   #23
 frmorrison
Protector
 
frmorrison's Avatar
 
Ashstrike
Human Paladin
 
No WoW Account
Originally Posted by Hythloday View Post
Given my existing gear (on my character and in my bank), what's the best spec for me? What are the two best specs that will give me the highest average DPS? I'm a full-time PVE DPSer who wants to use the dual-spec feature optimally.

What's the single highest average DPS spec?

What's the best gear for me (out of a selection of gear) given a specified spec?
While Ullas's tool may answer most of these questions, but at least for now Rawr.Ret can answer all those questions pretty well.

Rawr is a decent comparison tool once Ullas starts adding class spells in.

United States Offline
Old 12/18/08, 12:59 AM   #24
Ullas
I hate springtime
 
Ullas's Avatar
 
Draenei Shaman
 
Azjol-Nerub
Originally Posted by frmorrison View Post
While Ullas's tool may answer most of these questions, but at least for now Rawr.Ret can answer all those questions pretty well.

Rawr is a decent comparison tool once Ullas starts adding class spells in.
Not to bash Rawr or anything, but it can only offer suggestions as to what upgrades can be found out of a list of all items available in certain categories of dungeons. What he's asking is, out of the gear he has on his character and in his bank, what should he wear. To the best of my knowlege, there's no way to filter the gear that Rawr offers as selections, other than by dungeon.

Offline
Old 12/18/08, 6:49 PM   #25
SeanDamnit
Piston Honda
 
SeanDamnit's Avatar
 
Draenei Paladin
 
Ner'zhul
Originally Posted by Ullas View Post
Not to bash Rawr or anything, but it can only offer suggestions as to what upgrades can be found out of a list of all items available in certain categories of dungeons. What he's asking is, out of the gear he has on his character and in his bank, what should he wear. To the best of my knowlege, there's no way to filter the gear that Rawr offers as selections, other than by dungeon.
You can actually select what gear you own in Rawr and use the optimizer to make the best selections for you

Card carrying member of the Inapropriately in Love with Hilary Duff Society.

"Yeah, well, if we could all get what we want I would be eating dinner out of Hilary Duff's skull right now" - Salabesh

Offline
Old 12/19/08, 10:47 AM   #26
Hythloday
Von Kaiser
 
Human Paladin
 
Ghostlands (EU)
It's relatively simple to write a small addon that will write out what's in your bank into a SavedVariable file. Once this is done you can either provide an importer for that file or just allow a plugin (or whatever Netbeans calls them - modules?) to do so. Given that what you're writing is going to end up as more of a platform than a complete and closed program, I'm more interested in making sure that I can get at the data than that you already provide the functionality to do so.

On alt optimisation, your way of thinking about it is probably the way I'd choose to solve it too. That said, I couldn't think of a use-case for the more elegant solution, so I just wrote the simpler one.

I think you have misread my last quoted use-case. Specifically, if I'm in charge of recruitment, and I have 25 players who show up for 100% of my raids, and one leaves, I have a spot for recruitment. I'd like to use your tool to evaluate what I should be recruiting, i.e. what the raid DPS increases of each class - with nothing else changing in my raid - are.

Originally Posted by frmorrison View Post
While Ullas's tool may answer most of these questions, but at least for now Rawr.Ret can answer all those questions pretty well.
Rawr goes a long way to answering the question but doesn't include whole-raid optimisation. For example, "the single highest average DPS spec" for a deathknight in a caster-heavy raid but no moonkin/warlock (Unholy) is *radically* different for a deathknight in a melee-heavy raid with no hunters/enh shamans (Blood, ceteris paribus).

For Ret specifically, I agree, it's most of the way there, but that's mainly down to the single-tree nature of Paladin DPS than any essential completeness of Rawr.

Offline
Old 12/22/08, 9:21 AM   #27
Ullas
I hate springtime
 
Ullas's Avatar
 
Draenei Shaman
 
Azjol-Nerub
I would still like an answer as to specifically, what people would like to be runtime-customizable via their own java code. Do they want to experiment with new ideas for talents? Spells? Relationships between stats (i.e., changing the attack power to crit ratio)?

Making everything conducive to using custom code will make development take a bit longer. Right now I'm making it so you can import your own talent trees, eventually maybe there will be a wizard or something. I'm going to make some of the combat-related parameters adjustable, but the fundamental way in which they will work (the nature of dodge, block, miss, parry, crit, etc...) will be somewhat hardcoded.

Question to you guys
The best way I can think of implementing talents, buffs, etc... is to have a bunch of keys like PROP_STRENGTH, PROP_CHANCE_TO_HIT_WITH_OFFHAND, etc..., and express all buffs, items, talents and on-use effects (i.e., trinkets) in terms of these keys. It's not so easy for users to add their own brand new spells at runtime, but it makes the creation of talent tree files much more straight forward (only certain parameters need to be stored in the file, as opposed to serializing the behavior of the talent its self).

A fantastic alternative would be pulling spell data from some online database. However, I have yet to find a site like wowguru, that allows spell data to be accessed by third party programs (wowhead provides easy access to items only). If such a database exists for spells, could someone point me in its direction?

Offline
Old 12/22/08, 10:30 AM   #28
Redbeard
Von Kaiser
 
Troll Mage
 
Bloodhoof (EU)
What do you mean by 'easy access to items only' regarding Wowhead? Spells, their names and descriptions are all in Wowhead DB. Accessing them in a sane manner would require some crawling probably. Mechanics must be hard-coded or the metadata provided by you anyway, but for complete listings and descriptions Wowhead DB is available.

For example: Mage - Skills - World of Warcraft produces a list of max-rank mage abilities. In that pages source code you have:
<div class="listview-void"><a href="/?spell=130">Slow Fall</a> <a href="/?spell=475">Remove Curse....
Taking Slow Fall as an example, if you paste "?spell=130" after "http://www.wowhead.com/" , you'll get to slow fall spell page and can get more specifics from there. (admittedly slow fall isn't a prime example for a combat mechanic simulator - but that's the general idea)

Using the filters at Wowhead can land you at the right data quickly, but the max output is 200 per page so to avoid page navigation with filters you could define the starting filter's in a way it provides the correct data.

Sorry if this wasn't what you meant with the easy access part

Offline
Old 12/22/08, 11:55 AM   #29
Ullas
I hate springtime
 
Ullas's Avatar
 
Draenei Shaman
 
Azjol-Nerub
Originally Posted by Redbeard View Post
What do you mean by 'easy access to items only' regarding Wowhead? Spells, their names and descriptions are all in Wowhead DB. Accessing them in a sane manner would require some crawling probably. Mechanics must be hard-coded or the metadata provided by you anyway, but for complete listings and descriptions Wowhead DB is available.

For example: Mage - Skills - World of Warcraft produces a list of max-rank mage abilities. In that pages source code you have:
<div class="listview-void"><a href="/?spell=130">Slow Fall</a> <a href="/?spell=475">Remove Curse....
Taking Slow Fall as an example, if you paste "?spell=130" after "http://www.wowhead.com/" , you'll get to slow fall spell page and can get more specifics from there. (admittedly slow fall isn't a prime example for a combat mechanic simulator - but that's the general idea)

Using the filters at Wowhead can land you at the right data quickly, but the max output is 200 per page so to avoid page navigation with filters you could define the starting filter's in a way it provides the correct data.

Sorry if this wasn't what you meant with the easy access part
Hi Redbeard,

Maybe I'm just lazy when it comes to trying to get data from sites like wowhead, but here's what I would want them to do:

For an item like [Skin of Shadow], you can simply add "&xml" to the end of the link, and you get something like this:
http://www.wowhead.com/?item=12753&xml
<wowhead>
   <item id="12753">
      <name>Skin of Shadow</name>
      <level>1</level>
      <quality id="2">Uncommon</quality>
      <class id="12">Quest</class>
      <subclass id="0"></subclass>
      <icon displayId="19316">INV_Misc_ShadowEgg</icon>
      <inventorySlot id="0"/>
      <htmlTooltip>
         <b class="q2">Skin of Shadow</b><br />Binds when picked up
      </htmlTooltip>
      <json>
         id:12753,name:'5Skin of Shadow',level:1,slot:0,source:[2],sourcemore:[{z:2057}],classs:12,subclass:0
      </json> 
      <link>http://www.wowhead.com/?item=12753</link>
   </item>
</wowhead>
Because I can pass this URL into Java's XML reader just as if it's a locally stored XML file on the user's hard drive, grabbing item data is very easy. Getting character data from armory is done very similarly, so that's no big deal. Unfortunately, wowhead seems to only support this XML stream for items, not spells or talents. At this point, it looks as if I'll have to code up things like (talent x requires 5 points in talent y), and if I'm doing that already, I may as well implement the talents themselves as well.

Spells are what will really be a pain, just due to the sheer quantity/dissimilarity of them, even just in level 80 dungeons and raids. Unless I can find an XML stream or an easy to access database (read: does not involve HTML parsing) of spells, I will likely provide some essential basics and an easy way for users to add more spells or buffs (not involving coding, maybe another wizard).

Last edited by Ullas : 12/22/08 at 12:11 PM.

Offline
Old 12/22/08, 3:51 PM   #30
Redbeard
Von Kaiser
 
Troll Mage
 
Bloodhoof (EU)
Hi Ullas - I think it would be fairly simple for Wowhead to implement that per your request, especially if they already have that for items. Worth a shot at least I guess

Offline
Closed Thread

Go Back   Elitist Jerks » Public Discussion » User Interface and AddOns

Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
EnhSim, DPS simulator tukez Shamans 2763 11/30/09 11:45 AM
DPS Simulator Grim13 Warriors 133 11/12/08 7:20 AM
[Mage] DPS Simulator zurmagus Class Mechanics 41 11/08/07 9:11 PM