[MUD-Dev] Trust systems and Player-Run Reputation

Brian Hook bwh at wksoftware.com
Mon Jun 25 20:18:31 CEST 2001


At 02:37 PM 6/25/01 -0600, Travis Nixon wrote:

> So here's my new (to me) proposal: I want to believe the ratings
> of people who rate others in the same way I do.

This is pretty much what I was thinking of for a trust system, but
didn't bother bringing up because of the technical issues.  I think
it would actually work very well in theory, but it would fail in
practice because of the severe computational and storage
requirements.

> First, and most important, it wouldn't work unless the rating
> system was used, and used heavily.

I don't think this is a real problem because future games will have
integrated "friends" and "enemies" lists.  You can just use that
data to formulate implicit reputations.  You don't really need
players to flag players on a sliding scale, I think a simple
three-state would be fine because the sheer amount of data generated
will supply the "real" rating (which can vary over a much larger
scale obviously).

> The second problem, which is almost as severe as the first, is
> that it is extremely imperfect for new players.

I don't think this is that bad a thing, because new players should
probably form their own opinions based on their experiences with a
couple individuals, and go from there.  It's like going to a new job
or a new school -- you don't know anyone, so you have an open mind.
As you make friends and relationships, the data immediately starts
to coalesce into something useful.

> more people you rate, the more closely you'll be matched with
> people whose views are similar to your own.

Right.  In my example, the more people on your friends, enemies, and
ignore lists, the better your data.

> But if you're new, you simply haven't rated anybody else, so
> there's no way to do any matching.

Hazards of being a newbie, but still no worse than what we see
today.

> The third probelm is the reason you all cringed back there.  There
> are definately technical issues, especially if you're talking
> about a large player base (which I think is pretty much a
> requirement for this to work anyway).

Yes, this is quite the bitch.  There may be some data structure that
would make this palatable so that either instantaneous (ideal) or
batch (non-ideal) updates can be done.  Aside from storage, there is
the search graph you have to take into account, so computationally
this could be REAL gross.

For example, if you want to know the rating on Bob, and both your
friend Dave and a friend of Dave have rated Bob, you want to weight
Dave's weighting much higher than the friend's.  Much like real
life:

  - you tend to put the most weight on people you personally know

  - you tend to weight the opinions of people you know more than
  strangers

  - you tend to weight the opinions of friends of people you know
  more than strangers

  - you tend to discount the opinions of strangers

You would also probably like a feature that compares your personal
rating vs. that of the aggregate of your friends.  For example,
George really, really pissed you off, and you flagged him as an
enemy.  It would be interesting to have an "alarm" go off if all
your friends have George rated as a friend, because it would
represent an anomalous point of data that you may want to redress
("Gee, I guess I must have made a bad opinion of him").

Off the top of my head:

One metric would consist of a steadily decreasing weight based on
the distance from the player.

  getRating( target )
  {
  rating =
           for all friends
                   if ( friend.opinion( target ) == 0 )
                           rating += friend.getRating();
                    else //see Note #1
                           rating += friend.opinion( target )/friend.distance
  return rating;
  }

Then optionally subtract off the equivalent amount for enemies.

Note #1: There are several ways to handle the situation where a
friend has an opinion of the target.  You could weight that friend's
opinion 100% and ignore his friends' opinions, or you could sum the
two to get an aggregate of his and his friends' opinions.  That
would be up to the developer to determine (hell, make it a player
controlled switch).  The nice thing about discounting the friends
lower in the tree is that it would speed up searches, stopping down
a branch the minute you find someone with an explicit opinion.

You could limit the search by depth, since you get diminishing
returns past some level, which in turn would be offset by the sheer
size of the data at that level of tree.

Also, the "distance" can be adjusted to give you the dampening
factor you want -- is a friend of a friend's opinion 50%, 5%, or 1%
the value of your friend's opinion?

Finally, one last tidbit is that you'd want to keep a flag so that
you know when someone's opinion has been accounted for and at what
depth -- that way you make sure you use Dave's opinion as a close
friend, instead of his opinion as a friend of a friend of a friend
of a friend.

The biggest problem is normalizing the scale since this is not a
clamped rating system.

Brian Hook

_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list