Projects‎ > ‎


A World of Warcraft addon for keeping a distributed player rating amongst a guild or other group of players. Ideally useful in a guild for keeping track of those people outside of the guild who might be good in a PUG (Pick Up Group, ie: random strangers), and a good warning away from people who are bad.

Available at

How it works

PUGPSG is intended to work as an easy way to gather comments on players outside of your circle of friends, by your circle of friends. The addon is an attempt to automate a conversation like the following:
  • Me: "Hey, has anyone heard of SuperDudeMage?"
  • Friend 1: "I know him, and he's OK. Some of my other friends think he's great"
  • Friend 2: "I don't know him, but I've heard he's great"
Everyone has the opportunity to form a Direct Opinion against any character. Everyone is free to give out their own Direct Opinion whenever asked.

An Indirect Opinion is someone else's Direct Opinion. Everyone is free to remember Indirect Opinions, but nobody may ever give one out.

The Average Indirect Opinion is the average of all the Indirect Opinions received. Everyone is free to give out their own Average Indirect Opinion whenever asked.

A Hearsay Opinion is the average of all the received Average Indirect Opinions. It is never transmitted, it is simply computed for display to the user. It is the fallback for when there's no other data to go on. It's effectively "well, most of my friends say that most of _their_ friends like this guy... so I guess he's ok..."

So when I ask about SuperDudeMage, I can expect to receive the following from anyone listening:
  • The responding person's Direct Opinion (which I will save as an Indirect Opinion)
  • The responding person's Average Indirect Opinion (computed by them from their own stored Indirect Opinions)
If anyone later asks me about SuperDudeMage, I can respond with the following:
  • My own Direct Opinion (if I have formed one)
  • My own Average Indirect Opinion (which is computed based upon the Indirect Opinions I've saved)
You'll note that as part of this system, I can never state "JimWarrior thinks SuprtDudeMage sucks." I can never presume to have the right to speak on JimWarrior's behalf. I may only speak of my own opinion, and offer a generalization of the feelings of the people I know.

So what goes into an Opinion?

That's where the "PSG" portion of the name comes into play. I figure that in Warcraft, there are three simple things that can be rated for a given character: Personality, Skill, and Gear. Now, these things may very well not be the absolute ideal in rating any given individual, but as of the time of this writing, I think it's about the best set I can come up with. To make it actually feasible to compute anything with this data, we're going to have to formalize an attribute's rating into something simple, like a number. For my initial implementation, I'm going to consider those attributes as nothing more than an integer between 0 and 10, which will actually be dealt with as five stars (zero stars, half star, one star, one and a half stars, etc. until five stars), and a special meaning reserved for -1 to indicate no data. I'm also going to allow for a short free-form text comment on each attribute, and again for overall.

So a Direct Opinion would consist of the following data.
  • Overall comment
  • Personality score (-1 .. 10)
  • Personality comment
  • Skill score (-1 .. 10)
  • Skill comment
  • Gear score (-1 .. 10)
  • Gear comment
An Indirect Opinion would consist of the same data as a Direct Opinion, but it would also associate the name of the character owning the opinion, and the date that opinion was last modified.

When reporting an Average Indirect Opinion, the following data would be transmitted.
  • Average Personality score from Indirect Opinions
  • count of non-negative personality scores averaged
  • Average Skill score from Indirect Opinions
  • count of non-negative skill scores averaged
  • Average Gear score from Indirect Opinions
  • count of non-negative gear scores averaged

From a UI Perspective

I'd consider a simple "Rating" page that could be brought up for any toon, online or offline. It would present:
  • The user's Direct Opinion, which could be modified in place
  • Any Indirect Opinions
  • The average of the Indirect Opinions and the Hearsay Opinion (The Hearsay Opinion is the average of all the received Average Indirect Opinions)


Vanity ruins rating systems. It ruins social networking systems. It ruins the ability to give an honest opinion, for fear of having the object of your opinion discover it. There are a few things that PUGPSG does to help prevent the "everyone says they like everyone else, because they don't want to insult" situations.

First, as noted above, you may never report someone elses individual opinions; you may only report your own. You cannot ask me what someone else thinks of you via this tool.

Secondly, the tool needs to attempt to prevent anyone from asking about themselves, or any other characters they may have on their account. This can be gotten around easily, but any preventative here is helpful to drive people away from trying to use this to gauge their popularity.

Thirdly, the tool needs to attempt to not answer vanity requests. Most simply, it should never reply to a toon asking for its own rating.