This project is read-only.

BloodSim feedback

Sep 12, 2010 at 9:41 PM

I haven't tested it deeply yet, but it looks really nice and it's easy to use.  I have a few suggestions if you plan on adding features in the future:

- Consider splitting up miss chance into miss and dodge/parry (or hit and expertise rating, which might end up being easier in the end).  Rune Strike can't be dodged or parried, but can miss, and Icy Touch and Blood Boil are on spell hit, which, Virulence aside, converts at a different rate than melee hit does.

- This would be a really good framework to model threat generation, since I'm betting you guys are the only people right now that have a user-friendly sim that models Runic Empowerment.  Obviously there would have to be a lot of stuff added (our stats, a couple options for different ability priorities, various glyphs and talents) for this and it would be a bit of an undertaking, but it wouldn't be [i]too[/i] hard with the framework that already exists.

- Something that would be quite a bit simpler would be to use this program to model the effectiveness of our mastery, at least naively.  All that would need to be added is a tracker/display for our absorbs and then boss damage and mastery input fields.

- I haven't really taken a look at the code itself yet, so I don't have much to add there at the moment (except that you guys are jerks for not using comments :P).

Sep 12, 2010 at 10:35 PM

Splitting into Dodge/Parry is definitely something I can do if I figure out how to make room for it in the UI. :P

With the way it's set up now it just assumes that you're hit capped and dodge capped, so unless that Parry roll comes up ugly there should never be an ability that misses. Because of this assumption I also gave Rune Strike a special flag that makes it unable to ever miss, since it can't be Parried.For IT and BB, it assumes that with Virulence you'll be capped and they'll just never miss. These are things I would like to expand further, though. I've done some hit table simming in the past that I plan on taking advantage of at some point.

Modeling Runic Empowerment accurately was definitely one of my priorities, because it's so damn hard/tedious to do any kind of data gathering about its impact in-game. For the most part it's not actually all that complicated, it's what the rotation does once the proc happens that's difficult. For now it prioritizes any Rune that just refreshed with RE and uses Heart Strike in any possible case (Death Rune, Blood Rune). Free Unholy Runes get prioritized with D&D, then PS, and Frost just uses IT.

I've already got some ground work laid for modeling our Mastery from a project I started a long time ago but ended up scrapping. It was another sim designed to allow comparison between tank classes, and it handled a lot of different things including Boss swings, damage, MH/OH, and an interval magic ability. So yeah, that would be pretty simple and I like the suggestion.

I'll probably end up going through and commenting everything at some point, but I'm pretty lazy when I write code so I don't tend to do that until after it's written. :D

Sep 15, 2010 at 4:25 PM

Since, if I'm not mistaken, the shield from DS doesn't stack with itself, shouldn't it be possible to just treat it like a priority system?  Something along the lines of:

  1. If not up, apply Frost Fever, BP, SF
  2. If Rune Strike is active, use it
  3. If no shield up, Death Strike
  4. Heart Strike
  5. Death Coil if > say.... 60 RP
  6. Horn, whatever else I'm missing

Then you could let the Runic Empowerment run separately and you wouldn't have to keep track trying to get back on a rotation.  Also, the source is missing WControls, or at least VS10 complains about it.

Double Also, parry haste is completely gone, right?

Sep 15, 2010 at 5:20 PM

It doesn't use a rotation. The priority system looks something like what you wrote.

Parry haste is gone from bosses, but I'm pretty sure it's still in effect for the player. Don't think it'll make enough of a difference to add it.

Sep 15, 2010 at 9:03 PM

Here's the priority system that's being used currently:

1. Frost Fever
2. Blood Plague
3. Scarlet Fever
4. Death Strike
5. Spend any RE proc'd Blood Runes on Heart Strike
6. Rune Strike
7. Normal Heart Strike
8. Death Coil
9. Horn of Winter

Eventually I hope to implement a system allowing the user to set custom priorities, but that's a ways down the road as it's fairly complicated to implement. A note for #5 - This used to be any RE proc'd Runes at all, but I'm experimenting with having it just sit on any F/U runes to potentially get more Death Strikes. As well, I'm going to try and get the sim to "wait" up to 3 seconds until after it takes damage to use a Death Strike instead of always using it immediately. This, too, is probably going to be pretty complex.

Parry haste is something that could be added if I split out the Avoid into Dodge and Parry, as I just did for the boss stats. As Communism said, though, the impact is probably going to be relatively minor, so I'm not sure how much priority I want to put on that. That said, being able to draw as complete a picture as possible is definitely important in any sim.

Sep 15, 2010 at 9:55 PM

A couple other thoughts about any changes or options you might make to the priority system (caveat: I'm at work and haven't looked at the new version, so maybe some of this is already changed):

- It may be a good idea to refuse to Death Coil until you've got 60 RP.  That will occasionally cause some overflow, but it will also slightly increase the frequency of Rune Strike usage, which is much higher threat per RP and twice as efficient point for point at proccing RE.  On the other hand, with avoidance as low as it is, this might not be worthwhile.

