Simulationcraft - Feral rotation discussion and script
Moderator: Forum Administrators
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Simulationcraft - Feral rotation discussion and script
Can you elaborate on the pre-conditioning? Are you suggesting we have several scripts depending on the talent combination, or a way to modify the script the user sees based on the talents using some conditionals in the script?
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Simulationcraft - Feral rotation discussion and script
BTW, I just looked at the action list you posted. If I simply removed two of the tier 4 talents that are not sued as often, Force of Nature and Incarnation, it would save at least 11 lines in the script. There are some changes I would make to that based on the work that has gone into the current BiS script, particularly ones that deal with some of the difficulties we see in game executing the script.
Re: Simulationcraft - Feral rotation discussion and script
Well there are two general ways to adapt a action list to the user in SimC:Leafkiller wrote:Can you elaborate on the pre-conditioning? Are you suggesting we have several scripts depending on the talent combination, or a way to modify the script the user sees based on the talents using some conditionals in the script?
1) When importing a Character ( let's say from the armory ), you parse his Class, Spec, Talents, Glyphs, Race, Level, and build a custom action list tailored to that setup. Easily done with some if / else statements in eg. druid_t::init_actions().
The advantage is that you have a small and efficient action list for exactly the things you need.
2) Don't assume any specializations when creating the action list ( besides Class and Specialization maybe ) and add run-time conditionals to the action list:
For example something like this:
actions.single+=/unleash_elements,if=talent.unleashed_fury.enabled
or
actions += /blood_fury,if=race=orc
This makes it much easier if you want to change eg. talents manually in the input text after import, but bloats the action list massively.
We haven't really decided on a special way to go, depends on the class developer ( I'd say 7-8 out of ten class_t::init_actions() functions are horribly done, outdated or both anyway ).
Just have a look at http://code.google.com/p/simulationcraf ... t.cpp#4815 that's one of the better maintained ( at least for shadow ) ones, with a lot of preconditioning.
Re: Simulationcraft - Feral rotation discussion and script
Maybe simc could add support for a direct talent query, this way the entire statement can be dropped from the action list (although it's only a very minor optimization):Caltiom wrote:actions.single+=/unleash_elements,if=talent.unleashed_fury.enabled
Code: Select all
/unleash_elements,talent=unleashed_fury
Edgy (Suramar) / Catus: Feral Simulator / Apparatus: Paper Doll / Focus: Hearthstone Simulator / Hearthstone Calculator
GitHub: WarBase / WarDBC / WarKit / Catus 2
GitHub: WarBase / WarDBC / WarKit / Catus 2
Re: Simulationcraft - Feral rotation discussion and script
@Raffy: No idea what you're trying to say.
I'll look at that code a little bit and maybe see what I could do along those lines.
Implying there is 10 classesCaltiom wrote:( I'd say 7-8 out of ten class_t::init_actions() functions are horribly done, outdated or both anyway ).

I'll look at that code a little bit and maybe see what I could do along those lines.
Re: Simulationcraft - Feral rotation discussion and script
Maybe my simc expression parser is just shitty but, when I encounter an if-expression, I parse it into a condition object that I can evaluate to a boolean, and then add it to my action list as the pair: <Spell, IfCond> Then during simulation evaluation, for each <Spell,IfCond> if (IfCond) do Spell.aggixx wrote:@Raffy: No idea what you're trying to say.
Whereas, if I knew, at the time of parsing, that one of the conditions involves a constant (a talent), I could straight up drop the condition from my action list. Now that I write this, I can probably just add this feature to my own code w/o a script modification.
I was just suggesting, that it might be more clearly stated, that if the entire action depends on some talent, you could pull the talent out of the if-expression so it could be tested directly. Or, maybe as a more flexible option, something like:
Code: Select all
actions+=/spell,require=talent.unleashed_fury.enabled,if=blah.blah
Edgy (Suramar) / Catus: Feral Simulator / Apparatus: Paper Doll / Focus: Hearthstone Simulator / Hearthstone Calculator
GitHub: WarBase / WarDBC / WarKit / Catus 2
GitHub: WarBase / WarDBC / WarKit / Catus 2
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Simulationcraft - Feral rotation discussion and script
Thanks for listing the options for customizing the script at import time. It is very helpful.
The shadow priest code has broken down script generation to a very detailed level, literally adding specific actions depending on different conditionals, which is more fine-grained than what I am thinking of - simply breaking what we have now into four scripts.
In each of the key dps tiers for ferals, tier 4 and tier 6, two of the talents are pretty similar for what we model in the rotation, and one talent is different. For tier 4, Soul of the Forest (SotF) changes the rotation significantly while Force of Nature (FoN) and Incarnation (Inc) are pretty similar (Inc changes the filler we use to Ravage! from Shred while it is active, but the actions are identical other than the spell being cast). In tier 6, Dream of Cenarius (DoC) has a very complex rotation, while Nature's Vigil (NV) and Heart of the Wild (HotW) have very similar rotations that are simpler than the DoC rotation.
We end up with a 2x2 matrix for rotations to support (which is better than trying to deal with a 3x3 matrix or 9 rotations):
This breakdown will make the rotations a user sees much simpler and will allow us to focus on optimizing each of the four rotations separately without worrying about side effects. It is a very common design pattern for managing complexity in state machines.
The shadow priest code has broken down script generation to a very detailed level, literally adding specific actions depending on different conditionals, which is more fine-grained than what I am thinking of - simply breaking what we have now into four scripts.
In each of the key dps tiers for ferals, tier 4 and tier 6, two of the talents are pretty similar for what we model in the rotation, and one talent is different. For tier 4, Soul of the Forest (SotF) changes the rotation significantly while Force of Nature (FoN) and Incarnation (Inc) are pretty similar (Inc changes the filler we use to Ravage! from Shred while it is active, but the actions are identical other than the spell being cast). In tier 6, Dream of Cenarius (DoC) has a very complex rotation, while Nature's Vigil (NV) and Heart of the Wild (HotW) have very similar rotations that are simpler than the DoC rotation.
We end up with a 2x2 matrix for rotations to support (which is better than trying to deal with a 3x3 matrix or 9 rotations):
Code: Select all
SotF+HotW/NV Inc/FoN+HotW/NV
SotF+DoC Inc/FoN+DoC
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Simulationcraft - Feral rotation discussion and script
@Raffy - I don't think we are going to get changes to the simc rotation at that level since what they have works.
On a separate but related note (and related to my last post), the complexity we are dealing with for the feral rotation is more than is typical for a spec. It is closer to the complexity for modeling the different specs in the pure classes. Due to the way Blizzard built our talent trees, we literally have four rotations with significant differences. Even compared to the other Druid classes, the impact of the talents is much more significant for ferals. I think this is central to the push back we have gotten from the simc community on the complexity of our rotation, since they are used to separate action lists for the different specs in classes, and don't really think of the feral on the same level as, for example, a rogue, but rather see us more on the level of, for example, a subtlety rogue.
Breaking the current script into four scripts recognizes the complexity we are dealing with.
On a separate but related note (and related to my last post), the complexity we are dealing with for the feral rotation is more than is typical for a spec. It is closer to the complexity for modeling the different specs in the pure classes. Due to the way Blizzard built our talent trees, we literally have four rotations with significant differences. Even compared to the other Druid classes, the impact of the talents is much more significant for ferals. I think this is central to the push back we have gotten from the simc community on the complexity of our rotation, since they are used to separate action lists for the different specs in classes, and don't really think of the feral on the same level as, for example, a rogue, but rather see us more on the level of, for example, a subtlety rogue.
Breaking the current script into four scripts recognizes the complexity we are dealing with.
Re: Simulationcraft - Feral rotation discussion and script
I think this is a good idea but I'm worried (for my own ability to use the script) how this is gonna be implemented. Is there gonna be 4 separate scripts? Or is the action list code going to get hardcoded into simc's source (re: druid_t::init_actions(), etc..). I'd vote for as much logic as possible staying in the script.Leafkiller wrote:Breaking the current script into four scripts recognizes the complexity we are dealing with.
Edgy (Suramar) / Catus: Feral Simulator / Apparatus: Paper Doll / Focus: Hearthstone Simulator / Hearthstone Calculator
GitHub: WarBase / WarDBC / WarKit / Catus 2
GitHub: WarBase / WarDBC / WarKit / Catus 2
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Simulationcraft - Feral rotation discussion and script
I was thinking of four separate scripts per the matrix above. Based on the user's spec we would simply import the appropriate script/action list. This will be trivial for you to deal with (and me in Ovale).
Re: Simulationcraft - Feral rotation discussion and script
I don't think seperating into that many scripts is the right choice, it would make it a huge chore to maintain. I already wrote the code for generating the action list line-by-line based on talent requirements etc, we just need to make things a bit less daunting in general.
-
- Exalted
- Posts: 1180
- Joined: Fri Jun 04, 2010 4:28 am
Re: Simulationcraft - Feral rotation discussion and script
I think there is an advantage to going to 4 chunks since we are starting to deal with side effects now and that is a natural break down. I will probably give that a try and see what the rotations look like and if I can improve them more easily that way.
Can you post your code somewhere so I can see what you are doing?
Can you post your code somewhere so I can see what you are doing?
Re: Simulationcraft - Feral rotation discussion and script
I did notice that there is a significant DPS discrepancy between the action list we've been using and a generated one so I definitely messed something up somewhere, I'll see if I can take some time to find the problem tomorrow and then I'll upload a patch file somewhere.
Re: Simulationcraft - Feral rotation discussion and script
Here's a newer version of the script that uses frag belt. I also made some logical DPS neutral changes in line priority.
Spoiler: show
Re: Simulationcraft - Feral rotation discussion and script
Found the issue with the modifications I made to druid:init_actions(), here's a link to a patch file:
https://dl.dropbox.com/u/1086121/sc_druid.cpp.patch
https://dl.dropbox.com/u/1086121/sc_druid.cpp.patch
Re: Simulationcraft - Feral rotation discussion and script
@aggixx, you're just using that code to generate a script based on talents and stuff correct?
Edgy (Suramar) / Catus: Feral Simulator / Apparatus: Paper Doll / Focus: Hearthstone Simulator / Hearthstone Calculator
GitHub: WarBase / WarDBC / WarKit / Catus 2
GitHub: WarBase / WarDBC / WarKit / Catus 2
Re: Simulationcraft - Feral rotation discussion and script
I'm still using the old script but if you patch your sc_druid.cpp with that then it will generate a talent specific script that does the same DPS, yes.
Re: Simulationcraft - Feral rotation discussion and script
There seems to be a gear pickup mistake in simcraft.
Feet - Boots of Still Breath should be replaced with Treads of Deadly Secretions
Haste/crit is simming lower for me than mastery/exp
Feet - Boots of Still Breath should be replaced with Treads of Deadly Secretions
Haste/crit is simming lower for me than mastery/exp
T13 http://raidbots.com/epeenbot/eu/lightni ... orcereria/
T14 http://raidbots.com/epeenbot/eu/sylvanas/sorcereria/
STREAMING 19-24 CET http://www.twitch.tv/Sorcereria PW: Django
T14 http://raidbots.com/epeenbot/eu/sylvanas/sorcereria/
STREAMING 19-24 CET http://www.twitch.tv/Sorcereria PW: Django
Re: Simulationcraft - Feral rotation discussion and script
Sounds good, thanks for the notice. I made that BiS list months ago before we knew where any of the stuff came from and what was and wasn't obtainable, so I probably just missed em or thought they were a heroic trash drop =)
Re: Simulationcraft - Feral rotation discussion and script
Btw, there are 509 bracers, heroic version of HoF trash drop. Thing is, they are available only through BMAH ... THX blizzard. 
They are mastery + hit I think, but yeah, pointless to change.

They are mastery + hit I think, but yeah, pointless to change.

T13 http://raidbots.com/epeenbot/eu/lightni ... orcereria/
T14 http://raidbots.com/epeenbot/eu/sylvanas/sorcereria/
STREAMING 19-24 CET http://www.twitch.tv/Sorcereria PW: Django
T14 http://raidbots.com/epeenbot/eu/sylvanas/sorcereria/
STREAMING 19-24 CET http://www.twitch.tv/Sorcereria PW: Django
Re: Simulationcraft - Feral rotation discussion and script
Few minor requests:
1. Could the AoE rotation be reposted as a full simc script (complete with shebang and gear stuff), instead of just the action list snippet? I have trouble parsing it automatically because I can't figure out (without some kludgy hack) the /use_item slot from the eternal_blossom_grips -> Hands.
2. Also, I asked aggixx about this last night but I think my question was wrong (as I was wondering about DoC), could the AoE script be improved to support HotW and NV?
3. For the primary rotation, could Lifeblood and Frag Belt be added?
1. Could the AoE rotation be reposted as a full simc script (complete with shebang and gear stuff), instead of just the action list snippet? I have trouble parsing it automatically because I can't figure out (without some kludgy hack) the /use_item slot from the eternal_blossom_grips -> Hands.
2. Also, I asked aggixx about this last night but I think my question was wrong (as I was wondering about DoC), could the AoE script be improved to support HotW and NV?
3. For the primary rotation, could Lifeblood and Frag Belt be added?
Edgy (Suramar) / Catus: Feral Simulator / Apparatus: Paper Doll / Focus: Hearthstone Simulator / Hearthstone Calculator
GitHub: WarBase / WarDBC / WarKit / Catus 2
GitHub: WarBase / WarDBC / WarKit / Catus 2
Re: Simulationcraft - Feral rotation discussion and script
Mastery and Exp got em on normal ^^Sorcerer wrote:Btw, there are 509 bracers, heroic version of HoF trash drop. Thing is, they are available only through BMAH ... THX blizzard.
They are mastery + hit I think, but yeah, pointless to change.
And guys keep up the good work


Re: Simulationcraft - Feral rotation discussion and script
Did anyone notice they fixed thrash/swipe + doc?
It no longer consumes both charges of doc when you use it with an aoe ability that hits more than one mob.
I'm assuming this was fixed in 5.1.
It no longer consumes both charges of doc when you use it with an aoe ability that hits more than one mob.
I'm assuming this was fixed in 5.1.
Re: Simulationcraft - Feral rotation discussion and script
Why DPS disproportion on simcraft.org between 5.05 and 5.1? I can't find any difference between them, but the 5.1 is lower.
T13 http://raidbots.com/epeenbot/eu/lightni ... orcereria/
T14 http://raidbots.com/epeenbot/eu/sylvanas/sorcereria/
STREAMING 19-24 CET http://www.twitch.tv/Sorcereria PW: Django
T14 http://raidbots.com/epeenbot/eu/sylvanas/sorcereria/
STREAMING 19-24 CET http://www.twitch.tv/Sorcereria PW: Django
- Tinderhoof
- Exalted
- Posts: 2234
- Joined: Mon May 24, 2010 10:21 pm
Re: Simulationcraft - Feral rotation discussion and script
They actually fxied this sometime before. Swipe is the same way now and only consumes 1 stack. I noticed the fix around the time of the HoF release (saw during our first Windlord attempts). Just didn't get around to writting it up.Terias wrote:Did anyone notice they fixed thrash/swipe + doc?
It no longer consumes both charges of doc when you use it with an aoe ability that hits more than one mob.
I'm assuming this was fixed in 5.1.