Elitist Jerks
Register
Blogs
Chat
Forums
New Posts


Go Back   Elitist Jerks > Public Discussion > Class Mechanics

Welcome to Elitist Jerks
If this is your first visit, please be sure to check out the FAQ and the forum rules. Users must register to post and new registrations are subject to a one day "mute" period to get acquainted with the community. To start viewing messages, select the forum that you want to visit from the selection below.

Reply
 
LinkBack (332) Thread Tools
Old 02/16/08, 5:26 PM   323 links from elsewhere to this Post. Click to view. #1 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
Rawr Model Development (v2.1.3 released on 12/02)

Download - Rawr - Release: Rawr 2.1.3

Rawr is now designed for use with WoW 3.0, primarily for characters up to level 80. Some things to note:
•We're not done. We've included only the models that have been updated for WoW 3.0; older models are available via our source control only, since they're not of much use until they get updated.
•To help you stay updated with the latest changes, Rawr will now check for new available updates, notify you if there's a newer version, and offer to open Rawr's website for you.
•We now have support for loading item data from Wowhead. Please note that the Wowhead parsing is brand new, so there are bound to be bugs. Please report any bugs you find, and we'll try to get them fixed asap.

Recent Changes:
v2.1.3: Improvements to CharacterProfiler support. Can now load items by exact name, as well as load from Armory and fail over to Wowhead if not found. Support for several new set bonuses and proc/use effects. Fixed base stat calculations in Retribution and Tankadin, and a few more calculation fixes in Retribution. Fixes for a few buff/enchant stats.
v2.1.2: Improvements to launch time, and item editor performance. Support for more set bonuses and abnormal item stats. Fix for crash in Priest models. Updates to base stats and rating conversions for several models. Fixes for requirements and optimization of several gems. Added ghost hit for Frostfire bolt in Mage. Fixed the formula for PW: Shield in HolyPriest. Improved calculations for Cat and Bear, and made Cat results more descriptive.v2.1.1: Improved calculations for level 80 combat for several models (Cat, Bear, HolyPriest, ShadowPriest, Mage, Moonkin, Tree, Healadin). Added Leatherworking and Inscription self-enchants. Fixed some bugs with mass gem replacement and the optimizer.
v2.1: Updated for level 80 content. Removed models which haven't yet been updated for WoW 3.0. Added two brand new models: Enhance and DPSDK! Welcome to Rawr, Enhancement Shamans and DPS Death Knights!


Here's a quick rundown of the status of each model:
•Rawr.Base: Fully functional. Still want to implement a global interface for glyphs, but they're left up to each model for now.
•Rawr.Bear: Fully functional for level 80.
•Rawr.Cat: Fully functional for level 80.
•Rawr.DPSDK: Fully functional for level 80.
•Rawr.DPSWarr: Not updated for 3.0.
•Rawr.Enhance: Fully functional for level 80.
•Rawr.Healadin: Fully functional for level 80.
•Rawr.HolyPriest: Fully functional for level 80.
•Rawr.Hunter: Fully functional for level 80.
•Rawr.Mage: Fully functional for level 80.
•Rawr.Moonkin: Fully functional for level 80.
•Rawr.ProtWarr: Partially updated for 3.0 & level 80.
•Rawr.RestoSham: Not updated for 3.0.
•Rawr.Retribution: Fully functional for level 80.
•Rawr.Rogue: Not updated for 3.0.
•Rawr.ShadowPriest: Fully functional for level 80.
•Rawr.Tankadin: Fully functional for level 80.
•Rawr.Tree: Fully functional for level 80.
•Rawr.Warlock: Not updated for 3.0.

As you can see, we still have alot of work ahead of us, but we're actively working on it.
If you are an experienced C# dev, a knowledgable theorycrafter, and would like to help out,
especially with the models which we haven't begun updating for 3.0, please contact me at
cnervig@hotmail.com. Thanks, and look forward to frequent updates!



Some of you, mostly ferals probably, may already be familiar with the program I've been developing, Rawr. Rawr is built to be as easy to use, and accurate, as possible. Rawr was a program for theorycrafting for Bears, up until last month when I added Cat support as well, in b10. Today I've released b11, which goes a long way to let Rawr support a wider variety of models. Rawr is used by thousands of ferals to explore their gear, and find and plan for upgrades.

Here's a screenshot of Rawr for those who haven't seen it before.


