WarLight as a candidate to the Google AI Challenge

There has been some talk of WarLight being a candidate for the next Google AI Challenge. For those not familiar with the Google AI Challenge, the GAIC is a competition where software engineers write a bot to play a game for them. They then upload their bot into the GAIC website which matches their AI against everyone else’s. It’s a lot of fun – they’ve featured other popular games such as Galcon and the Tron game, which is a bit like the old snake games.

To prepare for WarLight as a candidate, I threw together a prototype of a framework that can run a WarLight AI Challenge. This contains everything you need to write and run a WarLight AI on your own computer, completely separate from the WarLight servers.

I appreciate any feedback on this prototype – shoot me an email at fizzer@warlight.net!

Game Settings

WarLight is a very flexible engine that supports many different variations and settings. For this prototype, I selected settings that I think would make for a good AI challenge. I chose these settings both to make the game as fair as possible, as well as making it as easy as possible to write an AI.

Map

I chose the Double Earth map for this prototype, since it’s symmetrical and therefore can be completely fair to both parties. For the initial territory layout, I pick three random territories from the top earth and give these to one AI, and give the same three from the lower world to the other AI. The rest of the territories start out as neutral 2s.

Most strategic WarLight games let players choose where they start. This is entirely plausible for the AI Challenge as well, however I decided that a random (but mirroed) approach was better simply because it makes it easier to write an AI. Having to write code to determine where to start is a fun AI challenge itself, but doing this adds more syntax to the AI language and is just one more thing you need to learn and write before you can have a working AI. If the GAIC sponsors want this turned back on it can be.

Cards

For those unfamiliar, WarLight contains a dozen different types of cards that have a variety of effects on the game. I decided for the AI Challenge that cards should be left out, mostly because they add more syntax to the AI language and, like above, increase the base knowledge you need to learn to write an AI.

Fog

Fog is the WarLight feature that controls whether or not you can see the entire map or just what’s next to you. Whether or not to include fog in an AI challenge is an interesting decision that I thought a lot about. Ultimately I decided to turn it on, since it’s a feature unlike things that the GAIC has done before. If you’d like to try it without fog, you can turn it off in the downloaded source on line 34 that says “useFog: true”

Randomness

WarLight’s rules do contain some randomness, which enhances the game experience for human players. However, for an AI challenge, it may be beneficial to remove the use of the random number generator. There are four places that Warlight uses the RNG: distribution, combat, rounding, and move order. Two of these have already been removed from the prototype, and the other two could also be eliminated if we wanted to get rid of the RNG completely.

– Distribution: As mentioned above, bots don’t get to choose where they start so the normal randomness that affects strategic 1 v 1 games during distribution has already been removed for this AI challenge.

– Combat: WarLight’s main combat rules contain some use of the RNG. WarLight already contains a slider that allows you to control how much you want the RNG to affect your game. For the AI challenge, I have set this slider to 0, which eliminates this use of the RNG. If you want to turn it back on, you can do so in the downloaded source on line 33 that says “luckModifier: 0”

– Rounding: WarLight uses random rounding, where 0.4 has a 40% chance of being rounded up and a 60% chance of being rounded down. This is left turned on in the prototype, however if the GAIC sponsors wish, we could change this to a straight round to eliminate this use of the RNG.

– Move order: WarLight randomizes the order that players move within a turn. Although this does have an effect on the game, it’s typically not the deciding factor. Nevertheless, if the GAIC sponsors wish, we can change this to order based on a predictable heuristic, such as alternating turns or giving first move to the player with fewer armies or something like this.

How to Write an AI

For those unfamiliar with GAIC, this prototype uses standard in/out to communicate with bots. This means you can write your bot in any language that can print to and read from the console. The fastest way to get started is to take a look at the C# starter pack included in the downloadable below as it contains a fully functional (although not incredibly smart) AI.

At Startup: The Map

WarLight maps are obviously a graph. When your AI is started, the first thing it will do is read the map from standard-in. The first line is simply the word “Map” informing you that a map is coming up.

After that, your AI will read a series of lines starting with TerritoryDefinition. For example:

