[tetrinext] draft of specific scoring details
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
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
allknowing 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 (WL) / (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
5player 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 (WL) / (W+L) = 1200 + (400(2) / 4) =
1400
So, his new rating is 1400. Anybody want to check my math?
Now, Bob plays a 4player 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 (WL) / (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 02099; 24 for 21002399; 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 (WWe)
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 6player 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, Nonteam Play, Mixed Play
In my humble opinion, team play is very different from nonteam 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.
Nonteam 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. Nonteam 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 fivehundred pound barbell in a
steroidfree fitness center.
 Winning sentence, 1990 BulwerLytton 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 <=

