Jump to content


Photo

WoW Simulator - What do you want?


  • This topic is locked This topic is locked
60 replies to this topic

#21 Hythloday

Hythloday

    Von Kaiser

  • Members
  • 59 posts

Posted 17 December 2008 - 06:17 PM

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 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?

#22 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 17 December 2008 - 08:02 PM

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...)

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?)

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 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).

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.

#23 frmorrison

frmorrison

    Protector

  • Allied Members
  • 11,427 posts

Posted 17 December 2008 - 11:05 PM

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.

#24 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 18 December 2008 - 05:59 AM

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.

#25 SeanDamnit

SeanDamnit

    Piston Honda

  • Members
  • 173 posts

Posted 18 December 2008 - 11:49 PM

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

#26 Hythloday

Hythloday

    Von Kaiser

  • Members
  • 59 posts

Posted 19 December 2008 - 03:47 PM

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.

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.

#27 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 22 December 2008 - 02:21 PM

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?

#28 Redbeard

Redbeard

    Von Kaiser

  • Members
  • 52 posts

Posted 22 December 2008 - 03:30 PM

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 :)

#29 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 22 December 2008 - 04:55 PM

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 , 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).

#30 Redbeard

Redbeard

    Von Kaiser

  • Members
  • 52 posts

Posted 22 December 2008 - 08:51 PM

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

#31 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 23 December 2008 - 02:30 PM

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

I talked to two of the Wowhead developers. They are planning on making more information available via XML feeds like the one I described above, but there are higher priority bug fixes and enhancements they're going to focus on first.

I'm seeing about creating an option on the "Talents" and "Spells" nodes (libraries of talents and spells available to the simulation, not to be confused with the allocation of talent points for a particular character), where you can import a *.dbc file directly from your WoW installation. This action would create a bunch of spells, and a "talent representation"* for each class (i.e., a new balance, feral and resto tree for the druid class model). This cuts WAY down on the maintenence required for each class, since spells and talents can be grabbed directly from the WoW client installation (or PTR client even). In case anyone is interested, here's what the structure of these tables looks like

Talent.dbc - Source Peek Wiki
Spell.dbc - Source Peek Wiki

Things I still need to look up on a site like Wowhead:
1) Anything at all relating to items
2) Anything at all relating to quests
3) Consumables

I like the idea of being able to do a "find as you type" search, so I'll probably cache some abbreviated item data. Being able to grab stuff from the WoW client's itemcache.wdb file would be fantastic too, as I don't want my software to rely on Wowhead working perfectly to function. Of course there will always be the option of adding gear manually

#32 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 29 December 2008 - 03:19 PM

I'm running a little behind my expected alpha test date, due to my wanting to unwind during the holidays :) I expect that by 1/15, you will be able to do the following (kind of in this order):

1) Import a *.dbc file for spells and talents, which is extracted from the WoW game client files using a third party program. At the end of this process, you should have the talents corresponding to that version of the client represented in WoWSimulator, and possibly a library of spells as well. NOTE: I'm definitely going to find a way to have current (and maybe a few old) talent trees already loaded when a new simulation is created.
2) Set the parameters for one or more characters in the program, including class, race, stats, skills, and talents.
3) Set up a simulation of your character/party/raid vs. a target dummy of user-specified armor, resistances, level and health.
4) Run the simulation, which creates things like a combat log and data tables
5) Create some graphs from said data tables

I'm not promising that everything's going to be working perfectly, but it's a start.
I'm looking for 8-12 alpha testers. They should be a mix of different classes, and must have the end goal of helping improve this software (i.e., won't freak out if things are inaccurate or somewhat broken at this very early stage). Please send me a PM through these forums if you're interested.

#33 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 12 January 2009 - 01:01 AM

I haven't posted here in a while, because I have made a major change to the way I'm getting spell/class/talent/mechanics information.

