WarLight update: 1.10

Today at 3pm GMT (11pm PST), WarLight will be updated to version 1.10.0. The update should only take a few minutes, however it will require players to refresh their browser so please plan ahead for potential interruptions to real-time games. I’m working on a system to allow updates to happen seamlessly, so downtime won’t be required, so hopefully these types of interruptions can be minimized in future releases.

Instead of one big feature, this update contains a lot of small improvements to the site and a long list of bug fixes.

Bonus Border Color

When a player controls a territory whose border is the same color as they are, the border is now displayed slightly lighter. This ensures that the territory borders are always visible, even when a player controls a bonus that is the same color as they are.

Bulk Remove from Invite List

The Manage Invite List page is getting a new tool that will allow you to remove all inactive players from your invite list. Just click Bulk Remove and the site will give you an option to specify how many days inactive the player must be for them to be removed, or you can just enter 0 to remove everyone.

Tournament Interface Improvements

The tournament interface is getting some long-needed improvements.

First off, the display of single-elimination and double-elimination tournaments has been updated to fit better within the space allotted. Namely trading vertical space for horizontal space since vertical space is at a premium. Also, the game boxes are displayed in a lighter color once the game has begun so it’s easier to tell at a glance how far along a tournament is.

Second, you can now highlight the games of any specific player, just like how your own games are highlighted. To do this, just click their name in the bottom players list and click the new Highlight Games button. This makes it much easier to check the progress of another player.

Lastly, the performance of loading large tournaments has been improved significantly. This is done by not initially showing declined and invited players in the players list. If you do want to see declined and invited players, a new button is provided to show them. Further, declining tournaments no longer invokes a full refresh, so declining tournaments is even faster yet.

Ladder Tweaks

The 1 v 1 ladder now requires 15 games to receive a rank instead of 10. This will help bring more stability to the ladder.

Season II of the seasonal ladder will play 20 games instead of 15 like in Season I. Four games will be created on the first day and one more every three days after that. Further, the seasonal ladder has been adjusted so players are more likely to receive games against players closer to their skill level. The game settings for Season II will be announced once Season I ends.

Abandoned Games

WarLight will now enforce a new policy around games that are started but then are abandoned by their players. If a game goes over 101 days without advancing, the players holding it up will be sent a warning e-mail. Two weeks after the warning e-mail, they’ll be auto-booted, regardless of whether or not the game had auto-boot enabled.

The purpose of this is to clean up some of the stale games. There are some games that haven’t advanced in over 1000 days! This will allow the games to be archived, which will increase the speed of the site, namely the My Games page.

Games that are still in the lobby after the two-week warning will just be deleted, unless they’re tournament games, in which case the players will be force-joined.

101 days is a minimum. The system isn’t super aggressive about sending out warning e-mails, so it may not send them out on exactly day 101. It will get around to it usually within a week.

Template Improvements

When creating a game with a template that you created, the boot times and game pace (multi-day versus real-time) will now be defaulted to the values saved in the template. This makes it faster to create games when using a template.

Misc Changes

– In real time games, the clock no longer makes an audible tick if you’re not alive in the game anymore (eliminated, booted, etc.)
– Real-time games are now eligible to be archived 24 hours after they finish. Multi-day games continue to wait 10 days before archiving.
– Creating a game or accepting an open seat now cause vacations to end. This stops trolls from activating a vacation and joining/creating a bunch of games that won’t be able to advance.
– The change name page now asks for confirmation to ensure players know they can only change their name every 20 days.
– The automatic panning now waits half a second after showing a successful attack before panning, to give you a chance to see the results of the attack.
– Fixed a bug in the map designer’s SVG parser that would cause strokes to not scale along with an object.
– Fixed a bug that caused templates created on the single-player tab to not include yourself.
– Fixed bugs around game loading that caused games to be left in unusable states when connection failures occurred.
– Fixed a bug that caused playing the same game from multiple browsers to not update each-other in some cases.
– Fixed the Home and Community tabs, as their words were a pixel or two off when selected.
– Fixed a bug that caused a surrender email to be sent when a player that had turned into an AI surrendered.
– Fixed a bug that caused an error message when a teammate played a card that you were in the middle of playing if the card involved UI (blockade, spy, gift, etc.)
– Fixed a bug that caused an error message if you started to play a card that involved UI, but then opened up the cards dialog, discarded it, then finished playing the card.
– Fixed a bug that caused an error message if you started to play a card that involved UI then double-clicked its submit button.
– Fixed a bug when creating games that caused the “Create Game” button to not be visible if there were too many teams.
– Fixed a bug that caused the private message box to be active even when a game is archived and can’t receive new chat.


I’ve been experimenting with TrueSkill as a potential replacement for the Bayesian ELO that the ladders use.

I’ve put together a small sample app (download at the bottom of this post) that will calculate the ratings of players using the TrueSkill algorithm. This can be used to compare the results of the algorithms side-by-side. Below is the top 30 results of the 1v1 ladder, as of the date of this blog post.