TerritoryDefinition 1 SolomonIslandsN 48 8
TerritoryDefinition 2 St.PetersburgN 87 4 11 110 111 104
TerritoryDefinition 3 PeruN 125 96 147 64
TerritoryDefinition 4 PermN 110 92 2 87 70
TerritoryDefinition 5 MyanmarN 26 29 49 119
TerritoryDefinition 6 PanamaN 147 25
TerritoryDefinition 7 ShanghaiN 50 26 151 114

Territory definition arguments:
– Argument 0: The word TerritoryDefinition
– Argument 1: The ID of this territory
– Argument 2: The name of the territory with spaces stripped out. This is not used by your AI, but it assists in debugging as knowing the name of the territory makes it easier to locate on a map.
– Argument 3+: The IDs of the territories that this territory connects to.

After reading territories, your AI will be fed a series of lines starting with BonusDefinition. For example:

BonusDefinition 5 CentralRussiaN 83 45 120 105 75 137 150
BonusDefinition 4 AustraliaN 27 122 14 135 134 12 91 15
BonusDefinition 6 EastRussiaN 136 115 66 18 46 103 65 129 72 149
BonusDefinition 6 EuropeN 54 51 109 34 10 80 11 101 95
BonusDefinition 4 MiddleEastN 138 52 21 53 43 19

Bonus definition arguments:
– Argument 0: The word BonusDefinition
– Argument 1: The number of armies this bonus is worth if you control all of its territories
– Argument 2: The name of the bonus. This is not used by your AI, but it assists in debugging as knowing the name of the bonus makes it easier to locate on a map.
– Argument 3+: The IDs of the territories that make up this bonus.

After the bonuses, your AI will be fed a line that says “EndMap” and nothing else. This notifies you to stop reading the map and to get ready to start the first turn of the game.

Each Turn: The Standing

In your main game loop, first read a line that will say either “GameOver” or “Turn #” where # is the turn number. Upon reading GameOver, you should obviously exit your process.

If you don’t see GameOver, you should start receiving a game “standing.” A standing is the state of the board at one point in time – it tells you who controls each territory and how many armies on are on it.

Territory 198 ownedBy Neutral withArmies 1
Territory 199 ownedBy Neutral withArmies 2
Territory 200 ownedBy You withArmies 5
Territory 209 ownedBy Neutral withArmies 2
Territory 214 ownedBy You withArmies 5

Territory arguments:
– Argument 0: The word “Territory”
– Argument 1: The territory ID
– Argument 2: The word “ownedBy”
– Argument 3: Either “You”, “Neutral” or “Opponent”
– Argument 4: The word “withArmies”
– Argument 5: The number of armies on this territory

Keep reading territories until you read the word “EndStanding” alone on a line.

Each Turn: Send Your Orders

After reading the standing, it’s time to execute your custom AI logic! As we’ve removed cards, the only thing your AI needs to issue are Deploy orders and AttackTransfer orders, which is what can order armies to attack or transfer from one territory to an adjacent one.

You should print out orders to standard out like this:

Deploy 4 on 5
Deploy 1 on 112
AttackTransfer 4 from 5 to 29
AttackTransfer 3 from 5 to 119
AttackTransfer 8 from 26 to 119
end

Deploy arguments:
– Argument 0: The word “Deploy”
– Argument 1: The number of armies you’re deploying
– Argument 2: The word “on”
– Argument 3: The territory ID you’re deploying on

AttackTransfer arguments:
– Argument 0: The word “AttackTransfer”
– Argument 1: The number of armies to attack or transfer
– Argument 2: The word “from”
– Argument 3: The territory ID to attack or transfer from
– Argument 4: The word “to”
– Argument 5: The territory ID to attack or transfer to

Finally, after issuing all of your orders, simply print out “end” to signal that you’re done. That’s all there is to it!

How to run your AI

The downloadable below contains an executable named WarLightAIChallenge.exe. Simply run this with two arguments that point at the bots you wish to execute. For example, to have the included starter pack fight itself on Windows, run: (note: Windows users must have .net 4.0 installed)

WarLightAIChallenge.exe StarterPack.exe StarerPack.exe

On OSX or Linux, run it in Mono 2.8 or higher:

mono WarLightAIChallenge.exe StarterPack.exe StarerPack.exe

Visualizer

For this prototype, I have not yet written a visualizer. This means that there’s no provided app that lets you view your game data in a graphical format to easily see what’s going on. If anyone writes one and is willing to share, send me an e-mail and I’ll post it here.