Right now, I pass in several CSV files (comma separated value -- a very human-readable format for tables). I was expecting to just get spell names, ranks, etc... but there's a HUGE amount of information in the *.MPQ files in your /World of Warcraft/Data directory. This includes things like valid target types, proc rates, shared cooldowns, how many times debuffs can be stacked, etc... for all 38,000ish spells in the game (remember, this is for NPCs too).

I'm going back and eliminating anything I sort of 'hard coded', because I want to base as much as possible on this data.

The advantages to you, the users, are two fold:
1) You can rely on any information obtained from the game client to be perfectly accurate.
2) You can rely on any information obtained from the game client to be completely up-to-date.

I'm hoping that there will be very little upkeep for each class, and that users will be able to simply load new game data into the simulator each time their client is patched.

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.


I have looked more closely at what is stored in the WoW data files (your itemcache file in your WDB directory), and finding out what you have in your bank from your own game client is certainly possible. It's not an extremely high priority right now, but there are things I want to get from those file anyway (i.e., items your character has seen, to avoid going to wowhead for every single piece of armor).

#34 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 12 January 2009 - 08:26 PM

Here's an issue I've rehashed so many times that I now lack any perspective whatsoever. I'm afraid I'm missing something obvious, so I would very much appreciate ideas:

I have this object called AttackRotation. Essentially, after a character's attack, the AttackRotation is asked what the character's next action should be. An AttackRotation contains one or more Priority objects.

Here's a little conceptual overview of how these things work in my simulator:

Attacks can do the following things:
1) Tell you the spell associated with them, which tells you the base damage, cost, type of cost (i.e., combo points, energy, or a combination), etc...
2) Tell you when the attack will next be ready (takes cooldown, group cooldown, global cooldown and your character's state into account -- mana, health, etc...).
3) Tell how "safe" it is to perform the action, based on your character's current state (i.e., don't lifetap or SW:D if you're below 20% health). Note that these are things that are risky, in the sense that doing them may get you killed. There will be a parameter somewhere that you can set somewhere in the range of "maverick cowboy pirate ninja" to "scaredy cat". There will be a check somewhere else to make sure you don't actually commit suicide, but this is where you'd make sure you don't lifetap yourself to 4%.
4) Tell how "smart" it is to perform the action, based on your character's current state (i.e., don't start casting something if you have a debuff that will stun you before you get the spell off). Note that this is NOT designed to help you "pick the spell", but rather to avoid doing something that, while normally appropriate, isn't because of some special circumstances.

A Priority can do the following things:
1) Tells you how well an Attack satiefies the Priority. For example, a shadowpriest may have a priority like KeepMiseryUpPriority, which would be designed to reapply misery to the current target if it is not up, or has less than 3 seconds left. In this case, it would tell you that Shadow Word: Pain, Mind Flay and Vampiric Touch all will reapply Misery. The priority will tell you that the previously mentioned three Attacks all applly Misery equally well.
2) Tells you the Priority's "urgency". In the above example, if you have just applied Misery to your target, it's not all that important that you consider reapplying it again. However, a priority like DoMaximumDamagePriority will usually have the same "urgency" all the time.

An AttackRotation can do the following things:
1) Tell you what the highest Priority at any given moment is(this is simply sorting by the "urgency" mentioned in point 2 above)
2) Tell you which action to take now*. In the above example regarding the KeepMiseryUpPriority, if misery is about to fade off the current target, KeepMiseryUpPriority would likely be the highest (returning Attacks: SW:P, Mind Flay and VT). The next priority might be DoMaximumDamagePriority which would essentially pick one from the three Attacks. The AttackRotation now knows to do that attack next.

* This may actually end up being "which action to take next".