TrueSkill Bayesian ELO
Rank Player                  Rating     Wins Losses
1    zaeban                  2421.536   41   6
2    Gui                     2372.826   15   2
3    AceWindu                2354.958   17   3
4    Rubik87                 2308.389   32   8
5    unknownsoldier          2287.282   20   7
6    Heyheuhei               2264.112   62   23
7    Eitz                    2258.755   31   11
8    NuckLuck                2254.831   16   5
9    ????V                   2210.151   29   11
10   ????Chaos               2205.284   20   2
11   chas                    2203.465   36   15
12   Oliebol                 2187.576   21   8
13   20AquaHolic             2158.945   61   31
14   Yeon                    2151.634   18   6
15   13CHRIS37               2143.782   44   16
16   DrTypeSomething         2098.338   18   6
17   WMMekBlaze              2098.327   18   4
18   TheEmperorCornInMyTight 2079.722   61   29
19   MonsenhorChacina        2075.971   9    3
20   Mian                    2072.797   23   10
21   Hroptatyr               2071.86    26   12
22   PaniX                   2069.742   16   9
23   bytjie                  2037.808   20   11
24   Xyphistor               2018.273   71   39
25   alababi                 2010.574   18   8
26   REGLMentysh             2005.368   28   17
27   WMDazedInsane           1992.604   24   9
28   20TheWindowCleaner      1988.566   15   5
29   JimH                    1985.033   33   18
30   Tor                     1978.475   24   17
Rank Name                        Elo
   1 AceWindu                   2176
   2 Gui                        2163
   3 zaeban                     2130
   4 ????Chaos                  2085
   5 NuckLuck                   2060
   6 Rubik87                    2042
   7 unknownsoldier             2039
   8 MonsenhorChacina           2029
   9 zibik21                    2021
  10 WMMekBlaze                 2004
  11 ????V                      1995
  12 Yeon                       1992
  13 Eitz                       1989
  14 Oliebol                    1981
  15 20TheWindowCleaner         1977
  16 Heyheuhei                  1963
  17 DrTypeSomething            1961
  18 chas                       1954
  19 PaniX                      1950
  20 Troll                      1943
  21 13CHRIS37                  1935
  22 TheImpaller                1933
  23 Mian                       1927
  24 fwiw                       1917
  25 alababi                    1907
  26 Hroptatyr                  1904
  27 LilEitz                    1892
  28 bytjie                     1886
  29 WMDazedInsane              1882
  30 Fizzer                     1879

The ratings are not important, just the ordering of the players. The wins and losses are only specified in the left table, but these are comparisons over the same games so the numbers are the same for both sides.

Even though Bayesian ELO is what the site uses now, you might notice some differences between the right table and what WarLight.net shows today. They’re not identical since WarLight doesn’t give ranks to players who have left the ladder, don’t have 10 games yet, or are on vacation.

Algorithm Differences

There are advantages and disadvantages between the two algorithms. The biggest difference is that the ripple effect that Bayesian ELO uses is not existent in TrueSkill. That is, when a game ends, Bayesian ELO applies the biggest changes to the players who played that game, but also applies smaller adjustments to everyone who has played either of those players, and so on.

The nice thing about TrueSkill is that when a game ends, you can immediately know how many rating points you gained or lost. Your rating also only changes when you finish a game. This also means that you can see exactly how your rating got to its current location, as each game can show its affect on your rating.

The disadvantage of this is that *when* you defeat an opponent matters. Say player A rises from #30 to #1 on the ladder. If you defeat player A when they’re at #1, you’ll get a much bigger ratings boost than you would have if you defeated them when they were #30. This isn’t true in Bayesian ELO, since the rating points you got from defeating player A rise as they rise up the ladder.

This is most visible in contrived examples. Say Player A defeat B, B defeats C, and then C defeats A. In Bayesian ELO, all three players would be tied, as their victories form a perfect triangle, evening each other out. In TrueSkill, player C would be the highest ranked, since they defeated A who was the #1 ranked player at the time of their game.

Running TrueSkill Simulations

As mentioned above, I wrote a command-line tool that allows you to run simulations of WarLight ladders with the TrueSkill algorithm.

You can download this tool from this link: WLTrueSkill.exe.

On Windows, this requires .NET 4.0 runtime to be installed. On Mac or Linux, the tool should work fine under a recent version of Mono.

To use the tool, simply feed it one of the Bayeselo Logs linked from the wiki. For example:

WLTrueSkill < BayeseloLog0.txt

By running the program with an argument of /?, you can see some additional options.


I'm considering using TrueSkill for Season II as a trial run. Let me know your thoughts!

Small update: 1.09.3

On Monday, January 9th at 8am GMT (midnight PST), WarLight will be updated to version 1.09.3. While the update is taking place, the website will be down for a short time. If all goes well, the downtime should last for less than 30 minutes.

The primary purpose behind this update is to add support for the upcoming Android preview. However, some other features snuck in as well.

Tips during Load

While WarLight is loading, it now shows basic information about the game. This is just a way to help teach players a few tips they might not know while they wait for the game to load. For example:

Profile Ladder Stats