Downloads

Download Here

This package contains:
– StarterPack source code
– StarterPack pre-compiled binary
– AI runner source code (named WarLightAIChallenge)
– AI runner pre-compiled binary (named WarLightAIChallenge.exe)

If you run into any problems or have any comments, please send me an email at fizzer@warlight.net.

The Impaller versus The World

I’m pleased to announce a special WarLight event called The Impaller versus The World! This is a public 1v1 WarLight game that anyone can participate in.

This game is a Strategic 1 v 1 game where one side of the game will be played by The Impaller, who’s one of WarLight’s best players, and the other side is played by you! Everyone in the WarLight community can vote on what move to make in the game, and the highest voted option will be carried out in the game.

This game’s primary purpose it to serve as a learning exercise — who wins isn’t important. The game will take two turns every week – one every Tuesday and another every Friday. Check the forum to follow along with the game, read strategies, share your strategy, and of course, vote!

The voting uses SnappyVote.com, which has a cool voting system that doesn’t require you to pick a single option. Rather, you can rate each option with a star rating between 0 and 5 stars. This means that if there are two options you can’t decide between (or that are very similar), you don’t need to decide between them – you can just put both of them at 5 stars.

Troll has agreed to moderate the game. Every Tuesday and Friday, he will create a forum post with instructions on how to vote. Troll will create several options to vote for, but feel free to suggest your own in the forum thread if what you really want to do is missing from the list.

Important: Be sure not to post your strategies or talk about the game anywhere except the official forum threads. The Impaller knows that he’s forbidden from reading the clearly marked threads, but if you talk about the game somewhere else he may accidentally come across it.

The game begins today! The first step is to do territory selection. Here’s the board we have to start with (click to enlarge):

Head over to this forum post to cast your votes!

Create WarLight Games Programmatically

WarLight now supports the ability to create multi-player games programmatically via an API. This opens up a wealth of new possibilities for application writers, such as creating custom WarLight tournaments or ladders.

Of course, it’s always been possible to create custom tournaments or ladders manually, but this API allows you to write a system that will automate this process. This blog post describes how to write an automated system like this.

Invite Tokens

To invite players to a game via the API, you must get each participating player’s invite token or e-mail address. It’s preferable to use invite tokens over e-mail addresses, since players may be reluctant to share their e-mail addresses. However, inviting by e-mail address is provided as an option for situations where you know everyone’s e-mail, such as setting up a tournament with friends or co-workers.

Players can get their invite token by visiting this url: http://warlight.net/InviteToken.aspx. Incidentally, this is the same number as what’s displayed in the address bar when looking at a player’s profile. So it’s easy to get someone’s invite token from a forum post, if you’re handling adding players to your system manually.

After getting a player’s invite token, you can pass it to the ValidateInviteToken API. This API tells you whether an invite token is valid, which ensures you that you will be able to invite them to a game. Calling VaidateInviteToken is not strictly necessary to invite players to a game, however it’s handy if you want to know up-front whether or not it’s valid rather than waiting for the game creation to fail later.

You can call ValidateInviteToken with a URL like this: http://warlight.net/API/ValidateInviteToken.aspx?Token=[token].

Creating the Games

Once you’ve got all your invite tokens, you can divide them up into games according to whatever logic you’re trying to achieve. To create a game, call the CreateGame API. You can specify the game settings, game name, boot times, and the players you’re inviting.