Detailed info about Rawr can be found at its site: The Druid Wiki � Rawr


I've built Rawr not just to be a theorycrafting program for ferals, but a platform for development of models for all classes/specs. I know there are many of you out there who are as passionate about your chosen class/spec as I am about Feral, and I want Rawr to support your class/spec as well. Rawr is built in C#, using .NET Framework 2.0, in Visual Studio 2008. Each Model is its own DLL, and Rawr will automatically load all models found in DLLs next to Rawr.exe. Rawr's codebase is in source control with its development site at Rawr - Home.

I'm making this post to help accelorate development of other models. Currently I develop Rawr.Bear, and Rawr.Cat (with most of the formulae for Rawr.Cat coming from Toskk). There's a Rawr.Hunter in the works as well. If you're a serious theorycrafter, and know the technologies used to make Rawr (C#, .NET Framework 2.0), you can make a model for your class/spec too, and I'd love to help. Making a model is alot easier than you may think; I've done everything I can to reduce the effort required, and fully commented all the code you'll need to work with or inherit from.



In the most concise terms, Rawr is a program for rating gear, enchants, buffs, etc. It will help you build sets of gear for whatever your purpose is, and most of all, it's accurate. Rawr takes everything possible into account when building ratings, in order to provide the most reliable ratings of gear. First, let me give a brief overview of how Rawr rates gear. In short, it doesn't. Rawr never looks at an item, and gives it a value based on what stats it has. In order to be as accurate as possible, Rawr only looks at the whole picture, the entire character, counting race, gear, enchants, buffs, info about your target, and any other calculation options. Based on the entire character, it will do all the calculations necessary to build one or more Ratings for the character (such as Survival and Mitigation for bears). So how do we get ratings for gear? The ratings for a piece of gear are defined as the difference between <The entire character with that item equipped> and <The entire character with that slot empty>. When Rawr says that one item is better than another by X points, that means that your entire character will be X points better with that item equipped, than the other. The same is done for buffs and enchants. This method is accurate because it takes all gear scaling into account, including the piece being equipped, and not the item you already have equipped.

So what does this mean that you need to be able to calculate in order to build a Rawr model? There are 2 main things that you need calculations for. First, building total basic stats for the character from their race, items, enchants, and buffs. Second, taking the total basic stats, and calculating any complex stats, and finally the one or more Ratings.


Currently, most theorycrafters create advanced spreadsheets to do their calculations, and distribute to users. Rawr is designed to fill the role currently filled by spreadsheets. Rawr is much more easy to use, helping more users to understand how their class works, since Rawr is graphical, and you see changes to your character as you make them, visually. Rawr automatically handles item data, including gems. Rawr is much faster at calculations than the spreadsheets, and is limitless in what calculations you can do, whereas the spreadsheets are difficult to develop, and limited on the amount of calculations you can do. Typically, you'll be reduced to using inaccurate 'equivalency' models in spreadsheets, to determine item value, whereas Rawr stays as accurate as you can write the formulas for calculating the whole character. Rawr also handles getting the user's character data from the Armory, loading new items from the Armory, and updating items as they change on the Armory. If you'd like to know more about what exactly you need to implement in order to create a Rawr model, the next post will give you the specific details.

Last edited by Astrylian : 12/03/08 at 6:18 AM.
 
User is offline.
Reply With Quote
Old 02/16/08, 5:27 PM   #2 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
First, in general terms, what do you need to make a Rawr model?

Formulae for Character Stats: You'll need the formulae to combine all the stats on gear, enchants, from race, buffs, etc, into the total basic stats for a character (such as Agi, Sta, Defense, Attack Power, etc.).

Ratings: You need a method for rating a whole character including gear, buffs, enchants, race, etc, and coming up with one or more Ratings (such as Survival and Mitigation for bears), which will total up to a single Overall Rating.

Specific Calculations: Probably in the course of determining the Ratings above, you'll make more specific calculations. These are things like Dodge%, Damage Reduction from Armor, etc.

Chart Design: You'll need to choose a color to represent each Rating you have, in the charts. You can also design your own custom charts, but that's not required.

Relevant Proficiancies/Stats: You'll need a list of what all types of stats are beneficial to the target class/spec, and what proficiancies they have (leather, main, staves, bows, etc).

Model Calculation Options: You can also further customize how the calculations are performed, by creating a panel of options for the model (for things such as Target Level and Armor, or for what dps rotation to use, etc.), if desired.

