Computer Go

Writing Software to Play the Ancient Game of Go
Go is a strategic, two-player game that originated in ancient China thousands of years ago. It is popular throughout East Asia, and is gaining popularity among computer programmers because of its extraordinary complexity. Whereas the top chess-playing computer programs are now better than the top human grand masters, the best Go-playing computer programs currently in existence can be defeated even by amateur Go players.

The rules of Go are simple, but the strategies complex; the sheer number of legal moves at any point in the game make programming an effective opponent a daunting task. This book endeavors to help the novice who is beginning to write software to play the ancient game of Go, as well as to provide a useful resource to those already skilled in the art.

The Go Community
It is becoming very common for Go players to use the Internet to meet, discuss games, and play one another. Many strong players now regularly play Go online. There is also a growing community of people who write Go software programs, with regular competitions and tournaments between the various Go-playing engines. See How Do I Find Other Programs To Play Against?

Where Do I Start?
The best place to start is with the rules of Go. Once you are comfortable with the rules, you may want to play a few games yourself. At that point you can begin with whichever chapter of this book you find most interesting:


 * Writing a Go Engine: the innards of a Go-playing program [[Image:75%.svg]]
 * Writing a GTP Engine: the protocol that allows to programs to play Go against each other [[File:00%.svg]]
 * Writing an SGF Parser: the file format in which Go games are stored [[File:00%.svg]]
 * Writing a Go GUI: the way humans interact with a Go-related program [[File:00%.svg]]

Miscellaneous Resources

 * Developer Resources
 * Open source code
 * GNU Go
 * Utilities
 * Mailing Lists