When calling http://warlight.net/API/CreateGame.aspx, you should POST xml that contains the details about the game you’re creating. Here’s an example:

 <createGame>
	<hostEmail>your@email.com</hostEmail>
	<hostPassword>yourPassword</hostPassword>
	<templateID>1234</templateID>
	<gameName>Game name here (max 50 chars)</gameName>
	<personalMessage>Description to include with the game.
                   (Max 1024 characters)</personalMessage>
	<realTime>false</realTime>
	<voteBootTimeInMinutes>Never</voteBootTimeInMinutes>
	<directBootTimeInMinutes>2880</directBootTimeInMinutes>
	<autoBootTimeInMinutes>4320</autoBootTimeInMinutes>
	<practiceGame>false</practiceGame>
	
	<invite>
		<player token="player1@email.com" team="None" />
		<player token="player2@email.com" team="None" />
		<player token="123456789" team="None" />
		<player token="player4@email.com" team="None" />
	</invite>
 </createGame>
 
  • hostEmail / hostPassword: These elements identify you. The game will be recorded as created by you.
  • templateID: Specifies the ID of a template that you create through the normal game GUI. You can either use a built-in template or you can create your own. It does not matter if you create it as a single-player or multi-player template.
  • gameName: This will show up as the name of the game. Maximum 50 characters.
  • personalMessage: This will show up in the Lobby as well as the Settings. Maximum 1024 characters.
  • realTime: True for real-time game, false for a multi-day game. This is typically false.
  • voteBootTimeInMinutes / directBootTimeInMinutes / autoBootTimeInMinutes: These define the boot times for the game. 2880 is 2 days, 4320 is 3 days.
  • practiceGame: True for a practice game, false for a ranked game.
  • invite: This node defines the players that will be invited. It consists of ‘player’ elements, each of which contains a ‘token’ attribute and a ‘team’ attribute:
    • player team: This can be the string ‘None’ if you’re not creating a team game. If you are creating a team game, then supply a number for each player identifying the team that they’re on. 0 is team A, 1 is team B, 2 is team C, etc.
    • player token: The token covered in the previous section.
    • slot: If you’re making a game that uses a custom scenario, you must provide a “slot” attribute on each player that let’s WarLight know what scenario to give this player. This should be an integer, where 0 is slot A, 1 is slot B, 2 is slot C, etc.

Check for Finished Games

If your call to CreateGame is successful, it will return you a game ID. Store this number for future reference, along with a flag indicating that the game is not finished.

Periodically, (say, every few hours), you should scan all unfinished games and query http://warlight.net/API/GameFeed.aspx for each one. If the game is still in-progress, this API will tell you so. If the game is finished, you can parse the results of this API to determine who won and update your own database accordingly and create new games if necessary.

Member Requirement

All of these APIs are only callable by members, and the CreateGame API can only invite members to games. I realize the latter requirement is a bit restrictive, but since the ladder is one of the biggest draws of becoming a WarLight member, there needs to be a restriction that prevents a third-party ladder from offering this benefit to non-members. This restriction may loosen up over time – it’s much easier to loosen up on these kinds of things than it is to tighten them. Tightening them breaks existing code, whereas loosening them just pleases people.

Reference

For a full reference that contains a few more details on how to use these APIs, please see the API Reference page. If you have any questions, feel free to e-mail me!

Announcing WarLight 1.2

WarLight will be going down on Friday, April 1st at 1am PDT (8am GMT) for up to 2 hours. Please plan accordingly for any fast games or single player games that may get interrupted during this 2-hour window.

During this time, WarLight will be upgraded to v1.02.0. This blog post contains a summary of the new features going live.

Open Tournaments

Tournament creators can now mark their tournaments as “open”, which allows any WarLight player to join their tournament without having to be invited! This makes it much easier to set up public tournaments.

This is similar to the Open Seat system that exists for games, but for tournaments. Tournament creators can use the existing open seat prerequisite system to define prerequisites that players must meet in order to join the tournament. Blacklists are also honored, just like they are for open games, in that players that the tournament creator has blacklisted will not be allowed to join an open tournament without being invited.

Map Browser Improvements

The process of picking the map you wish to play on now has additional options to help you explore the maps easier. First off, the map browser now allows for searching, so you can type the partial name of a map, for example, “Earth”, to filter down to all of the maps that contain the word Earth.

Second, there’s new sorting options that allow you to sort the maps by their name, number of territories, or age.

Last, the WarLight maps have been divided into the following categories:
– Featured Maps: This replaces the current “built-in maps” drop-down that exists today.
– All Maps: A way to view all of the maps on a single page.
– Real World Maps: Maps of places that exist in real life.
– Fictional Maps: Maps that look like a real-world place, but don’t actually exist.
– Novelty Maps: Maps that don’t even try to resemble a place.
– Local Maps: Maps that appeal to small communities, such as a specific office building or school.
– Single Player Maps: This category exists just to separate out the Europe Challenge map, which isn’t really suitable for multi-player under some settings since it contains isolated territories.
– Testing Maps: For map creators, maps they’re testing are now placed in their own special place to make finding them easier.