Stats, Buffs, and Enchants: You'll need to add to Rawr the different buffs, enchants, and tracking for each stat that your target class/spec will use, and how to parse the Armory item XML to determine how much of each of those stats are on an item.

C# Knowledge: Rawr is written in C#, using .NET Framework 2.0, using Visual Studio 2008, so you'll need to be familiar with those technologies.


If that all still sounds good, here are the specific things your DLL will need to contain, using examples from Rawr.Bear:
  • CalculationsBear - Inherits from CalculationsBase, the model's main Calculations class, containing most of the formulae and calculation code.
    • SubPointNameColors - Dictionary<string, Color> that includes the names of each rating which your model will use, and a color for each. These colors will be used in the charts.
    • CharacterDisplayCalculationLabels - An array of strings which will be used to build the calculation display. Each string must be in the format of "Heading:Label". Heading will be used as the text of the group box containing all labels that have the same Heading. Label will be the label of that calculation, and may be appended with '*' followed by a description of that calculation which will be displayed in a tooltip for that label. Label (without the tooltip string) must be unique.
    • CustomChartNames - The names of all custom charts provided by the model, if any.
    • CalculationOptionsPanel - A custom panel inheriting from CalculationOptionsPanelBase which contains controls for setting CalculationOptions for the model. CalculationOptions are stored in the Character, and can be used by multiple models. See comments on CalculationOptionsPanelBase for more details.
    • RelevantItemTypes - List<Item.ItemType> containing all of the ItemTypes relevant to this model. Typically this means all types of armor/weapons that the intended class is able to use, but may also be trimmed down further if some aren't typically used. Item.ItemType.None should almost always be included, because that type includes items with no proficiancy requirement, such as rings, necklaces, cloaks, held in off hand items, etc.
    • GetCharacterCalculations(Character character, Item additionalItem) - GetCharacterCalculations is the primary method of each model, where a majority of the calculations and formulae will be used. GetCharacterCalculations should call GetCharacterStats(), and based on those total stats for the character, and any calculationoptions on the character, perform all the calculations required to come up with the final calculations defined in CharacterDisplayCalculationLabels, including an Overall rating, and all Sub ratings defined in SubPointNameColors.
    • GetCharacterStats(Character character, Item additionalItem) - GetCharacterStats is the 2nd-most calculation intensive method in a model. Here the model will combine all of the information about the character, including race, gear, enchants, buffs, calculationoptions, etc., to form a single combined Stats object. Three of the methods below can be called from this method to help total up stats: GetItemStats(character, additionalItem), GetEnchantsStats(character), and GetBuffsStats(character.ActiveBuffs).
    • GetCustomChartData(Character character, string chartName) - Gets data to fill a custom chart, based on the chart name, as defined in CustomChartNames.
    • GetRelevantStats(Stats stats) - Filters a Stats object to just the stats relevant to the model.
    • HasRelevantStats(Stats stats) - Tests whether there are positive relevant stats in the Stats object.
  • CharacerCalculationsBear - Inherits from CharacerCalculationsBase, will hold the final result data of the calculations from GetCharacterCalculations(). Your class should inherit from this, and include fields to hold the needed data. May also include additional data needed to properly format the display calculations, such as values of some of the CalculationOptions.
    • OverallPoints - The Overall rating points for the whole character.
    • SubPoints - The Sub rating points for the whole character, in the order defined in SubPointNameColors. Should sum up to OverallPoints. You could have this field build/parse an array of floats based on floats stored in other fields, or you could have this get/set a private float[], and have the fields of your individual Sub points refer to specific indexes of this field.
    • GetCharacterDisplayCalculationValues() - Builds a dictionary containing the values to display for each of the calculations defined in CharacterDisplayCalculationLabels. The key should be the Label of each display calculation, and the value should be the value to display, optionally appended with '*' followed by any string you'd like displayed as a tooltip on the value.
  • ComparisonCalculationBear - Inherits from ComparisonCalculationBase, will hold the final result data of rating calculations of an individual Item/Enchant/Buff/etc. Most likely, no additional fields will be needed, other than fields for each individual Sub rating.
    • Name - The Name of the object being rated. This will show up as the label on the left, in the chart.
    • OverallPoints - The Overall rating points for the object being rated.
    • SubPoints - The Sub rating points for the object being rated, in ther order defined in SubPointNameColors. May refer to a private float[], or build/parse a float[] and get/set the individual Sub point fields.
    • Item - The Item, or other object, being rated. This property is used to build the tooltip for this object in the chart. If this is null, no tooltip will be displayed. If the object is not an Item, a new blank item may be created for this field, containing just a Name and Stats.
    • Equipped - Whether the object beign rated is currently equipped by the character. This controls whether the item's label is highlighted in light blue on the charts.
  • CalculationOptionsPanelBear - Inherits from CalculationOptionsPanelBase, a custom user control for the model. The instance of the custom class returned by CalculationOptionsPanel will be placed in the Options tab on the main form when the model is active. Should contain controls to edit the CalculationOptions on the character.
    • Icon - An icon to be used for the main form when the model is active.
    • Character - The current character. Will be set whenever the model loads or a character is loaded.
    • LoadCalculationOptions() - Sets default values for each CalculationOption used by the model, if they don't already exist, and then populates the controls with the current values in Character.CalculationOptions. You don't need to call Character.OnItemsChanged() at the end of this method, only after changing the value of any CalculationOptions from other methods (such as value changing event handlers on the controls).


