[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
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
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
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
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
rating about away from 1600 and where it ought to be. After it is about where
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:
Let's define some variables.
Rp the new rating. This is what we're trying to get at. It's computed at
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:
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) =
So, his new rating is 1400. Anybody want to check my math?
Now, Bob plays a 4-player game. Here are the players' ratings:
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 ~
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
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
Rn the new rating we're trying to find. A rating adjustment can be done
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
W the score in this game. This is calculated by adding 1 for ever win
for every loss).
We the expected score. This is where probability comes in. We has its
own equation! look out, i'm about to show you!
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
for each player.
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
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
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
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
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,
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
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
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
example) and the value of K especially could be changed, if we actually know
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
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,
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 =)
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-----
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]
||[Next in Thread]|
- [tetrinext] draft of specific scoring details,
Jared Johnson <=