Strategic 1 v 1 updates

As promised in the previous blog post, the Blockade card is being added to the Strategic 1 v 1 settings.

Timezone Improvements

Dates and times have been a bit inconsistent on WarLight. When within a Flash part of the site, any dates were shown in your local timezone. This is possible because Flash knows your timezone. However, the WarLight website always had to display timezones in GMT, since web browsers don’t share their timezone information with websites.

This is being fixed so that everyplace on WarLight will always show you dates in your local timezone. This is made possible by Flash. The first time you hit the Single or Multi-player tab, WarLight will store your timezone so that everyplace on the site can represent dates in your local timezone.

Ladder Improvements

Ladder matchmaking has been tweaked. Instead of matching players/teams with 20% of the ladder on either side, WarLight now matches either 10 places on either side or 25%, whichever is larger. This improves the situation that’s currently faced by the 2v2 ladder, which has a smaller potential pool of teams to play against.

Ladders will no longer invite you to a game with someone you just finished playing or someone you’re currently playing.

The ratings of players in their provisional period are no longer shown on the main ladder pages. You can still see their provisional rating by clicking on their name. The main ladder pages sort provisional players by the order in which they first joined the ladder. This helps to avoid placing more emphasis on provisional ratings than is due.

Players who have finished 30 or more ladder games now have the option of dropping to one game at a time.

The layout of the 2v2 ladder games has been updated so that it’s more readable. This makes the dashboard look a bit cleaner.

Misc Fixes and Improvements

– Profiles now say “1v1” instead of “2 player FFA”
– Changed the way that the Flash app is sized to fix scrollbar issues.
– Fixed a bug that sometimes caused the turn indicators in the chat window to be off by one.
– Fixed a bug that sometimes caused focus to get lost, making hotkeys not work until the next click.
– Fixed a bug that caused the 15-minute auto boot to really be 10-minute auto boot.
– Fixed a bug that caused a white box to appear over player names on the invite screen for players with an extremely large invite list.
– Fixed a bug when previewing a map from the website that caused the “Go back” button to be visible when it didn’t do anything.

EDIT: Forgot one:
– Tweaked the history hotkeys based on feedback. The Home and End keys are now used to go to the beginning and end of the game, and the left/right keys are strictly for moving one turn at a time.

The blockade card is coming to the 1v1 ladder!

As a result of voting over the last week, the blockade card is officially going to be added to the 1v1 ladder! This will make the game deeper and create for a lot of new and interesting strategies.

You can view the new settings with this template: Play in Multi-Player, Play in Single-Player.

Be sure to practice up! The change will go live at least one week from today (probably more), so you still have time to practice.

Thanks to everyone who voted. 16% of the voters picked the “I don’t care” option. Of those who cared, 72% voted in favor of the card and 28% voted against it. This is pretty definitive that far more people are in favor of the change than not.

Ladder players: Be sure to vote!

There are two polls going on right now that will affect players participating in either of the WarLight ladders. Please vote if you’re a WarLight member playing in or interested in the ladders. Vote even if you don’t care about the outcome (there’s a “I don’t care” option.) I want to ensure everyone has a voice!

Poll 1: Should the blockade card be added into the 1 v 1 ladder?
Poll 2: Should the ladders switch to a traditional ELO model?

Blockade Card

The first poll is about whether or not the blockade card should be added to the 1v1 ladder. This poll ends on March 23rd, so there’s not much time left. Vote now if you haven’t!

Note that, as a general rule, any changes to the ladder game settings will be announced on this blog at least one week before the changes take effect. This gives you time to practice with the new settings.

Ladder Rating System

The second poll deals with the ladder rating system. This one is a bit more involved – you can read all about it on the poll page. However, I do want to touch on one problem that some players have noticed.

A couple skilled ladder players have been able to exit the provisional period at a very high rank, such as #1 or near #1. This happens if they go 10-0 or 9-1 in their first ten games, since the Bayesian ELO system rates players based on their record / opponents and 10-0 or 9-1 is a very good win rate.

