Warning! Do not upgrade to Havok 4!

Thursday, January 24, 2008

Havok 4 is a new physics engine that Linden Lab is rolling out. Private island owners have the option of requesting an early upgrade to Havok 4.

Havok 4 contains several bugs which break En Garde. The En Garde game and its scoreboards will not work in any Havok4-enabled region. If you upgrade your region to Havok 4, any En Garde games rezzed there will stop working.

If you would like to communicate to Linden Lab that you would like this bug fixed as soon as possible, you can write a comment and vote for the bug here:

http://jira.secondlife.com/browse/SVC-1239

For those who have owned En Garde since the beginning, this is the same "llSetLinkPrimitiveParams" bug that killed En Garde the first time.

Please take a moment to follow that link, log in to JIRA, and vote for the bug (click the vote link on the left side). While you're at it, vote for this bug too:

http://jira.secondlife.com/browse/SVC-1146

That is a separate bug in Havok4 servers that is causing the scoreboards to malfunction.

En Garde Scoring -- will it never end?

Sunday, January 6, 2008

The new scoring has been up for a week now, long enough to take a look and see how it's doing.

In general, I like it. I think it's an improvement. First of all, it fixes the "can't play newbies" problem that dogged the previous scoring method. That really hurt me, because it discouraged teaching the game to new players. As always, my goal is to make the game accessible to new players and encourage its spread across Second Life.

Watching the list fluctuate, I think it's pretty close to a good "mixing" level. The names and ranks change, so it's fluid, but it's not chaotic. There's a balance to be had there. I don't want the high scores to be so chaotic that they completely change with every game. But at the same time, I don't want them to be static, with the same names always in the same places -- that would discourage new players. What I'm seeing now is, I think, pretty good.

But, of course, it's not perfect. Here are some questions that have been asked me online and in the comments:

It's too complicated! I don't understand how my score works!
Yes, I know. This was the biggest concern I had in implementing this system. I've tried to explain it as best I can in the blog posts below. I hope that, for most players, you don't really have to understand it; you just have to know that if you play well and beat a lot of people, you'll get a high score.

Why can't I see my ranking after I play a game? If I'm not on the board, I can't tell what my score is.
I'm sorry, I had to take that out temporarily. The reason is, it takes a long time to compute the new scores, and if the game waited around to give you that new number it could hang up my whole server. The next release of En Garde will tell you your score/rank at the start of the game (when you step on the piste) so you'll see it there, and you'll know the rank of whoever you're playing against.

Why does it only track your scores for two weeks?
There's two reasons. First, it adds fluidity to the board. I wouldn't want someone to get a super-high score, and then leave SL, and have their name stand there forever. The board could completely freeze up if that happened enough. So I put in a 2-week time limit. I figure, if you haven't played at all in the last two weeks, then you don't deserve to be on the list.

Secondly, the calculation is expensive (see above), and it gets more expensive the more games it takes into account. Right now there are about 500 games of En Garde played every week. So, after every game, it has to scan through 1000 games and adjust everyone's score.

Have I mentioned that the Procyon Games server runs on a rather low-end system? Well, the hardware is fast, but to save money I have to share it with many other people who have also purchased space on the server, so every CPU cycle counts. I've optimized and re-optimized the scoring system, trying to squeeze every last ounce of processing power I can, but I'm at the limit. Trying to calculate scores over a larger window would make the whole system grind to a halt.

My score can go up with no effort on my part!
Yes. If you beat someone, and then that person beats a lot of other people, your score will go up.

Here is how I think about it. How many points should you get for beating someone? Under the old system, the number of points you got was based on their ranking at that time. If they were ranked high, you got a lot of points. It's simple, but it only looked backward.

The new system says: when you beat someone, you get points depending on how good a player they are. And that definition of "good" can change over the 2-week window. If you beat a new player, the system doesn't know if he's good or not. So you don't get many points. Under the old system, it stops there. But under the new system, if that player turns out to be some sort of prodigy, then their rank will improve -- and you will be awarded more points for having beaten them.

PageRank can be gamed. You can't rely on it.
Any kind of scoring system can be gamed. My old scoring systems were gamed. Google wages a constant war against Search Engine Optimization companies. My move to this scoring is in part a response to gaming of the previous score systems. At some point, hopefully, we'll reach an equilibrium. Google has an army of software engineers on their side. I've just got me.

Logarithmic scoring?
Yes, PageRank is logarithmic. And so is En Garde scoring. This is a technical detail; it happens behind the scenes. The log scale tend to flatten out the numbers. If I didn't have a log scale, then the top players would have scores in the thousands, while people just below them would have scores less than ten. I've tried to adjust the scales so everything "looks right".

Dangling links?
In the PageRank algorithm, pages that have no incoming links are a problem, because every page is fed the ranking scores from all the pages that link to it. In EnGardeRank, every player feeds ranking scores to all the other players that have winning records against him. Google adjusts PageRank with a "damping" factor, which represents the random chance a user will move to another page without clicking a link (via bookmark, for example). EnGardeRank is adjusted by your overall score. In the two-week window, it adds your score in every game, and the scores of all your opponents, and that ratio is used to feed every player some small ranking. This represents the random chance you might beat someone that you've never met. So, even a player who hasn't defeated anyone will have a non-zero ranking score.

New En Garde Scoring

Tuesday, January 1, 2008

I've changed the World Champion scoring again.

Nobody liked the last change very much. The biggest problem was it made it too risky to play new, unranked players. If you lost, you could lose a lot of points. Another problem was, if two players never played each other, there was no good way to determine a ranking between them.

The new system is based on the Google PageRank algorithm. Google increases the search placement of pages based on how many other pages link to it, and how high those pages rank. In the new ranking system, you get points for having winning records against other players.

The actual math that determines your score is complicated. But here's some tips on how to get points:

Get winning records against lots of other people. This is the number-one thing you can do to improve your score. The system looks at all matches over the last two weeks. You have a winning record against a player if you've won more matches against him than he has against you. Every winning record improves your score.

Get winning records against good players. If you have a winning record against someone the system thinks is "good," then you get more points than you would against a poor player. Also, points get divided up. If you're the only person who has a winning record against someone, then you get more points than you would if that player had losing records against many people.

Win by big margins. You get more points for big wins that close matches. And there is also an "overall" component to your score, which takes into account your total score over the past two weeks.

Don't worry about losing games. You don't lose points when you lose a game -- except if that loss converts a winning record to a losing record against that opponent.

The scoring change is retroactive. The scores you see now are the current rankings, using the new system on all games from the past two weeks. This also affects team scoring as well, since team scores are just the sum of all world scores from team members.