If you'd like to develop a Rawr model, either from scratch, or based on a spreadsheet, the first thing to do would be to talk to me via PM here, or e-mail (cnervig@hotmail), or IM me (cnervig@hotmail.com on MSN, Astro tSD on AIM), and we can setup a developer account for you on the CodePlex site. I look forward to helping out with more Rawr models! I'll do my best to answer any questions you have, here, or directly, and will do what I can to fill in holes in Rawr's functionality if your class/spec needs a feature that it doesn't already have. Thanks!
 
User is offline.
Reply With Quote
Old 02/16/08, 11:41 PM   #3 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
Looks like we've got both a hunter and now a rogue version in the works.
 
User is offline.
Reply With Quote
Old 02/17/08, 3:43 PM   #4 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
...And a warlock one.
 
User is offline.
Reply With Quote
Old 02/17/08, 9:52 PM   #5 (permalink)
Von Kaiser
 
SeanDamnit's Avatar
 
Draenei Paladin
 
Ner'zhul
Good work on this, I like it alot. If I knew how I'd jump in there and help out.

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
 
User is offline.
Reply With Quote
Old 02/18/08, 12:32 AM   #6 (permalink)
Glass Joe
 
Alefica's Avatar
 
Undead Warlock
 
Uther
wow this is awesome! Will give me something to do when i'm in class and don't feel like taking notes. Great work!

Oh and please make a warlock version!
 
User is offline.
Reply With Quote
Old 02/18/08, 10:43 AM   #7 (permalink)
Piston Honda
 
Dwarf Warrior
 
Argent Dawn (EU)
At first glance this looks brilliant and I hope someone steps in to create a Warrior Tank version

Last edited by Borodin : 04/10/08 at 11:58 AM.
 
User is offline.
Reply With Quote
Old 02/18/08, 11:08 AM   #8 (permalink)
Don Flamenco
 
Tauren Druid
 
Gul'dan (EU)
Perhaps you could add an optimize / maximize function. For example to maximize avoidance within a given gearset.

A genetic algorithm could achieve very good results for this problem with little cpu time. I could give you some help if you chose to add it.
 
User is offline.
Reply With Quote
Old 02/18/08, 11:18 AM   #9 (permalink)
Piston Honda
 
Dwarf Paladin
 
Baelgun
Originally Posted by Malazaar View Post
Perhaps you could add an optimize / maximize function. For example to maximize avoidance within a given gearset.

A genetic algorithm could achieve very good results for this problem with little cpu time. I could give you some help if you chose to add it.
I can help with that as well; it's actually something I've been looking for in a theorycrafting program for a while. I would also like to volunteer to help or to write a module for protection paladins, my first favorite class/spec in the game.
 
User is offline.
Reply With Quote
Old 02/18/08, 11:19 AM   #10 (permalink)
Glass Joe
 
Tauren Druid
 
Ravenholdt
Currently, how do you update the items? Are they grabbed from Wowhead or other wow item databases?
 
User is offline.
Reply With Quote
Old 02/18/08, 11:44 AM   #11 (permalink)
Bioware, you're my only hope
 
Erren's Avatar
 
Human Warrior
 
Whisperwind
They're updated from the Armory.

You can even add items from the armory just by adding the item id #
 
