[MUD-Dev] Reputation systems: a possible path for investigation

Andrew L. Tepper teppy at egenesis.com
Tue Aug 12 18:33:54 CEST 2003


Something related to reputation systems are ranking systems. In a
reputation system, you say "I trust JC, and JC trusts Ed, therefore
I can trust Ed. A good property of a ranking system is that if JC
tends to beat Ed, and I tend to beat JC, then I should tend to beat
Ed.

Both systems are things that players will want to game
(manipulate). We use an algorithm in A Tale in the Desert which has
this property, and is game-resistant. It's described here:

  http://www.egenesis.com/erank.rtf

Andy Tepper

<EdNote: Below, minorly reformatted for clarity>

--<cut>--
The eGenesis Ranking SystemA highly cheat-resistant, zero-sum
ranking system for multi player games

Andrew L. Tepper, BS
Josh M. Yelon, PhD

February 15, 2002

Problem:

  Ranking systems such as ELO are often used to rate chess
  players. These systems attempt to encourage players to compete
  against others of a similar skill level by making matches between
  an advanced player A, and a beginner player B be risky for A, and
  rewarding for B.

    In the case that A wins:

      A gains a small number of points
      B loses a small number of points

    In the case that B wins:

      A loses a large number of points
      B gains a large number of points

  These systems are subject to cheating. If a player A wishes to
  boost his rank, he conspires with friends B, C, and D as follows:

    - B Plays C several times, intentionally losing to boost C's
    rank.

    - C Plays A several times, intentionally losing to greatly boost
    A's rank.

    - Another friend D is brought in. The three play each other in
    the same pattern to boost D.

    - D Plays A several times, intentionally losing to further boost
    A's rank.

  The pattern is recursive: Players P1 thru PN-1 play each other to
  boost PN-1, who then loses to PN.

Solution:

  Each player in the system starts with a vector of 256 bits. Half
  of these bits, randomly selected, are set. A players rank is the
  number of bits set.

  We number each bit 0-255. When a match occurs between two players,
  A and B, a series of 32 hash values in the range 0 to 255 are
  computed based on the players names such that the same two players
  always yield the same 32 values. For each value, we inspect that
  bit in both players vectors. When a bit is set in the losers
  vector, and clear in the winners vector, we transfer that bit:
  clear it in the losers vector, and set it in the winners. In all
  other cases we do nothing. This system forces players to play a
  wide variety of others to boost their rank.

  Still, its possible to boost your rank by only playing
  beginners. To combat this, we modify the algorithm as follows:
  Each player starts with their bit vector clear. They also have 128
  reserve bits which are stored simply as a count. A players rank is
  equal to the number of bits set in his vector, plus the number of
  bits in reserve. When a match occurs, bits are transferred as
  above, with the following additional rule: When one of the 32
  values bits are clear in both the winners and losers vectors, a
  bit is attempted to be transferred from the winners reserve to a
  specially selected clear bit in his own vector. This specially
  selected bit is based on a different hash function that again
  incorporates both players names. The losers vector and reserve are
  untouched. In this way, someone who only plays beginners doesnt
  affect his own rank, but may boost the beginners rank.

Practical Applications:

  We designed this ranking system to be used in massively
  multiplayer online games such as A Tale in the Desert
  (http://www.ataleinthedesert.com). There are some additional
  considerations to take into account.

  First, beginners should have the sense that they are making
  progress when they first start playing. To resolve this, we report
  everyones rank as simply the number of bits set in their vector,
  ignoring their reserve bit count.

  Second, friends like to play each other repeatedly, and should see
  progress on more than just the first game. To resolve this,
  instead of attempting transfers for all 32 bits, we randomly
  select 8 of the bits to transfer. In subsequent matches won by the
  same person, there are fewer bits to transfer, and eventually this
  number dwindles to none, but it allows for friends to play each
  other repeatedly and still see some progress.
--<cut>--
_______________________________________________
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