CGOS - A 9x9 Computer Go Server

Hosted by boardspace.net


See Current Standings

What is CGOS?

CGOS is a game playing server designed for Computer Go programs only. It was designed to address a need in the computer Go community - a way to test programs that play Go on a 9x9 board and also to get a rating for those programs.

CGOS keeps things simple. It is not a full featured game server such as The Kiseido Go Server which in addition to playing GO can be a place to socialize. Instead, CGOS focuses on the basics of simply letting computers play each other.

With CGOS, instead of deciding whether to make, accept or decline challenges, the server manages the scheduling of games. This is a feature of CGOS which allows fair pairings of matches and relieves a human operator from making these decisions. The idea is that you put your program on-line and then come back a few hours or days later knowing that your program will have played a variety of opponents.

CGOS Rules of Play

Programs that play on CGOS use rules very much in spirit to the Tromp/Taylor rules, sometimes referred to as "The Logical Rules." These are Chinese based rules where games are played out to the end and all remaining stones are considered alive.

Here are the details:

    Time Control is 5 minutes Sudden Death.
    Chinese Rules.
    No suicide allowed.
    Komi 7.5
    Positional Superko is used.
    The game is over after 2 consecutive passes and all stones are considered alive.

Network Lag
CGOS silently adds 1/4 second to each players clock for each move played. This is to help programs on slow internet connections and to compensate for other timming ambiguities. The amount of time your program takes for a given move is never allowed to be reckoned as negative due to this compensation, so the least amount of time a move can take, even with the 1/4 second bonus, is 0.0 seconds.

This is not designed to deal with network lag in a "fair" way, if your program is running on a fast reliable network it will still have an advantage, however this should improve the situation where a program on a slow network continues to lose time on the clock when the local program is actually playing instantly.

How do I get started?

First of all, your program should use the Go Text Protocol (GTP) for external communication. This has become a widely used standard protocol for Go programs.

Your program should be compatible with the CGOS Rules of Play mentioned in the previous section. In particular, if your program does not play out the game it will probably lose because after 2 consecutive passes, the game is scored and all stones are considered alive.

Once your program speaks GTP, download the client script and documentation (currently there is no documentation but if you run the client without any arguments a usage message will appear) The latest client is version 1.1.

There are several types of clients for attaching your engine to cgos:

cgos3-darwin.zip a client for Mac OS-X (universal)

cgos3-x86_32.zip a client for 32 bit x86 linux.

cgos3-x86_64.zip a client for 64 bit x86 linux.

cogs3.zip a pure tcl client.

cgos3-windows.zip an x86 client for windows.

There are also viewing clients (current version is 0.35) - a convenient way to observe games with a graphical user interface:

The viewing clients that are avaialbe are primitive prototypes, which may be improved over time, or completely rewritten. However, they work quite well and are very convient for viewing games as they are being played. To use them, you must specify a server and port (unless viewing 19x19 games.)

Here is how to observe 9x9 games: cgosview.exe -server cgos.boardspace.net -port 6867

cgosview-darwin.zip a graphical viewer for Mac OS-X (universal)

cgosview-x86_32.zip a graphical viewer for 32 bit x86 linux.

cgosview-x86_64.zip a graphical viewer for 64 bit x86 linux.

cgosview-windows.zip a graphical viewer for x86 windows.

cgosview_kit.zip a cross platform tclkit. This one requires a single executable runtime usually called "tclkit" for your platform, and they are available for many platforms. Plese see www.equi4.com for instructions on how to get the right one for you platform and other details on how they work.

Suggest Improvements

Any comments or suggestions for simple improvements would be considered and appreciated. Feel free to send these suggestions or comments to Don Dailey.

Over time many suggestions have been implemented and some will be implemented in the future.

Technical Details

Pairings

The goal of CGOS is to schedule matches as fairly as possible but with good opponent variety. Also, CGOS tries to avoid mismatched pairings, when one player is matched against a considerably weaker opponent. In order to achieve these goals, many issues have to be considered.

For instance one possible scheduling algorithm is to schedule players as soon as they become available. The problem with this approach is that programs tend to become available in pairs - when a game between two players is complete those same two players suddenly become available and get paired together again. A situation we would like to avoid happening too often.

So CGOS uses a simple pairing system that is fair. Games are scheduled in discreet rounds where each available program is paired with another program by strength. As previously mentioned, CGOS attempts to match stronger player with other strong players and weak players with weak players. Each round begins a few seconds after all games of the previous round are complete.

Rating System

CGOS using the ELO rating system. Players earn numerical ratings points which can be used to predict their performance against other players. For instance, if one player is 100 points higher in rating than another, the ELO system we use predicts that he will win about 64% of the games between them. For 200 points it is about 76% of the games. It is over 90% for a 400 point difference. For technical details on how players are rated using ELO, there is an excellent description on Wikipedia about the ELO rating system.

The ELO system uses a constant usually called the K-factor (also described in the wikipedia). There are many articles on the web about which K-factors should be used under various scenario's. The K-factor determines how much your rating can change as the result of a single game, the lower your K-factor the less effect a single game will have on your rating.

In CGOS, each player has a K-factor (the constant in the ELO formula) that decreases with each game played until it reaches a fixed lower bound of 3.0. New players start with a very high K-factor and an arbitrary rating near the median of all the players. However the K-factor used to update a players rating after a game has completed is a function of the players current K-factor and his opponents K-factor. This is to ensure that players with high K-factors (and thus low rating confidence) will have very little impact on their opponents ratings. Likewise, each players K-factor is decreased after each game in proportion to the opponents K-factor. So if you play a new unrated player the result of that game will have little impact on your rating and your K-factor will not be reduced much.

A common problem with rating systems is rating inflation/deflation. Without controls in place, a rating pool will tend to drift up or down, similar to how an economy can suffer from inflation or deflation. For instance as younger players rapidly improve in a rating population they tend to deflate the rating pool. CGOS tries to solve this problem by the presence of one or more anchor players. An anchor player is a player that has a fixed rating and is almost always available for games on the server. On CGOS there could be one or more anchor players. At the current time there is one player called FatMan with a fixed ELO of 1800.0. In a potential inflation or deflation situation the Anchor players would serve as an "anchor" to keep the the rating pool stable. (For instance in an inflation scenario players with inflated ratings would be brought back down to reality when they play an anchor who is not inflating with them.)

CGOS distinguishes players by the confidence it has in their ratings. If a player has a low confidence rating (high K-factor) his rating appears with a question mark after it, and is not to be trusted. Once it reaches reasonable confidence it appears with no question mark after the rating and can be considered reasonably stable. Although this is not visually indicated, the confidence continues to increase until the K-factor reaches 3.0. In most cases, full confidence is achieved by the time 200-300 games have been played.

Other Information

Nick Wedd has done much for the Computer Go community and maintains information at this site

Other Go Servers that support Go-playing Bots

Sensei's Library contains much information on Go and Computer Go.

A CGOS section in Sensei's Libarary which describes some of the program that play on CGOS.

John Tromp has make some interesting contributions to Computer Go