Theorycrafting Tool: Project Shield

  • #1

    Hello!

     

    I recently released the Theory-Crafting Tool "Project Shield". What it is? It is basically a little program (can I call something with >250 KB Source-Code "little" ? ;-) ) to examine your itemization. You enter what items you have equipped and what mods etc., and the program evaluates what the consequences are.

     

    Currently it only supports Tanks (all 3 specs of them). So it shows your Effective Health, your Effective Damage Reduction, your Squishiness. It also sorts items and mods by how these parameters are modified by them. Relics are sorted by their use-effects. It is possible to save and load your data, and also to

    see the stat budget for things like Armor, Defense, Absorb, Shield.

    You find it at projectshield.codeplex.com.

    Kesitah (aka MagicSN)

     

    Last edited by Kesitah on 2/9/2012 9:14:09 AM
  • #2

    Hello!

    In this post I describe how you can help me to support more classes/specs for "Project Shield". As an introducting remark, opposed to the "ideagiver" of my project (the program "Rawr" from WoW) my tool is not able to dynamically adapt to changing specs. So for each class only a fixed set of specs is supported and not "how does the dps change if I do not spec into this talent".

    My problem is that I don't know too much about many of the specs in SWTOR (I know about tanks, basically, that's currently the limit of my knowledge, and some minor knowledge on gunslingers and sages ^^)

    This is how you can help me to add support for a new spec now:

    1. Tell me what talents are involved which modify the combat result (especially talents which raise stats - even if only temporary - like Crit, Strength etc.).

    2. Define an "optimal" fight-rotation (I would say at least 5 minutes long) against an enemy with unlimited hit points (single target!) for your class/spec. When you develop this sequence you HAVE to take things like resource-costs (force, energy etc.) into account, and try to optimize the sequence as best as possible !!!

    The result of "2." is then written into a method like this (you can do this even if you are no programmer ^^), I am giving here an example (I did not list the complete method, that's why the "..." in the middle) of the Shadow Tank:

    double shadowtankspec::getDPS(StatsDps *dps, double &length)
    {
        double dmg;
        dmg = 0;
        length = 0;
        dmg+=slowtimeandkineticward(dps,length);
        dmg+=forcebreach(dps,length);
        dmg+=project(dps,length);
        dmg+=doublestrike(dps,length);
        dmg+=doublestrike(dps,length);
        dmg+=project(dps,length);
        dmg+=saberstrike(dps,length);
        dmg+=doublestrike(dps,length);
        dmg+=saberstrike(dps,length);
        dmg+=slowtime(dps,length);
        dmg+=forcebreach(dps,length);    
        // ... continues like that a lot !!!
        return dmg;
    }

    3. Definition of the Damage methods

    These methods will be defined in various classes, depending if they are spec-specific (in our example "Shadow-Tank") or AC-Specific (in our example "Shadow") or Class-specific (in our example "Consular"). For example you can define the skill "Project" in the context of the Consular, while "Slow Time" would be defined in the Shadowtank Context.

    A definition would look like this:

    abilities["consularspec::project"] = new Ability(0.058,0.098,0.78,0.01,kinetic);

    and later this:

    double consularspec::project(StatsDps *dps, double &length)
    {
      length += 1.5; // One GCD
      return getAbilityDmg((char*)__FUNCTION__,dps->mhdmgmin,dps->mhdmgmax,0,0,dps->dmgbonus,dps->critchance,dps->critsize);
    }

    (if anyone wonders what the "0"s are about, they are the offhand-damage, and obviously a consular does not have any offhand-damage... for a gunslinger or a sentinel here there would be actual a value - though this part is not yet implemented - it is included in the software design though, so later these classes can be added).

    Now, where do you get the data from? The numbers of the upper part you get from

    http://www.torhead.com/ability/3aA49qz/project

    (click on the "+" on Effect details to see the data we need!!!!)
    At the bottom of this page you see:

    SpellDamage: SpellType=>Force, StandardHealthPercentMin=>0.058, Slot=>None, Coefficient=>0.78, StandardHealthPercentMax=>0.098, AmountModifierPercent=>0.01, DamageType=>Kinetic
    which is exactly the data we need !!!

    If you need some special code (for example counting Harnessed Darkness stacks in our example) this needs to be implemented manually into the methods, of course. But if you are no programmer, you could describe the spell mechanics in question to me in text, and I will do the implementation part.

    My model currently assumes a bossmob which never dodges/absorbs. I am not sure if this is the best way to handle it, if anyone has any suggestions on this (for example "example boss data") feel free to it. This might be an interesting discussion.

    The code could be easily changed by me in the future to include just changes, though.

    When you are done with the sequence and the spell details, just email the results to tirionareonwe@gmail.com (that's me !!!) and I will add it to a future version.
    Please note that Project Shield currently cannot support Dual Wield classes (Gunslinger, Sentinel), but I *will* add support for them as soon as someone sends me the spell data/rotation data for these classes.

    I am aware this is a more simplified approach compared to what Rawr or simulationcraft do, but it's good enough ;-) Basically what Project Shield does is that it runs an example fight with this data 1000 times, and then calculates the average on these 1000 times.

    Thanks in advanc for anyone offering to help!!!

    MagicSN

  • #3
    hey i really like this project, we are planning on opening up an API for our data sometime soon, and we would allow you to get access to those spell stats so you dont have to rely on torhead. PM me if you are interested and i can help you out with it
  • #4

    will there be a working 64bit version?

  • #5

    I like the program, but one thing that is missing are the rakata armguards and belts.  Also as my tank is synthweaving I can (and have) proc a augment slot for them.

  • To post a comment, please login or register a new account.