First, let me establish one fact. If a player goes 10-0 (ten wins, zero losses), that does not guarantee that they’ll be ranked in the top 10. This only guarantees that they’ll be placed above the ten players they defeated. If their ten opponents all have low ratings, they’re not going to be ranked very highly even though they’re undefeated. This is a good thing, as it ensures that players must earn high ranks by defeating tough players.

Now, some players figured out that the easiest way to get to #1 is to have 9 wins against low rated players and one win against a high-ranking player (such as the top 5). The 9 low-ranking wins are easy for a skilled player, and they just have to be good enough to defeat a single high-ranking player to claim the #1 spot.

This is a problem, as it rewards manipulating the ladder. However, what really made this strategy possible was the old matchmaking algorithm. The old matchmaking algorithm would prefer to match provisional players with other provisional players, while simultaneously allowing a match between any two players under the right conditions.

This old algorithm made it possible to achieve a #1 rank with only a few wins against very good players. The matchmaking algorithm that exists today works very differently, which makes rising to the #1 spot much more difficult (as it should be!)

In the new algorithm, you’re always matched with other players near your rating even when you’re in the provisional period. Further, you’re only matched with players within 20% of the ladder from you. This means that new players joining the ladder won’t get matched with players in the top 5 right away – they have to defeat some lower players first in order to earn the right to face the higher players. Simultaneously, skilled players won’t have a cakewalk during the provisional period anymore. Once they start winning, they’re going to get matched against tough players before exiting the provisional period.

The bottom line is that, today, it’s much more difficult to emerge from the provisional period at a high rank than it used to be.

Game Data Feed

WarLight can now provide an xml feed of data about a specific game. This allows for the more technical users to write a program that can analyze information about games.

This initial release of the feed should be considered an “alpha” experimental project. If this proves useful, it can be expanded to include more information. Currently, the feed is only available for finished ladder and tournament games and is only available for WarLight members.

Being able to consume this data via an API allows for broader analysis of many games at once, which can answer questions such as:

– How often does a player know one or more of an opponent’s picks?
– How often does the person who definitively knows his opponents starting spots win?
– Does early 3v2 luck affect winning percentage?
– Does getting first pick affect winning percentage?
– Does first move affect winning percentage?

There’s nothing the feed can see that isn’t already available through the game’s normal interface. This is just a way to write custom analyzers which allows for a broader analysis across games.

To access the data, use a URL like this:
http://warlight.net/GameFeed.aspx?GameID=1212978

This will present you with a large XML blob describing everything about the game. To help understand the data, let’s first define some terminology:

– A “standing” is the state of the board at any given point in time. This contains one entry per territory that contains the number of armies on that territory, who controls it, and the fog level.
– A “turn” is just a collection of orders. This includes all the orders each player submitted, mixed together in the sequence they played out.
– An “order” is obviously one order that a player submitted. But it can also include other things, such notifications when a player gets eliminated, or when cards are received, etc. Essentially, this represents what you see in the “Orders” panel on the right side of a game when viewing history.

In the xml blob, you’ll find:

– The players in the game (their names, color, their state, etc.)
– All of the details of the map (it’s name, all of its territories and what they connect to, all of its bonuses and what territories are in each bonus)
– The “distribution standing”: This is what the map looked like when it was time to pick the territories you started with. This is only present for manual distribution games.
– The picks: This tells you which territories each player picked, and in what order. Like the distribution standing, this is only present for manual distribution games.
– Standing 0: This tells you what the map looked like at the beginning of the game.
– Turn 0: This is all of the orders that played out on the first turn of the game.
– Standing x/turn x: Standings and turns then alternate for each turn of the game, all the way until the final standing.

If there is something you’d like to see included that isn’t currently included, I’d like to hear about it.

Announcing WarLight 1.1: 2 v 2 Ladder

WarLight will be going down on Friday, March 11th at 1am PST (9am GMT) for up to 1 hour. Please plan accordingly for any fast games or single player games that may get interrupted during this 1-hour window.

During this time, WarLight will be upgraded to v1.01.0.

2 v 2 Ladder

WarLight 1.1 will bring us the 2 v 2 ladder! This ladder uses the “Strategic 2 v 2” settings, just like how the 1 v 1 ladder uses the “Strategic 1 v 1” settings.

Unlike the 1 v 1 ladder, however, you enter the 2 v 2 ladder along with a partner. The two of you will be placed together on the ladder and receive a single rating as a team.