User is offline.
Reply With Quote
Old 02/18/08, 1:00 PM   #12 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
Originally Posted by Malazaar View Post
Perhaps you could add an optimize / maximize function. For example to maximize avoidance within a given gearset.

A genetic algorithm could achieve very good results for this problem with little cpu time. I could give you some help if you chose to add it.
Indeed, an optimizer is on my list of things to do.
 
User is offline.
Reply With Quote
Old 02/18/08, 1:53 PM   #13 (permalink)
In the Beginning was the Command Line
 
Malan's Avatar
 
Tauren Shaman
 
Mal'Ganis
Have you considered moving this to a non platform dependent language?

Vyktianity already has over 75 billion followers. The first verse in his book "Gift of the Wild" is "In the beginning Vyk cast lifebloom and then maul."
 
User is offline.
Reply With Quote
Old 02/18/08, 1:56 PM   #14 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
Originally Posted by Malan View Post
Have you considered moving this to a non platform dependent language?
It already runs (at least as of b10, haven't tried b11, but don't see why it wouldn't) on Mono, including Mono on CrossOver for Mac. I'd still like to make a Mac native version at some point, though. Beyond that, no, I'd like to leave it as C#.

Wanna make Rawr.EnhSham?
 
User is offline.
Reply With Quote
Old 02/18/08, 1:57 PM   #15 (permalink)
Piston Honda
 
Dwarf Paladin
 
Baelgun
This post has been deleted.

Last edited by thedopefishlives : 02/18/08 at 1:58 PM. Reason: Beaten to the punch...
 
User is offline.
Reply With Quote
Old 02/18/08, 1:59 PM   #16 (permalink)
In the Beginning was the Command Line
 
Malan's Avatar
 
Tauren Shaman
 
Mal'Ganis
I actually have no idea what Mono is, I'll take a look.

Originally Posted by Astrylian View Post
Wanna make Rawr.EnhSham?
This is actually intriguing to me, and doing some thinking today its really making me question if our current model for Enhancement Shaman is going about it correctly.

Vyktianity already has over 75 billion followers. The first verse in his book "Gift of the Wild" is "In the beginning Vyk cast lifebloom and then maul."
 
User is offline.
Reply With Quote
Old 02/18/08, 2:06 PM   #17 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
Originally Posted by Malan View Post
I actually have no idea what Mono is, I'll take a look.
Mono is an open-source implementation of the .NET Framework. It's like 95% complete. I ran Rawr b10 on my MacBookPro using CrossOver (a commercial, with free trial, port of Wine to OSX, which Mono can use for the core windows APIs).
 
User is offline.
Reply With Quote
Old 02/18/08, 9:16 PM   #18 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
We're now up to 8 models in the works... Bear, Cat, Warlock, Rogue, Hunter, Protadin, Moonkin, Mage.
 
User is offline.
Reply With Quote
Old 02/19/08, 6:18 AM   #19 (permalink)
Glass Joe
 
Night Elf Druid
 
Dethecus (EU)
bear threat?

anyone developing a bear.threat model ?
 
User is offline.
Reply With Quote
Old 02/19/08, 9:20 AM   #20 (permalink)
Paladins can't tank
 
Orc Death Knight
 
Al'Akir (EU)
I'm already looking at how we might model threat, because it's pretty obvious that in the majority of cases, warrior gear >> palatank gear, without considering the threat component. In the protadin case, threat generation will certainly be factored into the rest of the rawr.protadin library, and I would suggest it will probably end up making it's way into the bear and (eventually) warrior libraries, too.
 
User is offline.
Reply With Quote
Old 02/19/08, 12:34 PM   #21 (permalink)
Rawr
 
Astrylian's Avatar
 
Night Elf Druid
 
Eonar
Originally Posted by herzausgold View Post
anyone developing a bear.threat model ?
Yep, it'll be part of Rawr.Bear.
 
User is offline.
Reply With Quote
Old 02/19/08, 12:50 PM   #22 (permalink)
Alaskan Bear Wrestler
 
Hardbody's Avatar
 
Draenei Shaman
 
Bleeding Hollow
Better yet, we could make it a community thing to try and get a rawr for all the existing specs and classes that have been theorycrafted extensively in this section. (To bad i'm both math and programming illiterate and would be of no use whatsoever in furthering this idea.)

Originally Posted by Cowbell View Post
- Every man who reads the BB has a genius IQ and a ten inch cock
 
User is offline.
Reply With Quote