Players can now control which ladder stats are shown on their profile. If there’s one you don’t want shown, you can turn it off by editing your profile and clicking the new “Show or Hide Ladder Stats” button.

Further, stats shown for the 2v2 ladder have been improved, especially in the case where players have played the 2v2 ladder multiple times with different partners. Not only does it show what rank you achieved with each partner, but it also allows you to choose which partners you wish to show on your profile and which you wish to hide.

Show Example Armies

When creating a map, there’s now a new button named Show Example Armies that will place a two-digit army number into every territory at its center point. This helps visualize how big the army numbers will be without having to go through the trouble of creating a test game.

This is useful for two main reasons:

1. When trying to place the center point, having an example army number shown makes it much easier to get the center point dead-on instead of having to guess.
2. Having the army number shown is an easy way to see if your small territories are too small. Since all territories must be big enough to fit their army number, this helps find out if a territory is big enough.

Failed Attack Visibility in the Fog

There’s a minor change being made to the way attacks show up in fog games.

If you issue an attack, but then lose the territory before the attack happens, the attack won’t take place. The tooltip for that attack just says “This order could not be executed.”

If you don’t have any adjacent territories at the time of the failed attack, WarLight won’t even show you that the attack was there and failed. This was a really odd behavior, especially since your opponents could see the failed attack since they had adjacent territories. You could see the attack in a no-fog game or after the game ended, but not during the game.

Now, WarLight will always show you the failed attacks you made even if you don’t have adjacent territories. This doesn’t reveal any more information, so this is not game-changing in any way. However, it eliminates a point of confusion that new players often hit, since they remember that they issued an attack but WarLight doesn’t show it to them. Now, it will show them the attack at its place in the turn, which will make it clear why the attack didn’t happen.

Misc Changes

– Fixed bugs with the APIs GameFeed and GameIDFeed that caused them to fail on some archived games.
– Fixed a bug that caused there to be too many teams when copying a team tournament game’s settings.
– Fixed a bug that caused players who had left the seasonal ladder to not be ranked. All players with 5 completed games should get a rank.
– The ladder pages for seasonal ladders now indicate if a player has left the seasonal ladder.
– Fixed a bug on the map designer that caused green lines that wrap around the map to appear incorrectly on very large maps.
– Fixed a bug that caused Azerbaijan’s thumbnails to not appear.

Sign up for the Android preview

If you’re a WarLight member and want to help test the WarLight app for Android, please fill out this form. EDIT: Link taken down. Thanks to everyone who signed up!

The goal of this preview is to test the WarLight app for Android on a variety of devices to help iron out any bugs. I can’t guarantee it will work on your device, however I will do my best to make it work on as many as possible. All devices running Android 2.1 or higher are eligible.

Keep in mind that the app can’t quite do everything that the Flash version can yet, as this is just a preview and not the finished app. However, it does enough to play your multi-player games — all settings, cards, and maps are supported.

WarLight in 2011

WarLight has come a long way in 2011.

I’m amazed when I think back to what WarLight was like a year ago. The site was still in beta, and none of the ladders existed. You couldn’t save your own templates, so creating games required that you manually enter every setting every time. No auto-boot existed, so tournaments would frequently get stalled whenever one game would get abandoned.

The list of features added in 2011 goes on and on. Custom scenarios, the dashboard, the statistics panel, open tournaments, the wiki, new graphics, vacations, map categories, ability to save single-player games, the stand-alone client, and music. Wow!

WarLight has five times as many active players now as it did when 2011 started. Although WarLight has been up since 2008, 2011 hosted more than four times as many WarLight games as all the other years combined!

Mobile Update

Although I’m proud of the above list of features, those were all actually secondary goals. In fact, I spent more than half of my time in 2011 working on iPhone and Android versions of WarLight. All of the features listed above were actually completed in periods where I took breaks from working on the mobile client.

I’m committed to making WarLight a cross-platform game. WarLight is a perfect game for mobile devices due to its asynchronous nature. Unlike other multi-player games where you have to be online at the same time as your opponents, WarLight allows you to take your phone out of your pocket whenever you have a free moment, enter your orders, and put it right back.

A prototype of WarLight for the iPhone already exists, but unfortunately due to Apple’s restrictions I can’t release it until it’s ready for the app store. It may be some time until it’s polished enough for the app store, but there should be room for a few lucky testers once it gets further along. Opportunities for testers will be announced on the blog.

Over the last month I’ve been working on getting Android version ready for a preview release. Android is great in that Google allows people to install apps off the web, so WarLight will be able to release previews. Stay tuned to the blog for news on a preview of the Android client, coming soon!

Looking Forward

2011 was a great year for WarLight, but it’s definitely not the end. This was the first complete year that I worked on WarLight full-time, and I have no intentions of stopping or moving on to a new game. I still view WarLight as a very young game. I want WarLight to be the best play-by-email game in existence and to be playable on as many platforms as possible.

I’m constantly amazed that, even after living and breathing WarLight for almost four years now, I’m still not tired of the game! It’s rare for a game to stay fun for its developers after so long.

I expect 2012 to be an even bigger year for WarLight. So thanks for playing, and have a happy new year!