Register

Catus: Edgy's Cat Simulator (in development)

Face-rippin fun.
Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Wed Dec 05, 2012 8:08 pm

Hey Yawning, thanks for all the input.

I got multi-target working:
Code: Select all
02:17.532 @A Melee            8964 Glance       +SR
02:18.086 @A Swipe           25510 Hit          +SR+BL
02:18.086 @B Swipe           30431 Hit          +SR+BL
02:18.086 @C Swipe           25325 Hit          +SR+BL
02:18.086 @D Swipe           31326 Hit          +SR+BL
02:18.086 @E Swipe           60087 Crit         +SR+BL
02:18.086 @F Swipe           26906 Hit          +SR+BL
02:18.086 @G Swipe           28683 Hit          +SR+BL
02:18.086 @H Swipe           30585 Hit          +SR+BL
02:18.474 @A Melee           13034 Hit          +SR
02:19.416 @A Melee           11787 Hit          +SR
02:19.436 @F Thrash#2        10542 Hit          +SR
02:19.436 @G Thrash#5        24975 Crit         +SR+TF
02:19.436 @E Thrash#2        10542 Hit          +SR
02:19.436 @A Thrash#2        10542 Hit          +SR
02:19.436 @B Thrash#2        21717 Crit         +SR
02:19.436 @D Thrash#2        10542 Hit          +SR
02:19.436 @C Thrash#2        10542 Hit          +SR
02:19.536 @H Thrash#2        10542 Hit          +SR
02:20.358 @A Melee           13441 Hit          +SR
02:20.358 +Bottle of Infinite Stars
02:20.530 *SR`0: 13.94s
02:21.300 @A Melee            8503 Glance       +SR+Agi(2539)
02:22.242 @A Melee           28446 Crit         +SR+Agi(2539)
02:22.242 +Dancing Steel
02:22.242 LOTP
02:22.436 @F Thrash#3        10542 Hit          +SR
02:22.436 @G Thrash#6        24975 Crit         +SR+TF
02:22.436 @G -Thrash+SR+TF
02:22.436 @A Thrash#3        10542 Hit          +SR
02:22.436 @B Thrash#3        10542 Hit          +SR
02:22.436 @D Thrash#3        10542 Hit          +SR
02:22.436 @C Thrash#3        10542 Hit          +SR
02:22.436 @E Thrash#3        10542 Hit          +SR
02:22.536 @H Thrash#3        10542 Hit          +SR
02:23.184 @A Melee           24445 Crit         +SR+Agi(4189)
02:24.126 @A Melee           27862 Crit         +SR+Agi(4189)
02:25.068 @A Melee            8313 Glance       +SR+Agi(4189)
02:25.136 @A Thrash          12715 Block-Hit    +SR+Agi(4189)


I added support for queuing up a bunch of runs with different configurations.

I also started working on the interface for the trinket simulator:
https://dl.dropbox.com/u/2989349/sim_ui9_trinkets.png

(This would also let you load in the aoe script, setup 8 targets or w/e, in whatever configuration desired, and evaluate trinkets.)

I removed crit dmg and crit bonus from being snapshot and fixed a few bugs involving them after doing some developing:
viewtopic.php?f=3&t=976&start=50#p14608

Edit: I also adjusted my lookahead Rake/Rip code to ignore SR falling off (since the expectation is that it's up most of the time) and also discount factoring in crit to avoid unnecessary clips during Banner/Terror in Mists/etc..

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Fri Dec 07, 2012 6:52 am

Got a basic reforger UI working:
http://raffy.antistupid.com/wow/catsim/ ... eforge.png
I still need some default configurations, some export options (to wowreforge or w/e), a reforged summary, and a time estimation if the reforge permutation space is huge.

Also, if you set any stats to identical weights, there might be multiple near-maximums (when you reforge exhaustively), so I need to add a tie breaker, or maybe better, a way to add an additional constraint linking any pair of stats with a ratio.

I got proc scaling implemented for all feral-related trinkets.

I added PvP Power and Resilience stuff, and added support for a human player target type.

Added simc support for cycle_targets=1 and did more work with multi-targets.

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Fri Dec 07, 2012 10:46 pm

When I started development, I was just thinking of doing 1 target, since that's typically what everything is evaluated against. But then I found out there were some AoE scripts, I figured multi-target was worth it.

Now that I've added multiple static targets, I kind of feel that, what I should of implemented is some kind of combat script, similar to DBM or BigWigs, that allows you describe the fight.

To my disappointment, DBM and BigWig scripts are implemented as fight-specific lua rather than some generic combat DSL, so that kills my idea of just directly interpreting them.

The tricky thing is that all this stuff interacts weirdly with the action lists and is difficult to configure via the interface. But, even with very basic combat script support, I could move away from the monotonous Patchwerk sim. (I see that Mew had some Theralion and Valiona support and Simc has some Helter Skelter support.)

So I'm trying to figure out a simple set of commands and triggers that would allow me to setup combat scripts for a bunch of fights. Just looking at what we have on live: Stone Guard (multi-target, linked HP), Spirit Kings (sequential, overlapping spawns, dot-wipe/shields), Wind Lord (aoe, linked hp), Protectors/Garalon (multi-target), Blade Lord/Lei Shi (periodic downtime).

Some fights would obviously be way too complex to implement w/o being paired with specific action lists, but still, anything more realistic seems better than tank and spank.

What I'm thinking is:

1. command to define an enemy class (this is where you can link hp pools by using a shared name, add race type human/beast, can block, behind/front)
2. command to spawn an enemy class under some identifier (or in batch, like spawn 10 blahs's)
3. trigger at some time (relative to combat time or enemy spawn time)
4. trigger at some % hp (relative to enemy)
5. commands like: RunAway(enemy,time), ClearDebuffs(enemy), Die(enemy), Immune(enemy), etc...
6. commands that apply mods: BuffStat(Agility, 1000, 10sec), BuffMod(All, 50%), etc...
7. commands to make an enemy suffer some external raid dps (since I'm only simulating one feral)

I haven't figured out the exact syntax, but you could do things like:

Stone Guard: define one enemy A with shared HP pool. Spawn(A, Jade); Spawn(A, Cobalt); Every(30) RunAway(RandomEnemy(), 30)
Spirit Kings: define enemies A,B,C,D. Spawn(A); AtHP(A, 30%) Spawn(B); AtHP(B, 30%) Spawn(C); Every(A,42) ClearDebuffs(A). etc...

I'm thinking like just 10 or 15 lines of simple scripting could add a ton of real-world value to the simulation.

Exalted
User avatar
Posts: 1145
Joined: Fri Jun 04, 2010 4:28 am

Re: Edgy's Cat Simulator (in development)

Postby Leafkiller » Sat Dec 08, 2012 12:16 am

Way back during early Cata, I implemented an Atremedes script of sorts by halting all yellow attacks for 30 seconds. Yawning followed that up with a variety of changes that made it viable to test different fight scenarios (including fixing the one thing that I could not do in my script at that time - turn off white attacks during the air phase). My goal was to test different stat value setups across a variety of fight scenarios. This was when 4.06 came out and the stat values were becoming close enough that it didn't make that much difference what people focused on. I made a blog post about this at that time: http://fluiddruid.net/2011/03/4-06-the- ... ary-stats/

I am bringing this up to add a little color to your thinking about what to add to your simulator. It is interesting to see what talents are rotations work best on given fights, and it is also interesting to be able to compare different reforging/gem setups.

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Sat Dec 08, 2012 9:32 am

I was playing with a few ideas here:
http://raffy.antistupid.com/wow/catsim/ ... amples.txt

The goal would be being able to express most fights in a few lines of code.

All targets would be standing at the exact same position. You could tell any target to run away (not aoe-able), gain flags like, disable-melee or disable-all to prevent new incoming damage, etc..

I needed a way to import raid DPS so I added a (suffer XYZ) to any target/health pool, to model external raid DPS. The simulator could then jiggle it.

The Elegon script requires more ideas, possibly it's too complex for what I was intending to support. Most of what I played with in that file can be implemented pretty easily.

If a fight has a 10 minute enrage, I don't know what to do if you don't kill it; same thing applies with mechanics like Elegon sparks (although possibly, the spark count could purely depend on you, with the assumption that you're the only fail DPS in your raid :p)

You could probably implement a script purely as a timeline, where you just have triggers every 10 seconds or so, that sync the fight (approximate target HP and deaths) to an actual WoW parse.

Probably the script should be able to cast Raid spells (like Heroism, Stormlash, Banner) and somehow make suggestions (kill this!, use HotW hurricane, etc...) or enable/disable druid abilities (never mangle, use potion).

Overall, I don't know if optimizing on a per-fight basis would be very useful. It might help figure out better stat weights though if you simulate a basket of encounter scripts.

Posts: 10
Joined: Tue Oct 30, 2012 5:50 pm

Re: Edgy's Cat Simulator (in development)

Postby Caltiom » Sat Dec 08, 2012 9:53 am

The big problem about modeling raid situations/encounters really isn't the fight/enemy part, but the action lists of the players playing this scenario.

So even if you offer very complex fight modifications, the simulated players aren't going to specialise themselves to that situation, unles you have very complex action list specializations.

In SimC, the unofficial compromise is to offer some generic options which can significantly alter the outcome of even a patchwerk like fight, but don't go down the path of modeling individual combat mechanics ( and that's also mainly because we're lazy ).

Important target options are certainly enemy start and end health pct. Both have big impacts on execute stuff, or in cataclysm on some 90%+ abilities. A 10min enrage can be done by just doing a 10min sim and checking if you did enough damage ( or how many % of your iterations did ).

Then there are events for target- invulnerability, flying, vulnerable and player- movement ( badly modeled ), stun, interrupt, damage taken, heal taken, front/back position switch.

Of course that's just a small snapshot of what you could do, and you can implement it in various ways.

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Tue Dec 18, 2012 6:37 pm

Been a while since my last update, I haven't had much free time, and I've been really bogged down learning stuff about Java, but my X-mas vacation begins today!

@Caltiom, yeah I agree, the need for fight-specific action lists means that this is much more complicated than I intended. I'm currently supporting a simple N number of targets, and then try to work out something later for more interesting mechanics.

Blizzard got the Upgrade API stuff working for profile import, http://us.battle.net/wow/en/forum/topic/7200051045, so I have support for this. Additionally, I encountered a bug with the Blizzard Item API (weapon damage was incorrect), http://us.battle.net/wow/en/forum/topic/7393669846, but they were able to provide a very quick fix.

I found a bug in UnitDamage(), http://us.battle.net/wow/en/forum/topic/7394209929, basically, I cannot compute the same damage the Lua API spits out when I'm in Cat/Bear form. Everything works fine in Human form. I've been hunting for bugs, trying to make sure everything matches in-game. My guildies make fun of me because I'm always hanging out near the target dummies.

As for my simulator, I got the rest of my interface linked up, so all options now work. Ursol's Vortex is usable, as well as the strange 1-2 tick Rip Extends. I added more support for various miscellaneous features like "proper Rip extends" where you only get what the tooltip describes (1 tick extra, max of 3), or "allow TF during Berserk" to see what kind of DPS boost it potentially would allow, as well as a few others. I'd like to have a whole bunch of weird enable/disable features to help isolate the value of various things.

I fixed a bug with my simc importer (using wrong talents) as well as enabled loading in the race/glyphs/talents/gear from the provided simc comments (although it's difficult to interpret the gem expression: eg. "agile_80agi_80hit_180agi" is hard to parse in the general case.)

I added basic saving (window position + other interface settings) + the ability to import/export all settings from a file (in addition to autosave).

I'm still working on some basic HTML output and trying really hard to get useable release available.

Exalted
User avatar
Posts: 1145
Joined: Fri Jun 04, 2010 4:28 am

Re: Edgy's Cat Simulator (in development)

Postby Leafkiller » Tue Dec 18, 2012 9:27 pm

Are you going to provide a way to define a character by raw stats in addition to by gear so I can easily compare different stat values? One option that would be cool would be able to run a series of runs with stat points being shifted, say 100 at a time, so for instance, you could start with 1000 haste and 3000 crit and end with 3000 haste and 1000 crit. It would need to be able to do a large number of iterations at each point, but when it was done we would have a better idea of how the two stats actually compare to one another (and how they interact).

For fight simulation, consider adding something that allows you to specify being off a target for a period of time. This needs to include a way to shut off white attacks in addition to the specials.

From a rotation development perspective, it seems like we can either use simc scripts, or do some Java coding - but the Java coding will require that we can compile the full simulator, unlike Mew, where the script was compiled on the fly without recompiling the source. Am I correct in my assumptions?

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Tue Dec 18, 2012 10:34 pm

I can do the raw stat thing, I just don't know the best way to implement it. Prior to running the simulator, it takes a profile worth of gear + buffs + racial + class stats and mushes it down into simple stat vectors for fast lookup. Food/Flask are implemented as just merged into an "extra stats" variable that's added on top.

So, if you had a naked profile, and just supplied "extra stats", then everything would work, but if you specified "1000 agility" it would be sitting on top of (food + flask + race + class) + buffs, so it really wouldn't be 1000 agility. Also, I'm not sure how the weapon would work in this situation, I guess just min/max? Or supply DPS and do 0.80/1.20 for Min/Max.

Or, with a geared profile, I could just have a simulation option that walks through all possible reforgings between two stats. So load a profile, setup reforger for hit/exp cap, give Mastery a lower bound, and then do Sim of Haste-to-Crit (if there's too many permutations, have a minimum step of 100 or w/e).

I'm still debating about the script stuff. Right now I've got partial simc support (100% of the current druid script, but I haven't added all the simc options that are available in the sim). Doing the Mew runtime compile of a java-based script is definitely an option.

What kind of options would you want for the target unavailable thing? I feel that I need to come up with an API for what actions/fight mechanics I can support before I start adding too many features.

Maybe the interface is too much bloat for someone actually trying to improve the rotation. My original intention was just designing something that anyone could download, run, hit import, and then experiment with different talents and gear. But maybe, if I had a java-based (or some custom) script, that could specify everything in text, I could bypass the interface all together, and just generate results.

Edit: some recent screenshots

I'm calling it Catus

Cat Stats, Gem/Enchant Audit, Combat Prep (simc precombat), Internal Features:
http://raffy.antistupid.com/wow/catsim/ ... 1_some.png

New feature I added called Weapon Swap, which allows you to dynamically substitute your caster weapon into the paperdoll, so it stats are reflected in Cat Stats:
http://raffy.antistupid.com/wow/catsim/sim_ui11_ws.png
Last edited by raffy on Wed Dec 19, 2012 7:29 am, edited 1 time in total.

Exalted
User avatar
Posts: 1145
Joined: Fri Jun 04, 2010 4:28 am

Re: Edgy's Cat Simulator (in development)

Postby Leafkiller » Wed Dec 19, 2012 1:45 am

You could check Mew for how it handled inputting raw stats and also the API calls. Those worked pretty well.

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Wed Dec 26, 2012 12:58 am

Man, I severely under-estimated the difficulty of completing my simulator. With fixed stats copied directly from in-game, I got the basic simulator working in a few hours (re: first post). A few days later I had the Blizzard importer working. Soon after, a nice interface and simc support. But after adding multi-target support, I've been stuck. (Although I did add support for the bear-thrash thing. I'll try to post some numbers in that thread soon.)

It's almost impossible to provide a simple interface to configure all the various combat options that I want to use, yet trivial if I had some kind of syntax to describe the fight, targets, and method of combat. From an interface, it's too easy to setup something that makes no sense, and too complex to design something useful.

I just finished my second attempt at a target configuration panel, and I realized how fucking tedious it is to use. I think a much better method would just be a list of various combat scripts, kind of like the dungeon journal, with virtually no interface controls over enemy health, positioning, level, race, dodge, parry, block, uptime etc... Having consistent scenarios to simulate against seems much more useful than a bzillion unmanageable options.

So, I'm currently working on two things: 1. I'm returning to my idea above and experimenting with ways to design/describe complex fights via code and 2. move my internal action list away from java, and into a form, like the simc script, that can be embedded into the fight scripts.

This means a few things:

1. I won't be able to offer many options via the interface that impact the rotation. I was initially planning on having all kinds of various options to play with different ways of doing the DoC rotation, or using Rake spam, or w/e, but I think all of this customization is too complex for a GUI and must be moved to scripts.

2. User-controllable things like Heroism, Stormlash, Shattering, etc.. cannot be triggered from the interface (only allowed/prevented) and it's becomes scripts job to use them. ie. triggering Heroism late rather than Early will require separate scripts.

3. For the normal user, you'd just download my utility, import your cat, pick a script, and get some answers; a developer would primarily be developing fight scripts in a text editor and barely using the interface beyond the initial setup.

So basically, the simulator will be two-pieces: the paper doll (w/gear/gems/enchants, buffs/debuffs, allowed spells, enable/disable bugs, etc...) and the combat simulator (action list merged with fight script). Both of these representations will have a file equivalent, so it should possible to take a "BiS_Gear.catus" setup and simulate "WindLord.brawl"

Exalted
User avatar
Posts: 1145
Joined: Fri Jun 04, 2010 4:28 am

Re: Edgy's Cat Simulator (in development)

Postby Leafkiller » Wed Dec 26, 2012 2:45 am

At my request, Yawning added the ability in Mew to specify name/value pairs when running a script. We sued those to choose different scenarios/tests. That allowed me to switch between the scripts without the basic code having to change.

my preference continues to be able to write scripts in a high level language (Java or whatever) rather than being restricted to a predefined script language. It does require a decent api of course. Maybe you could implement a LUA front-end :P

If you want to get a feel for how we used name/value pairs, take a look at the default script that ships with Mew. You will see a place in the code that pre-processes name/valu pairs and sets up some variables that control the script.

Revered
User avatar
Posts: 323
Joined: Tue Oct 23, 2012 4:19 am

Re: Edgy's Cat Simulator (in development)

Postby Alpheus » Wed Dec 26, 2012 8:35 am

Leafkiller wrote:At my request, Yawning added the ability in Mew to specify name/value pairs when running a script. We sued those to choose different scenarios/tests. That allowed me to switch between the scripts without the basic code having to change.

my preference continues to be able to write scripts in a high level language (Java or whatever) rather than being restricted to a predefined script language. It does require a decent api of course. Maybe you could implement a LUA front-end :P

If you want to get a feel for how we used name/value pairs, take a look at the default script that ships with Mew. You will see a place in the code that pre-processes name/valu pairs and sets up some variables that control the script.


What could also be done is use feature flags (http://stackoverflow.com/questions/7707 ... ature-flag) around blocks of code, ie. give a block of code a "tag" and then detect these tags in a configuration file and expose them on the UI. For example something like:
Code: Select all
tag-begin: DoC
./Some
./Random
./Doc Action
tag-end: DoC
./untagged-action
tag-start: bear-thrash
./shift_bear
./bear_thrash
tag-end: bear-thrash


... and so forth. This could also be used to put several rotations into a single configuration file (HotW, DoC) and you could post a commented header to decorate the tags with some information used by the UI (coloring, description, etc.)
Image

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Thu Dec 27, 2012 12:05 am

Leafkiller wrote:my preference continues to be able to write scripts in a high level language (Java or whatever) rather than being restricted to a predefined script language. It does require a decent api of course. Maybe you could implement a LUA front-end :P

The main advantage of a custom script/syntax is that I can translate/compile it into something more optimized, validate it for mistakes, and avoid unintended exclusions. But I agree, having the freedom to do more via a script is awesome from the development perspective and avoids the need to abuse and mangle a lesser-script to emulate some missing functionality.

Just in the last week or so we have two new threads: 2 target rotation and bear-weaving, both requiring different setups, and still they're just cleave-patchwerk and aoe-patchwerk.

I think there is some middle ground, where I can provide some features (Enemies, Timers, Events, Priorities) and then have simc-like if-expressions for computation with the ability to have a tagged/hierarchical Action list that can be modified as the fight progresses. To avoid repeating the same core rotations, I need some kind of import() functionality, so the primary single target rotation can be referenced/used in multiple fights.

Also, there needs to be a way to expose some variables used in the script, back into the interface: for example, a single target Patchwerk brawl could expose an "HP" variable, so the script wouldn't need to be duplicated just to change the fight length. This is very similar to the mechanics of Mathematica's Manipulate: http://reference.wolfram.com/mathematic ... ulate.html

Another concept that I'm playing with, is allowing for second-pass optimizations. Where you run the simulator a few times, and collect some data, to help optimize the rest of the rotation. For example, if you setup a complex fight, you might not know where the best place to blow Heroism. Additionally, you might not know if your fight has a combat time that allows you to use heroism twice, or if there is a 6 minute enrage preventing 3 berserks. So you could run the initial brawl a few times, build up a plot of damage over time, and then trigger Heroism or Potion, or w/e at the optimal points automatically, instead of defining them manually.

There are probably many other optimizations that you can do, beyond simple autocasting, if you had an approximate damage profile of the fight as you simulate it.

Honored
Posts: 76
Joined: Sat Jun 04, 2011 4:21 am

Re: Edgy's Cat Simulator (in development)

Postby Yawning » Mon Dec 31, 2012 6:02 pm

raffy wrote:It's almost impossible to provide a simple interface to configure all the various combat options that I want to use, yet trivial if I had some kind of syntax to describe the fight, targets, and method of combat. From an interface, it's too easy to setup something that makes no sense, and too complex to design something useful.


Yep. I am the world's worst UI programmer and it showed, though people say I came up with something that was passable. One fo the main things I was planning for my Mewtwo refactor/rewrite was to carve off encounter specific code into a separate script and give it more library code but since I never actually got around to writing Mewtwo, it remains something I was thinking about.

raffy wrote:So basically, the simulator will be two-pieces: the paper doll (w/gear/gems/enchants, buffs/debuffs, allowed spells, enable/disable bugs, etc...) and the combat simulator (action list merged with fight script). Both of these representations will have a file equivalent, so it should possible to take a "BiS_Gear.catus" setup and simulate "WindLord.brawl"


That is how Mew worked from the beginning, since I wrote it that way. User interface should be abstracted away from the concrete implementation (Though 99% of the users used the GUI I wrote, instead of the command line interface which I mostly used for testing).

Leafkiller wrote:my preference continues to be able to write scripts in a high level language (Java or whatever) rather than being restricted to a predefined script language. It does require a decent api of course. Maybe you could implement a LUA front-end :P

If you want to get a feel for how we used name/value pairs, take a look at the default script that ships with Mew. You will see a place in the code that pre-processes name/valu pairs and sets up some variables that control the script.


Are you trying to make me feel guilty about getting bored with the project? :(

That stuff was schedule for a rewrite that I briefly touched on, but it's non-trivial to do cleanly (though most people did not touch script implementation). What we had worked for all of our use cases and left developers with enough flexibility to do everything we envisioned at the time though so as far as a design to crib off it's not bad.

raffy wrote:The main advantage of a custom script/syntax is that I can translate/compile it into something more optimized, validate it for mistakes, and avoid unintended exclusions. But I agree, having the freedom to do more via a script is awesome from the development perspective and avoids the need to abuse and mangle a lesser-script to emulate some missing functionality.


Using a higher level language gets you "translate/compile/optimize" for free. "validate" is non-trivial beyond syntax errors and basic "doh" type bugs (It's actually flat out impossible to completely solve if your expression language is Turing complete)., so I viewed the tradeoffs as worth it.

Tangedyn and I spent time screwing around with the Mew script functionality to write fractal renderers (I did an ASCII art one and Tangedyn one-upped me by writing one that used Swing). I also had one that checked e-mail because why not ("Every program attempts to expand until it can read mail.").

As a side note mostly towards leaf, I've been reliving the past by using http://sensi.org/~svo/glasstty/ in my text editor. I'll probably go back to my usual font soon because I miss having bold punctuation and a zero with a slash, but it's amusing for now at least.
"Understanding is a three-edged sword."

Mew: http://code.google.com/p/mew-wow-druid-model/

Exalted
User avatar
Posts: 1145
Joined: Fri Jun 04, 2010 4:28 am

Re: Edgy's Cat Simulator (in development)

Postby Leafkiller » Mon Dec 31, 2012 7:57 pm

@Yawning - Definitely a classic terminal, and one I used at various times. Way back (in the ice age) I had 2 HP 2621Ps in my possession, one at my home and one in my room at college. They were complemented with 212A modems and, as I was working at Tymnet at the time, I had world wide access long before there was an internet, at 1200 baud!

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Mon Dec 31, 2012 9:14 pm

Yawning wrote:Using a higher level language gets you "translate/compile/optimize" for free. "validate" is non-trivial beyond syntax errors and basic "doh" type bugs (It's actually flat out impossible to completely solve if your expression language is Turing complete)., so I viewed the tradeoffs as worth it.


I'm very familiar with what you're talking about, but I'm not intending to expose a high-level language. I want to support a syntax that allows a developer to express things simply. Most fights are just a bunch of interleaved timers and triggers.

While this greatly limits what you could potentially do with it (no fractal render or w/e), this does allow me to convert the script into a timeline and/or a bunch of evented-actions that can execute very efficiently.

If instead, I implemented a simulator w/hooks, where I'm constantly notifying a delegate about whats going on and have no knowledge of it's state or intention, I have no room for optimization or ability to validate silly actions as you said. Optimization isn't really a goal either (but speed is nice). I'd much prefer correctness and an execution that matches in-game to a simulation that runs fast but can't be trusted.

The AoE Bear Thrash thread is a great example (although not a fight/boss related thing). Ignoring the simc bugs, where do you stick that desire in the action list? Why is it implemented as multiple actions interleaved with the normal rotation? Why can't it just be like: (if conditions met to AoE thrash) -> might of ursoc or bear -> thrash -> maul? -> dash or cat

While a pretty crazy goal, I think the next step in improving feral performance, beyond executing the single-target tunnel rotation, is being able to ask questions about "when is the best time to use ABC for fight XYZ?" And this requires something more complex than a 1-dim action list, but something much simpler than a full-blown you-can-do-whatever-you-want callback system.

Overall, I think it would be very cool to be able to simulate a relatively complex fight, with a relatively simple script, and generate a damage over time plot that approximates real world of logs data.

I'm currently developing a "brawl"-script to make this possible.

Edit: spelling

Exalted
User avatar
Posts: 1201
Joined: Fri Nov 25, 2011 7:49 pm

Re: Edgy's Cat Simulator (in development)

Postby aggixx » Tue Feb 19, 2013 7:46 am

In an attempt to keep discussion in the relevant place, here's the issues I've run into using Catus so far (feel free to say "Hey you're doin it wrong"):

Doesn't seem like you have any suffix info for Bracers of the Midnight Comet (which is understandable since there is no suffix info on any DB site I've looked at).

I can't find a way to put a prismatic socket on weapons (Eye of the Black Prince works on all weapons not just sha-touched ones).
Image

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Tue Feb 19, 2013 7:55 am

Thanks for the feedback.

I didn't implement the <Random Stat> thing.
I thought the Eye of the Black Prince was only for Sha.

I can fix both of these tomorrow.

Honored
Posts: 188
Joined: Tue Dec 14, 2010 5:34 pm

Re: Edgy's Cat Simulator (in development)

Postby Jeshu » Tue Feb 19, 2013 1:44 pm

Is there a repository I can check out that contains the source? Or is there a definitive location for a source archive that I can download?

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Tue Feb 19, 2013 2:57 pm

I can put a source link up too later today. I haven't had a lot of time to work on it (which is why it looks about the same as did from a few months ago) so it's still kind of a mess and not organized. Instead, I've been unsuccessfully trying to develop that Brawlscript idea (from above), but every implementation I choose just ends up being way more complicated than I intended.

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Edgy's Cat Simulator (in development)

Postby raffy » Tue Feb 19, 2013 5:38 pm

The Blizzard Item API is severely lacking in the <Random Enchantment> department.

I made a request to get this fixed:
http://us.battle.net/wow/en/forum/2626217/

Some suffix information is in the simc dbc ptr data, although it looks incomplete (on Blizzards end):
Code: Select all
{  336, "Crit Rating (5.2 Thunder King Raid)"     , {  2822,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },
  {  337, "Hit Rating (5.2 Thunder King Raid)"      , {  3727,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },
  {  338, "Expertise Rating (5.2 Thunder King Raid)", {  4058,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },
  {  339, "Mastery Rating (5.2 Thunder King Raid)"  , {  4059,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },
  {  340, "Haste Rating (5.2 Thunder King Raid)"    , {  3726,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },
  {  341, "Parry Rating (5.2 Thunder King Raid)"    , {  4060,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },
  {  342, "Dodge Rating (5.2 Thunder King Raid)"    , {  2815,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },
  {  343, "Spirit Rating (5.2 Thunder King Raid)"   , {  2806,     0,     0,     0,     0 }, {  5200,     0,     0,     0,     0 } },


I might just temporarily inline a hack for this since these items are rare.

Edit: for the time being, you can go into Catus root directory, and browse to /Cache/raffy.antistupid.com and locate "Item_-96540.json". You can edit this file an add two entries into the "bonusStats" array for the corresponding secondary stats.

You can also use this method to create custom items of your own design by just creating a new file with a non-conflicting item-id, and then adding the corresponding item-id to Gear.txt

Edit: from http://raffy.antistupid.com/wow/ptr_gear.php, here are some more item-ids to add to Gear.txt:
Code: Select all
# 5.2 ptr gear
-96370, -96443, -96583, -95015, -96579, -96540, -96580, -94998, -96582, -95007, -95021, -96513, -96392
-96703, -96531, -95028, -96473, -96714, -96465, -95033, -96423, -96444, -96612, -96390, -96702

# 5.2 ptr weaps
-96391, -96547, -96606
-94740, -94983, -95507
-95647, -95803, -95862
-91308, -91183

# 5.2 ptr trinkets
-96546, -96492, -96369, -96409, -94511

Exalted
User avatar
Posts: 862
Joined: Tue Oct 23, 2012 7:15 am

Re: Catus: Edgy's Cat Simulator (in development)

Postby raffy » Tue Feb 19, 2013 7:30 pm

From T15 thread:

@aggixx, viewtopic.php?f=3&t=4510&start=25#p15864

I don't have any GUI for this, but right now I've just been playing with something simple that generates profiles for me, and then saves them into a form that I call CompactGearRep:
Spoiler: show
Code: Select all
?Engineering, Tailoring
-96370 :-95346 :76604                             # Head: [535] Lightning-Eye Hood
-96443 :76604                                     # Neck: [535] Quadra-Head Brooch
-96583 >hm :76692 :76604 "Greater Tiger Claw"     # Shoulder: [535] Spaulders of the Haunted Forest
-95015 >tm :76604 Accuracy                        # Back: [541] Grey Wind Mistcloak
-96579 >ec :76692 :76604 :76614 "Glorious Stats"  # Chest: [535] Raiment of the Haunted Forest
-96540 :76604 "Greater Agility"                   # Wrist: [535] Bracers of the Midnight Comet
-96580 >em :76692 "Springs" "Super Strength"      # Hands: [535] Grips of the Haunted Forest
-96582 :76604 :76614 "Shadowleather Leg Armor"    # Legs: [535] Legguards of the Haunted Forest
-94998 :76614 :76614 :76692 Socket "Frag Belt"    # Waist: [541] Strap of Murderous Strikes
-95007 >em :76604 :76614 "Blurred Speed"          # Feet: [541] Twist-Toe Tabi
-95021 >hm :76614                                 # Finger 1: [541] Ra-den's Swift Seal
-96513 >cm :76604                                 # Finger 2: [535] Gore-Soaked Gear
-96369 >em                                        # Trinket 1: [535] Renataki's Soul Charm
-96546                                            # Trinket 2: [535] Rune of Re-Origination
-96606 :76604 "Dancing Steel"                     # Main Hand: [535] Darkwood Spiritstaff

Negative itemId's correspond to PTR items.


Here is a snippet of the generator I used for making the mastery-reforged trinket profiles:
https://gist.github.com/anonymous/4976825

I could easily make it spit out simc-valid gear descriptions too, if that's what you're looking for.

@aggixx, viewtopic.php?f=3&t=4510&start=25#p15866

Oh just the paperdoll stuff, Catus works great for that stuff. And with my wowhead/JSON thing, it's easy to import any PTR gear. I'll upload a copy tomorrow that you can play with, configure gear, and reforge stuff. I'm still in the middle working on the Brawl script thing so everything is a mess right now.

Edit: you can download Catus here: https://dl.dropbox.com/u/2989349/Catus.rar
To add PTR gear, add them into Gear.txt using negative item ID's (there are examples in there)
Lots of output is dumped into stdout so you might want to launch the jar via a console to see additional stuff.
But if you just wanna setup gear and reforge stuff, it's setup for that.
Edit: added missing assets, and included some cached data by default

Previous

Return to Kitty DPS

Who is online

Users browsing this forum: Google [Bot], Google Feedfetcher and 1 guest