So, the TL;DR is:
* A Priority has some criterion (i.e., "Keep your threat at 95% of the tank's, or below", and it looks at your current situation (taking you, your party, your enemy and the phase of the moon into account) and tells you based on many factors how important it is.
* An AttackRotation starts with all your available Attack, and, in order of importance, goes to each of its Prioritys and asks which one is best.
* Each Priority then asks each Attack how "safe" and "smart" it is, given your character's state, your party's state, your enemy's state, etc..., and makes sure that it's within your specified "riskyness" level. The Priority then looks at how well each of the provided Attacks satisfies the intention of the priority, and passes the group of best Attack choices to the next highest Priority.


SO....


Can you guys think over how you decide which is the spell to cast (including NOT casting anything) at any given moment and time, and let me know if it's similar to the concepts above? If you can find a scenario that couldn't be modeled by the above decision process, please post it here so we can figure something else out.

A good way to do this is to go through the following thought process:

Imagine your grandmother is sitting at your computer, controlling your character, but she doesn't know a thing about WoW. You must explain to her exactly what to do before she starts fighting, but once she starts you can't say anything at all. You may assume she can make very complicated decisions on the fly, she knows nearly everything about the state of her character and her party/raid's characters at every moment, and she has complete information on all properties of all spells, talents, items, etc...

Thanks!

#35 Docjowles

Docjowles

    Mr. Sandman

  • Members
  • 5,620 posts

Posted 12 January 2009 - 11:58 PM

At least as a frostfire mage, that is a reasonably complete view of my decision making process. To crib from Manly's epic treatise:

The damage is extremely streaky and bursty, mostly due to FFB crit multiplier and hot streak. This is also why Mirror Image is more interesting for that spec -- it allows you to work around streaky threat and 'normalize' it.

Generally speaking, the spec works with priorities. Here is what I use, as I point out in the points of contention, I am not 100% sure on them, although remain confident this is accurate.

Hot Streak pyroblast > Living Bomb > scorch refresh > ffb

However, this is only the main outline. Many improvements can be done. Amongst other things, Living Bomb explosion consumes a combustion charge, so you want to make sure to avoid it. You can always play around the timing of hot streak. There is no good reason to cast it right away. As such, if the hot streak mechanics allow you to safely cast living bomb / scorch -> hot streak, I would advocate it so as to avoid ignite munching. Of course, this assumes either living bomb or scorch was due for a refresh, otherwise I would just take the risk and hope ignite munching isn't too bad.


His priority queue seems like it would be easily modeled by your system. That would get you about 90% of the way to modeling a tank and spank fight, with the rest being cooldown management.

One of the trickier things I can think of offhand is mirror image, as Manly alludes to. It does a small but noticeable amount of damage over the course of a fight, so if you are trying to go balls-out, you want to pop it during your all-cooldowns-blown burn phase. However, on some fights, mages may choose to keep it in reserve as a defense mechanism (you pulled aggro after Noth blinked) or not use it at all (they like to randomly shoot at Gluth zombies). Even more aggravating, if you are very close to or above the tank in threat, popping MI will cause the images to instantly pull aggro, potentially doing Bad Things (think Malygos breath).

It's an edge case, but the edge cases are often the most interesting and useful to model.

#36 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 13 January 2009 - 01:02 AM

One of the trickier things I can think of offhand is mirror image, as Manly alludes to. It does a small but noticeable amount of damage over the course of a fight, so if you are trying to go balls-out, you want to pop it during your all-cooldowns-blown burn phase. However, on some fights, mages may choose to keep it in reserve as a defense mechanism (you pulled aggro after Noth blinked) or not use it at all (they like to randomly shoot at Gluth zombies). Even more aggravating, if you are very close to or above the tank in threat, popping MI will cause the images to instantly pull aggro, potentially doing Bad Things (think Malygos breath).

It's an edge case, but the edge cases are often the most interesting and useful to model.


It's far more complicated to model non-min/max behavior, but you could have a priority that would pop MI if you pull aggro. It would be interesting to see if you could do more damage by staying below the tank in threat and using MI for extra damage during a safer time (i.e., later in the fight).

Here's an issue that makes priorities a little more complicated:

You have ability A that's cooled down now, and ability B that cools down in 2 seconds. B does 1.5 times the damage of A. Do you cast A or wait for B? What information do you need about A and B to be able to answer this question?

#37 Redbeard

Redbeard

    Von Kaiser

  • Members
  • 52 posts

Posted 13 January 2009 - 10:43 AM

Human perception and experience always include the timeframe in these decisions. It's like Rawr with the fight length parameter, but it is relevant in all decision making points. This includes CD juggling, debuff times and estimated fight length left, perhaps also estimated time to live with known or guessed dmg-in.

Possibly make time-states for which you calculate weights with Priority and Attack parameters. Either that or have the timeframe as a priority or an attribute of a priority. The time-state with the heaviest weight should then be the winner of that rounds decision making.

In the above example you need to know whether you have time or resources (mana, rage, energy) to do something else in addition to A that ends up being more powerful than B. The goal I think is to gain maximum effect for desired action (dps, threat, heal) in the remaining time by utilizing all your resources to the fullest.

#38 Ullas

Ullas

    I hate springtime

  • Members
  • 41 posts

Posted 13 January 2009 - 02:34 PM

In the above example you need to know whether you have time or resources (mana, rage, energy) to do something else in addition to A that ends up being more powerful than B. The goal I think is to gain maximum effect for desired action (dps, threat, heal) in the remaining time by utilizing all your resources to the fullest.

This is clearly the case, but calculating the objective function (i.e., damage, threat, healing done) for every possible scenario is unacceptable. I'm trying to model the way a human makes decisions anyway, and we certainly don't do this type of evaluation while fighting.

#39 Marthisdil

Marthisdil

    Banned

  • Banned
  • 17 posts

Posted 13 January 2009 - 03:59 PM

I would think that the best, and possibly easiest way, would be to allow someone to set their abilities in a list for their priority.

Something simple like:

<Ability A>
<Ability B>
<Ability C>
...
<Ability G>

Or whatever....then have the simulation taking into account mana, regen, etc, etc...and start at the top "Is Ability A available?" If yes, then do <Ability A>, then go down the list. If the cooldown, or duration of the ability isn't up yet, then the answer would be "no" and it would go down to the next ability.

Cycling through these until OOM or the "fight" is "over".

it's the best way I can think - with an Affliction spec, it's now us Warlocks do things - start with the initial series of spells, then refresh things as they come up, rinse, repeat.

You can display associated threat levels after each rotation, etc, if you know the values....but your comment about how we don't do that type of evaluation (unless I misunderstand) while fighting, isn't wholly true. Something weird happens, and I find I'm about to take aggro from the tank (or whatever), I'm changing my rotation to lower my threat (as an example)....

My musings.

#40 dedmonwakeen

dedmonwakeen

    Bald Bull

  • Members
  • 1,302 posts

Posted 13 January 2009 - 04:02 PM

Ullas,

I fail to grasp why the priority system has to be so complicated? Are you attempting to avoid creating custom conditionals for a subset of player abilities? In simulationcraft there is a class hierarchy to model player actions: Action, Spell/Attack, RogueAttack/ShamanAttack/ShamanSpell/etc, Sinister Strike, Rupture, Stormstrike, Lightning Bolt, etc. Each level represents a place to code more specific functionality and options. Yes, there are some actions that require sophisticated conditional logic, but most are pretty straight-forward.

I made a very early design decision in simulationcraft: I accepted the fact that I would not be able to own this code forever. I accepted the fact that I would likely need some help with the coding and a TON of help with oversight. This means that readability had to be my number one goal. It has cost me: It has hurt my performance. It has limited my flexibility. In some rare cases I've accepted a model that is not quite 100% accurate.

What am I trying to say? Don't create something so complicated that you scare off people who love WoW, but only have limited coding experience. Some of the most helpful contributions from the EJ community to simulationcraft have not been in the form of new code, but rather code reviews.

(edited for snarkiness)




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users