Import be.imba scores (and list guild by score rank)

Feb 3, 2009 at 10:48 AM
http://be.imba.hu has opened up their API to allow SOAP calls to query the be.imba gear scores for characters.  Also, there has been a .Net library written to use this interface at http://www.codeplex.com/libbeimba.

What I'd like to request is that the WowGuildRoster import these scores to be displayed with the character info, and optionally show the class lists sorted by their gear score.  This would be a great tool to allow raid leaders to quickly sort through raid applicants in order to build a solid team for progression content.
Coordinator
Feb 7, 2009 at 12:33 AM
Edited Feb 7, 2009 at 12:34 AM
Hi Rask,

I'll take a look at this in a couple weeks. I just want to get my main character to 80 (just dinged 78 last night), then I'll turn my attention to another release of the roster. :)

How would you like to see these scores incorporated into the module? Just on the character screen? (the idea of gear scores is new to me)
Coordinator
Feb 15, 2009 at 9:13 PM
Okay - I did some initial looking at my code, and I think I should be able to do this by providing an additional DLL to do the loads (you would need to add a second DNN scheduler task to pull from).

But looking at the API's - they're all SOAP calls. I would really like to leverage WCF to do this, but it would be .NET 3.5.

What would you're reaction be if I added support for this, but it was only available in DNN 5.0 and above?
Feb 17, 2009 at 10:30 PM
Hi there,

DNN 5.0 is in my upgrade path, and this would be a compelling reason for me to upgrade sooner rather than later.  =)

I've applied for an API key fro the be.imba website, but am still waiting for a response.
Coordinator
Feb 21, 2009 at 12:02 AM
Cool.

I requested a client ID, and will see how this may work out. The only complicating factor is that each site would most likely have to request a client ID from the site.

What I may do is make a service to hit that site be DNN 5.0 only - or otherwise look at creating v2 of the roster and make the whole thing DNN 5 only - using WCF and LINQ throughout.


Curiosity - is there a generally accepted formula for calculating those scores? I would be happy to incoporate a scoring formula for characters.
Feb 23, 2009 at 10:27 AM
I've seen a couple different websites implement gear scores, but my own preference for be.imba is that it deducts PvP statistics from gear in order to get a more realistic PvE gear score, and thus gives a raid planner a better idea of a player's capabilities.  If you are able to work out their formula, it would save querying their site, but I suspect it's not a simple formula.

From their FAQ:

Q: What is PvE gear score? 
A: It is a measure of the PvE "power" of your gear.
Your items' absolute item budget value is calculated and added together, this gives your raw gear score. Some items are excluded from this calculation, like for example Riding Crop, fishing poles, and similar items.

