Introduction to the game Go
Go is played by two players on a 19x19 board (or grid). Players alternately place their stones on the intersection points of the lines in the grid, which are called points. In our case, the stones are blue and red, but usually they will be black and white. The blue (black) player will start the game. Players can capture each other's stones and at the end of the game, the player with the largest area on the board wins. All of this will be explained in more detail below. There are many different variations on the rules of Go, but we will use the Tromp-Taylor rule set, which are largely based on the Chinese variant of Go.
As Go is one of the more difficult games for computers to play, we are eager to see how well the TheAIGames community is able to do with this game. If you have any questions, suggestions or if you've found a bug, please post on the discussion page. Keep in mind this competition is still in Beta, meaning that some elements of the game or communication with the engine might change later.
Playing the game
Before the rules are explained any further, we will define two terms that are commonly used in Go:
Players take turn placing stones on any empty point on the board. Sometimes a stone can not be placed on an empty points, these exceptions are explained in the 'Additional rules' section. In addition to placing a stone, a player is also allowed to pass.
- Stones of the same color that are on adjacent points (adjacent meaning neighboring horizontally or vertically), form a solidly connected string. To keep things consistent, a single, non-connected stone on the board is also referred to as a string.
- Empty points on the board that are adjacent to a string are called liberties. On the right you see the liberties of the blue strings marked by a white X.
After placing a stone on the board, any strings that have no liberties are removed from the board. So according to the definition of liberties, this means that a single stone must be surrounded by four other stones. In the image, placing red stones on all the white X-marks will remove all the blue stones from the board. Placing a blue stone on one of the X-marks will make the string larger and also increase the amount of liberties of the string. So more red stones are needed to surround a larger string.
There are two special rules that prohibit a stone from being placed on a certain point, even if the point is empty. The first rule is the Suicide Rule. This rule states that a stone cannot be placed on a point where it immediately has no liberties. If it would have been possible, the stone would be removed from the board anyway at the end of the turn (see above). Have a look at the image to the right. The A marks an example of the suicide rule.The second rule is the Ko Rule. This rules prevents the game from staying infinitely in the same two states. The Ko Rules states that a stone cannot be placed on a point where it would cause the board to be in the same state it was in a previous turn. It can happen in certain situations when your opponent captures a stone. It may be possible that by placing a stone on the empty point just created, you can take the stone back your opponent has just placed. If performed, the board would look exactly the same as two turns ago. Now the opponent can take your bot's stone again in the same way, etc. So the Ko Rule comes in to prevent this. The image shows an example of the Ko Rule at the B mark. Placing a blue stone on the point where the B is, would remove the red stone to the left. Now, placing a red stone on the point left of B again is prohibited, because the blue stone now at B would be removed and the situation would be exactly the same again as in the image.
Winning the game
In this variant of Go, the game is won by the player that has the largest area on the board. The area of a player is defined by the number of stones the player has, plus the empty points completely enclosed by stones of the player's color. Also, because player 2 has a disadvantage not moving first, we add 7.5 compensation points, called Komi, to player 2's score. The areas plus the Komi of the players are compared to get the winner of the game.
The game will end if one of two things happens. The first is when there are no more moves available for both players. This happens only on rare occasion or on a very large amount of turns. The second is when both players pass successively. Human players usually pass when they see they cannot improve their score any further, but (bad) bots will not be able to detect this very well, so a hard limit of 250 rounds is enforced on this Go competition. After game end, the player with the largest area wins.
The timeout settings are the same as for our newer competitions. You get an initial maximally filled timebank of 10 seconds and each time a move is requested 200ms will be added to your timebank. The engine will give the amount of time left in your timebank each time it asks your bot for a move. If your bot does not respond before the timeout, the engine will ask again for a move. If it doesn't respond twice, your bot will lose the game. Bots that do not output anything at all, a.k.a. fail their input test, can not be placed in the ranked matches.
When uploading your bot, you can upload a
file. Make sure you either put the source files directly in the compressed folder, or in their respective class folders. So do not put a folder with the source files in the compressed folder, or your bot won't compile.