- There's a good chance we'll want to prioritize Death Strike over diseases for a lot of fights and just have 12 seconds of hang time where our Heart Strikes suck.  Without knowing what threat and DPS are going to look like once numbers are finalized it's hard to say, but assuming we get about 2 Heart Strikes in those 12 seconds we're going to essentially lose 33% of one Heart Strike's "normal" (disease boosted) damage every minute; if we're cutting it that close on threat we might have to make use of DRM (and a completely different rotation) anyway.

- Just in case you felt like adding more complication to your day, our priority on whether to use Rune Strike, Death Coil, or Death Strike next might depend not only on how much damage/absorption we get from each one, but also how close we are to capping out a given resource.  That is to say, in a real world priority, Rune Strike will be the best thing to use if we're not imminently capping out our F or U runes, because that gives us another chance to proc it the next time the boss swings.  But if we [i]are[/i] about to cap out, we probably care more about losing future absorbs than future rune strikes.

Sep 15, 2010 at 10:05 PM

What happens to the shield when you DS with it already up?  Is duration refreshed, is it replaced with the new one, or what?

Sep 15, 2010 at 10:19 PM

We'll need to have some numbers before we can lock down the priority system. We know that we want Death Strikes.

Last I checked, DS overwrites itself.

Sep 15, 2010 at 10:22 PM
ManlyWeevil wrote:

What happens to the shield when you DS with it already up?  Is duration refreshed, is it replaced with the new one, or what?

 I assume that it overwrites itself, as Communism said. That's how I made the sim do it, in any case. Also, thanks for reminding me that I need to add a thing that will track the duration of the Shield. It just sits there indefinitely right now. :D

Sep 15, 2010 at 10:28 PM

Yup, I've tested it and it definitely overwrites itself.

And yeah, I wasn't suggesting that you'd be able to determine the ideal priority system right now, just pointing out some of the complexities that may arise once it's determined.

Sep 15, 2010 at 10:44 PM
Anothriel wrote:

Yup, I've tested it and it definitely overwrites itself.

And yeah, I wasn't suggesting that you'd be able to determine the ideal priority system right now, just pointing out some of the complexities that may arise once it's determined.

 I definitely agree that the sim's priority system should probably be more robust. Right now it's pretty simplistic. It tries to use Ability 1 until it is no longer able to because it's on cooldown or out of resources, then it tries to use Ability 2, and so on. I haven't built a whole lot of logic structure, but I'd like to.

Sep 15, 2010 at 11:39 PM
RodneyAnonymous wrote:
Right now it's pretty simplistic. It tries to use Ability 1 until it is no longer able to because it's on cooldown or out of resources, then it tries to use Ability 2, and so on. I haven't built a whole lot of logic structure, but I'd like to.

That would actually work though:

I don't have the code from the sim that I wrote back around 3.1 at the moment, but IIRC the logic went something like:

 

if (!Mob.debuff("Frost Fever) && (FrostRune1 || FrostRune2)
     Cast(IcyTouch);
else if (!Mob.debuff("Blood Plague") && (BloodRune1 || BloodRune2)
     Cast("Plague Strike);
else if (!Shielded && ( (FrostRune1 || FrostRune2) && (UnholyRune1 || UnholyRune2) ) )
     Cast( "Death Strike" );
etc etc.

You'd just have to build the logic structure you want into the conditionals and it'd work fine.

Sep 15, 2010 at 11:49 PM
Edited Sep 15, 2010 at 11:50 PM

Well, that's what I mean. With the way the structure is set up right now, there's not much room for there to be a really good conditional system without me feeling like it's a mess, even if it works. I want to take some time and go over how it's set up to see if I can come up with something that makes for a much better "Is this happening? then do this" tree.

Also, who are you by the way? I'm curions. ^_^

Sep 16, 2010 at 1:27 AM

Depending on when I posted, Alephnull or Reavette (who is now a Troll DK named Yeahmon on Chromaggus)

Nov 23, 2010 at 4:53 AM

Is there any chance that I could get you to upload your resources? Specifically, ArrowLeft.bmp, ArrowLeftDown.bmp, ArrowRight.bmp, ArrowRightDown.bmp and test.bmp? If you toss up Resources.resx that would be nice, but it's not needed. It's a nice Sim. Thanks for making it.

Jan 17, 2011 at 1:01 PM

bloodsim is not working for me...i downloaded it...now what do i do?

Jan 17, 2011 at 1:11 PM

i downloaded the DLL's and source too ^^

Jan 17, 2011 at 1:16 PM
smanson wrote:

i downloaded the DLL's and source too ^^

nevermind...ater using my noggin a bit and reading a bit more i found this to help my problem

Troubleshooting


Problem: BloodSim throws an Unhandled Exception at startup and does not load.
Solution: Download the required DLLs and place them in the BloodSim directory

Problem: BloodSim throws an Unhandled Exception when running the simulation, or has wildly inaccurate results
Solution: If you are in a non-US location, try changing the periods (.) to commas (,) in any number that has decimal places

 
User is offline.
Reply With Quote
Jan 17, 2011 at 1:19 PM

 

just in case there are others out there who need help like i did what you do is...download the dll's and source with bloodsim....drag the dll's and source folders to the bloodsim folder and extract the files to the bloodsim folder