Complete.Org: Mailing Lists: Archives: tetrinext: February 2000:
[tetrinext] draft of specific scoring details
Home

[tetrinext] draft of specific scoring details

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: tetrinext@xxxxxxxxxxxx
Subject: [tetrinext] draft of specific scoring details
From: Jared Johnson <solomon@xxxxxxxxxxxxx>
Date: Tue, 22 Feb 2000 12:33:17 GMT
Reply-to: tetrinext@xxxxxxxxxxxx

The following is a rough draft of what might someday be one of the rating
specifications used for TINT.  It's based on the Elo rating system used 
primarily in
Chess and many online gaming systems that host board games and such.

i'm writing this up primarily so that i can send it to a friend of mine who is
going to hack up the Tetrix source to use this system, so that I can test it on
my own tetrinet server and see how it works.  here goes.



Defining "Wins" and "Losses"



This is fairly simple, but important, because all the weird math involved
assumes that a player has either won or lost.  A player has "won" an instance 
if he
has outlived another player; he has "lost" when another player outlives him. 
Thus, in a game with five people, the player that came in second has won three
times and lots once.  Of course, the player that won the entire game has four 
wins
and zero losses.  This works the same for team games, individual, and mixed.



Initializing a Player's Rating



Every player starts with a rating of 1000.  This is the assumed "average" in
the Elo system.  This rating is only held for the very first game, for the sole
purpose of having something besides 0 to adjust the other players' ratings 
with. 
For the first 10 games (or so), we will use a different equation than the
equation we'll use after those 10 or so games.  This is designed to get the 
player's
rating about away from 1600 and where it ought to be.  After it is about where 
it
should be, the second equation is used.  FYI, Most of this is taken from the
all-knowing chess page that I linked to in my last post: 
http://www.uschess.org/ratings/info/system.html

Let's define some variables.

Rp      the new rating.  This is what we're trying to get at.  It's computed at 
the
end of each game.
Rc      the average rating of the player's opponents.
W       the number of wins.
L       the number of losses

so, we calculate the rating with this equation:

Rp = Rc + (400 (W-L) / (W+L)

We'll do an example.  Bob jumps onto my server and registers with nickserv. 
He's never been here before, so he starts with a rating of 1600 which means
nothing to him but means something to his opponents.  He plays his first game, a
5-player game.  The players are rated as follows:

1(Bob)  1000
2       1400
3       800
4       1600
5       1000

Bob comes in 2nd.  He beats players 3, 5, and 4 but loses against 2.  Thus, he
has 3 wins and 1 loss.

We calculate his rating:  Rp = Rc + (400 (W-L) / (W+L) = 1200 + (400(2) / 4) =
1400

So, his new rating is 1400.  Anybody want to check my math?

Now, Bob plays a 4-player game.  Here are the players' ratings:

1(Bob)  1400
2       2000
3       2200
4       1900

Bob gets third place -- he wins against 2, but loses against 3 and 4.  In this
game, he had 1 win and 2 losses.

We now recalculate his rating based on both of these games combined:
Rp = Rc + (400 (W-L) / (W + L) = 1557.142857 + (400(1) / 7) = 1614.285714 ~
1614

Note that for the first 10 games, we keep recalculating his rating based on all
his other games combined.  When he is through with 10 games, we have a
relatively accurate picture of Bob's rating.  For this example, let's say that 
his final
rating with this equation after 10 games is 1700.  Moving on =)



Adjusting An Established Rating

Now that we have a pretty good picture of Bob's rating, we are going to use a
new equation to adjust Bob's rating from now on.  Time to define some more
variables!!

Rn      the new rating we're trying to find.  A rating adjustment can be done 
at the
end of each game.

Ro      the old rating
K       a constant.  32 for an Ro of 0-2099; 24 for 2100-2399; 16 for 2400 and 
above
W       the score in this game.  This is calculated by adding 1 for ever win 
(and 0
for every loss).
We      the expected score.  This is where probability comes in.  We has its 
very
own equation! look out, i'm about to show you!

We=1/(10**(-dr/400))+1

dr is the difference in ratings.  We is calculated for each opponent.  that
formulat reads "We equals 1 divided by ten to the power of negatie dr divided by
400 plus 1" in case you were wondering =)

Now for the whole equation:

Rn = Ro + K (W-We)

Now let's go back to our example, Bob!  Bob now has a computed rating, which
you might remember is 1700.  Now, he plays a 6-player game.  Here are the 
ratings
for each player.

1(bob)  1700
2       1500
3       2200
4       1900
5       1200
6       1100

Bob comes in second.  Bob wins against 2, 4, 5, and 6.  Bob loses against 3. 
That gives him, in this game, 4 wins and 1 loss.  Here are the steps we have to
take to calculate Bob's rating:

1.  Subtract each of Bob's opponents' ratings from Bob's rating, noting whether
Bob is rated higher or lower than each opponent.
2.  Find the We for each opponent.
3.  Sum the We values
4.  Find W
5.  Subtract We from W.
6.  Multiply this difference by K
7.  Add your Ro (old rating) to the calculation for your old rating! EASY!!!

Let's do it.

1.  subtracting each opponent's rating gives us: 200, -500, -200, -400, 600
2.  for 200 the We is .760; -500 : .040 ; -200 : .240; -400 : .091 ; 600 : .969
-- note there is a table with these values on the page which i've linked to
repeatedly =)
3.  sum the We values:  .760 + .040 + .240 + .091 + .969 = 2.1
4.  W = 1 + 1 + 1 + 1 + 0 = 4
5.  4 - 2.1 = 3.9
6.  3.9 * K = 3.9 * 32 = 124.8
7.  124.8 + Ro = 124.8 + 1700 = 1824.8 ~ 1825

So Bob's new rating is 1825!! Yay!!!  Moving on...



Team Play, Non-team Play, Mixed Play



In my humble opinion, team play is very different from non-team play;
therefore, team games shouldn't effect individual ratings.  I do think there is 
room for
change here, but i'm too lazy to try and come up with how to do individual
ratings during team play, so i'll let someone else do it =)

Thus, let's define the different kinds of play that are involved here.  

Non-team play ONLY occures if NONE of the players involved are on a team.  Note
to the guy hacking on Tetrix:  in our case, someone who is on a team with only
one player counts as an individual.  I don't think this should be the case in
TINT.  Non-team play ratings can be calculated just like I mentioned in the
examples.  Easy =)