Like the 1 v 1 ladder, all players joining the ladder must be WarLight members. Further, each player can only be on the ladder once. In other words, you can’t pick two partners and join the ladder on two different teams at the same time.

However, you’re not locked with your partner for all eternity. You may leave the 2 v 2 ladder and then re-join the ladder with a different partner. Doing this will create a new team whose rating will start over from scratch. Ratings cannot be transferred from old teams to new teams – so it’s not a decision to be made lightly! However, you can always change your mind and go back to the first partner, as re-joining the ladder with a partner you had previously played games with will assume your previous rating with that partner and place you back on the ladder as if you had never left. This is similar to how re-joining the 1 v 1 ladder works.

Move Order is now Team-Aware

Today, when WarLight sets out to determine who gets first pick during territory selection or who gets first move on each turn, it randomizes the list of every player in the game. This is perfectly fair in free-for-all games, however in team games it’s possible that multiple players on one team will get priority over others.

Let’s look at an example.

Assume we have a game with players 1 and 2 on team A, and players 3 and 4 on team B. Let’s say that all four players pick Mexico as their #1 pick and Norway as their #2 pick.

Prior to 1.1, WarLight would simply randomize the list of players (1, 2, 3 and 4) into any order. Let’s say the order comes out 3421. In this example, this would award both Mexico and Norway to team B. Team A would need to resort to their 3rd picks.

WarLight 1.1 makes this scenario more fair. After 1.1, WarLight ensures that the ordering switches between teams so that, in this example, one team would get Mexico and the other would get Norway – it’s impossible for one team to get both.

WarLight will switch between teams in the same way that it switches between players now – by reversing the order after each iteration. For example, teams will alternate ABC CBA ABC CBA.

Improved Ladder Matchmaking Algorithm

The algorithm that matches players up in the ladder will receive a bunch of improvements.

The biggest change is that it will only match you with players near you in the ladder, instead of before where it preferred near players but could have matched against anyone. The ladder will only create games with people who are within 20% of the ladder from you. For example, if there are 50 players participating in the ladder, it will only look at the 10 players above and 10 players below you.

The algorithm is also receiving improvements that makes it work better for players in the provisional period, as it now ignores rank and creates games solely based on rating. Previously, it preferred to match provisional players against other provisional players which made it too easy to get onto the ladder with a high win ratio (10-0 or 9-1, for example). Now, it will match you to people rated near your rating, regardless of whether you’re provisional or not.

The full algorithm will be documented on the Help tab once 1.1 is live.

Hotkeys for Navigating History

1.1 will allow you to use the arrow keys as hotkeys to navigate around history of a game. The left and right arrow keys go forward and backward one turn, while the up/down arrow keys go forward and backward one order.

Additionally, while not in history the left arrow key takes you to the first turn of a game. Combined with the existing escape hotkey, which closes all windows, this makes it easier to quickly refer to the distribution state of a a game by simply pressing left and then escape.

Misc Changes

– Players can now hold down Shift when clicking on a territory to insert the territoriy’s name into public chat, and hold Control when clicking on a territory to insert it’s name into team chat.
– Increased the invite limit for single-elim and double-elim tournaments. You can now invite up to three times the start size of the tournament.
– A player’s ladder games now sort by last turn instead of game age.
– A player’s ladder games now highlight based on win/loss. This makes it easier to tell how much a player has been winning.
– Fixed a bug in the “Cumulative Defensive Luck” and “Cumulative Luck” graph.
– Fixed a bug that prevented players from moving a template between single-player and multi-player.
– Fixed the appearance of the member icon on the lobby screen.
– Fixed a bug that was showing the “this player is in their provisional period” message on players who had left the ladder.
– Fixed a bug that caused an error if you clicked history buttons on a game where someone got booted during territory distribution.

Announcing release 1.00.3: Markdown, Ladder improvements, and more

WarLight will be going down on Saturday, February 26th at 2pm PST (10pm GMT) for up to 30 minutes. Please plan accordingly for any fast games or single player games that may get interrupted during this 30-minute window.

During this time, WarLight will be upgraded to v1.00.3. Once the deployment is complete, you can view all of the changes on the Change History page, but this blog post also gives a good summary.

Forum Improvements with Markdown