For PvP items the item budget value for the non-PvE stats is calculated (this includes Spell Penetration, Resilience, and some fraction of the Stamina bonus depending on the character's role), the total of these values is your PvP penalty score.

Every socketed gem's item budget value is determined and totaled, giving your gem score. Some gems have reduced or zero value if they are meant for PvP.

Every enchant's item budget value is determined and totaled, giving your enchant score. Some enchants have reduced or zero value if they are meant for PvP.

Your final PvE Gear Score is: Sum of (Raw Scores - PvP Penalties) + Gem Scores + Enchant Scores.


(The item's budget for allocated points is set by Blizzard depending on the item's iLevel and quality.  For example, an iLevel 200 Rare item will have so many "points" to spend on stats, while an iLevel 200 Epic item would have a bigger point pool.)
Coordinator
Feb 26, 2009 at 7:41 PM
Thanks.

I still haven't heard from the be.imba folks about getting a client ID...which worries me on two fronts: (1) it looks like there is a very long turn-around for generating the client IDs in general, and (2) I don't think I'll be able to include a client ID in my code, which means that each guild website would need to request their own code in order to make use of it on their site.

As well, the site takes a long time to pull the data and score the character. I can only assume that they have their own throttling process in place so that they don't get blocked by Blizzard with the server busy errors that initially plagued me. I have some nightmares about what an update process could look like if I need to submit each character and then wait a couple minutes per character entry to get scored. I'm hoping that they allow for the ability to submit a character and item set, and get the scoring back - but we'll see how that goes.
Coordinator
Feb 26, 2009 at 8:10 PM
BTW - I'll start poking around on this starting this weekend.

What I am probably going to do is create a v2 of the guild roster that is .NET 3.5, and thus DNN 5.x+.

Current thoughts:
- Replace the data tables for storing stats (I'll leave base chars alone to preserve data)
- Replace the current data layer code to use a graphical dataset object and a couple stored procedures (I'm going to rip out the initial attempt at creating a data layer provider model to ease non-SQL Server support - this should yield a 60% code reduction in the data layer, and reduce the number of errors). Along these lines, I'll be adding support for SDS (SQL Data Services) to allow for an easier Azure implementation - I may just use the Entity Framework here.
- Move from strings to IDs in the tables (for sex, classes, races) and place the IDs in a RESX file to make the entire thing localizable from the ground up - this should also allow for this to start to move beyond WoW in an easier fashion
- Recode the Armory parser to use WCF and LINQ (should yield a 70% code reduction and a speed boost) and allow me to pull only what I'm interested in
- Start converting the AJAX code to use jQuery
- Replace the WinForms 'test app' with unit tests. I don't think I'll go as far as putting in a mocking framework, but I think that using VS unit tests would be better than the current model

Any wants or thoughts as I look to bring this up to 3.5?
Feb 26, 2009 at 10:41 PM
Importing character Achievements (or at least Achievement scores) would be nice.  =)
Coordinator
Mar 2, 2009 at 6:12 AM
Okay - I'll implement achievements. :)

Along these lines, do you use reputations? I had originally pulled them to tell who was 'keyed' for what - but achievements now tell that story better than reps do.
Mar 4, 2009 at 4:18 AM
Having 37 Exalted reputations and working on getting 40 for the title, I would not be opposed to seeing reputations included.  =)
Coordinator
May 5, 2009 at 1:42 AM
BTW - I've reached out to the admin at be.imba.hu a couple times and still no response.

I'll look into implementing a gear score.
Jul 8, 2009 at 9:10 PM

First of all, just let me say "Nice work".

I would be very interested in a v2 of this tool. Any updates or thoughts on a timeline and/or what it would include?

I would love to see Achievements, Dual Specs, and Gear Scores (each of which I have seen discussed in this and other threads).

One thing to keep in mind if you intend to implement Dual Specs AND Gear Scores, the armory seems to only take a snapshot of what the character was last wearing. Most folks who have dual specs, also have a (likely different) set of equipment they wear with each spec. Perhaps you could do something like storing what spec and gear the character was wearing when synching with the Armory. Keeping 2 seperate  sets of information, and then tie the specs and the gear together for display  (I hope I am making sense trying to describe this). This would be an invaluable tool when tryign to plan, not just what specs members are, but how well equipped each of those specs would be as well.

Thanks and keep up the good work.

Coordinator
Jul 10, 2009 at 4:15 PM

My thoughts on this were a couple fold (and feedback would be lovely):

  • The data currently allows for spec 1 and spec 2 (and current spec)
  • I would add storage of items/gems/enchants along with iLevels (currently not stored) and glyphs (also not currently stored)
  • the items/glyphs would have a column/marker for spec 1 and spec 2
  • On the character sheet, we would add two options:
    • Button for 'This is my Primary Spec'
    • Buttons for 'Link this item set to spec 1' and 'Link this item set to spec 2'

I would likely redo the data tables to better serialize Blizzard's XML format (and I'm considering simply storing the XML and parsing it real-time, of all things, to avoid the current acrobatics I'm doing with skills/reps which would likely reappear if I were to store achievements).

But this is good - excellent requirements. :)

BTW - I never heard back from be.imba - booooooooo!

Jul 10, 2009 at 7:01 PM