Team play occurs ONLY if:

-Everyone involved is on a team
-Every team consists of more than one player
-(number of players on each team is evenly matched? i'm not sure about this
one)

Team play ratings are calculated just like the examples EXCEPT that each team
is considered its own entity, its rating being the average of ALL ratings of
players on the team.  Now, this is assuming that we also have a "TeamServ" type
entity that allows the founder of a team to register and unregister players to 
the
team.  Note that we aren't just averaging the ratings of the players that are
playing at the moment, but EVERY player that is registered to the team.  Thus,
after this is taken into consideration, teams are treated just like individual
players.  This way, a team's rating doesn't change constantly and irratically, 
but
does change if a team gains stronger players and thus wins more games.

Mixed Play occurs when there is an uneven combination of players in teams; for
example, having one individual player, a team of 3 players, and a team of 2
players would be mixed, as would having one individual and a team of two; also
having zero individual players, a team of 2, and a team of 3.  you get the 
picture. 
I'm not sure exactly how to handle this; let's say that two teams and one
individual are playing; should the individual's rating be adjusted based on the
average of EVERY team member as I mentioned before, or based on the average of 
every
member of that team that is playing?  Note to the guy hacking on Tetrix: for the
time being, let's do the latter; that is, in a mixed game, adjust individuals'
scores using the average of the individual players on each team.  It's important
to note here also that since a team is considered a seperate entity, beating a
team counts as only one win, and losing against a team counts as only one loss.



Possible Features and Limitations



There are obviously a hundred different ways to enhance what I've just laid
out.  I'll just point out a few.

There are a few numbers which are set by our own preference rather than
calculations.  The value of the player's initial rating (which i stated as 1000 
in my
example) and the value of K especially could be changed, if we actually know 
what
we're doing when we change them =)

The Elo rating system has some very useful guidelines that apply to chess but
can also be very helpful in this application; limits on how much a rating can
change based on K (read up for details), on how low a rating can go based on how
high it has been before, and extra adjustments that are made at the end of
tournaments (which I have pretty much equated to games in this document).  Extra
adjustments that aren't specified by the Elo system but would still help us out 
could
include an extra adjustment for getting first place, an extra adjustment for
beating a team depending on how many are on the team, and an extra team rating
adjustment for a team with less people playing beating a team with more people
playing.  Inversely, a less positive rating adjustment for getting last place, 
a team
beating an individual, or a more populated team beating a less populated one.

Also, penalties for doing various evil things like leaving a game early to
avoid a negative adjustment, ending a game when you're the moderator, etc. etc.
would be useful.

Well, that's about all I can think of at the moment.  I hope this is helpful,
and I hope that it can be perfected so that it actually works and becomes a fair
rating system.  By now, if you've read all the way to the end, you probably have
a migrain headache, so i'll stop =)

--
Jared Johnson
solomon@xxxxxxxxxxxxx

Delores breezed along the surface of her life like a flat stone forever
skipping along smooth water, rippling reality sporadically but oblivious
to it consistently, until she finally lost momentum, sank, and due to an
overdose of flouride as a child which caused her to suffer from chronic
apathy, doomed herself to lie forever on the floor of her life as useless
as an appendix and as lonely as a five-hundred pound barbell in a
steroid-free fitness center.
                -- Winning sentence, 1990 Bulwer-Lytton bad fiction contest.

-----BEGIN GEEK CODE BLOCK-----
Version:  3.12
GCS/C d+(-)>-- s:+ a18 C++++$ UL++++>$ P+>++++ L+++ E--- W+ N+ o? K- w--- !O M-
V-- !PS !PE Y PGP- t+ 5-- X R-- tv- b+ DI>+ !D G e>++(>+++) h-- r* y-(+++)
------END GEEK CODE BLOCK------



[Prev in Thread] Current Thread [Next in Thread]
  • [tetrinext] draft of specific scoring details, Jared Johnson <=