Markdown is a popular syntax for allowing more flexibility in forum posts than just plain text. After this release, the WarLight forum will allow you to include bold, italics, different font sizes, clickable links, and even in-line images in your forum posts.

This will be applied retro-actively to all existing forum posts, so all links that exist in posts today will automatically become clickable. Once the system is live, I will make a forum post in the General forum describing how to use the special features.

Strategic 1 v 1 Luck Change

The Strategic 1v1 template (and therefore the ladder games) will have their luck reduced from 18% to 16%. This value is chosen since 4 armies attacking 2 armies will never fail at 16%. At 18%, the odds are 99.91%.

Ladder Rating Changes

The ladder rating system is getting a few minor tweaks. First off, ratings for new players will start at 0 instead of 1500. This doesn’t really affect much other than initial matches and mentality, but I felt this is necessary to reinforce the point that the current rating system does not start you at 1500 and raise/lower your rating based on your wins and losses. This is entirely my fault, since I presented the rating system this way, which was a mistake. The Bayesian rating system rates you as best it can with the available information – the idea that you start at 1500 is just plain wrong and should never have been introduced.

Second, the game creation algorithm has been tweaked. The main goals behind this algorithm are to try and match you with players that will get you fun games, while also putting an emphasis on playing new players so there aren’t a lot of repeat matches, while also not stagnating your games if you get stuck waiting on a few busy/slow people.

The ladder is settling down and pretty soon we will have what I consider an “established ladder.” The experience of a new player joining into an established ladder is important. With this new algorithm, the idea is that a new player will start at the bottom and work their way up. As they keep winning, the ladder will jump them further and further up the ladder until their win rate stats to stagnate and they find their final position. The Bayesian algorithm is perfect for this kind of system, since a strong player working their way up the ladder won’t penalize the players they beat on their way up much, since those player’s ratings will re-calculate dynamically based on the new player’s final resting place.

Third, the Best Rating column has been tweaked. This column remembers the highest rating you have ever achieved. It’s getting a partner, Best Rank, which will act similarly. However, both of these fields will now only be recorded once you’ve exited the provisional period. This prevents the early fluctuations from awarding a higher Best Rating than was really earned. Also, the Best Rating column has been hidden from the main ladder page just to keep things more tidy. You can still view the value by clicking on a player’s name. The existing Best Rating for everyone will be reset.

Finally, the game creation algorithm has also been improved so it’s possible to receive more than one game per ladder update. This doesn’t guarantee you that it will create every match possible, but it’s a step in the right direction. More work still may be coming in a later release to make it full up all available matches.

Non-member Map Creators

In the previous update (1.00.2), map creators were allowed to invite past the 6-player limit when creating games on their own map. This has been improved even more, and now map creators can use all of the member-only game-creation features when creating games with their own map. This means they can use custom scenarios in multi-player and also specify any luck percentage for their games.

Dashboard Improvements

You can now click on the maps on the Dashboard to preview them. Further, a “Show all” link below the new maps was added that takes you to a new page that lets you browse all public maps.

Similarly, the Recent Forum Posts section grew a “Show all” link. This link takes you to a new page that lets you view all new posts across all forums at once.

Misc Changes

– Player’s profiles now link to their corresponding ladder page.
– After clicking “Show all” next to a list of ladder games, the ratings of each participant now show up in a new column.
– The 2v2 auto game is now fixed teams instead of random.
– The Reconnaissance card now moves the camera to the spot it was played on.
– Blacklisted players are no longer auto-added to your invite list via the auto-add system.
– The ladder now highlights the player being viewed, or yourself on the main ladder page.
– Updated the Variants page with three new variants: Juggernaut, real locations, and Chinese Checkers.
– Fixed a bug that prevented auto boot from working in games that involved AIs.
– Fixed a bug that would sometimes cause a Force Join to fail when a player did not have an automatic color.
– Fixed a bug that was preventing the member icon from showing up in the lobby.
– In the Tournament Settings window, the tournament settings were moved from the right to the left side to make it more balanced.
– Deleting a testing map now deletes any templates that were assigned to that map instead of causing an error.
– Fixed a bug that caused distributing games to appear at the bottom of a list of ladder games.
– Fixed a bug that was limiting the number of people that could be invited to tournaments too strictly.