Would the be a way to have the gear match the spec more or less automatically, rather than have a user assign them? I was thinking it could fill in the gear slots tied to the spec they last logged out in (this is currently what the armory displays). Then, when they log out in one spec, assign the gear there, if they log out in the 2nd spec, update that set of gear instead.

I see a couple of holes in this, and am completely unsure how to handle the exceptions I can come up with off the top of my head.

  • The armory DOES NOT show what you have in your bags or bank, and this is where the offset gear would be stored.
  • What do you do about handling respecs. How do you know which spec is no longer to be stored locally as it does not apply anymore. etc.
  • What if a character never logs out using the second spec?
  • what if they DO USE the same gear for both specs (my mage currently does, both specs are simply variations as a mage is straight DPS)

Thanks for letting us put these issues in front of you, I know my guildmates and I really appreciate your hard work.

Coordinator
Jul 10, 2009 at 8:57 PM

Great points; to your thoughts, what I could do is this:

  • At Armory pull, pull both specs and store in general character data table
  • At armory pull, pull current armor and store it associated with current spec (your suggestion above)

This would mean that it would automatically overwrite the last 'set of items' in that particular spec, as you point out. To your points, I would think the following:

  • If the char never logs out in a given spec (or is logged out in a given spec when the Armory pull happens), then it will never show up
  • If they do use the same gear for both specs, then it will be stored in both specs (using the above implementation)
  • The game tracks specs as spec #1 and spec #2, and I am simply following that categorization. If they respec, I'll grab the new spec (say, spec #2) at the next following Armory pull -- but it will keep the old equipment for that spec (spec #2) until they log out in equipment as that spec (spec #2). If they constantly stay in the other spec (spec #1) after respeccing (spec #2), then it will constantly read the old item set until they log out (in spec #2).
  • We could, potentially, allow them to specify an Item ID as an override for an item, or allow them to say 'this is my set for this spec' and have that lock the set in place, and not update it until the lock/protection is removed.

And my pleasure for getting feedback. You have no idea how demotivating it is to develop something without feedback (positive or negative); keep it coming! :D

Jul 10, 2009 at 9:53 PM

That sounds like it would work.  Also, a unique gear score could be assigned to each spec, so we can see how well they're geared for each spec.  For example, a pally that mainly tanks and rarely heals would have a higher gear score for their Prot spec than for their Holy spec.

The wow-heroes.com site doesn't give their score formula out, either, but here's what the author has to say:

Well, all I can say at this moment is that gear score depends on:
ilvl of your item. That number will be replaced with "real" item value at some point, but for now, item levels are taken into account
- value of that specific item (trash, common, uncommon, rare, epic, legendary). If that item contains gem slots, gem quality is taken into account
- resilience found on each item (resilience is useless in PvE 99% of the time, so if that specific item got its ilvl with resilience included, it should have slightly lower ilvl). Yes, I know that some PvP weapons are just as good, if not even better than some PvE items, I'll look into that problem soon.
- few more factors which shouldn't have any big influence on the overall gear score

Now I'm sure I'll get flamed now for "why don't you remove penalty from .... and put penalty for ..... etc, etc" but as far as I see, this formula does the job fine most of the time. I'm not saying it wont be changed at some point, maybe even very soon, I'm just saying how it is at the moment. :)

 

Once we have gear scores, I'd like to be able to manually set a score range for each raid, so that it would be a quick check to see who is geared for that raid (player performance is another issue, but that's not so easily automated).

Nov 20, 2009 at 9:58 PM

In regards to a Gear Score algorithm, you may want to talk to the author of the GearScore addon at http://gearscore.blogspot.com/.  He's put some work into calculating a relevant gear score based on a character's gear and spec, including such features as deducting score when a melee wears spellpower gear, or adding score when someone has a [Darkmoon Card: Greatness] (because it's much better than the iLevel 200 would imply), and the like.

It would also be nice to see our guild website show the same numbers as the in-game addon.  =)