Go, the ancient board game
1 September 2010
In year 2002 I encountered Go, the ancient oriental board game, for the first time. Back then I was studying Japanese and reading a lot of manga when I came across one about an old board game. I was pretty intrigued from the outset: how could you possibly tell an interesting story about a board game? I was pleasantly surprised, along with many others: ヒカルの碁 (Hikaru no Go) took the manga-reading world by storm and introduced this ancient game to a lot of people.
After reading about playing go I decided to learn how to play it myself. I found KGS, an online Go server pretty quickly and started playing there regularly. After the initial giant leaps of progress I felt like I hit a wall and stopped playing for almost a year. Ever since I've been playing it in an “on again, off again” manner.
Over the years I thought about making my own virtual Go board for fun and exercise, and sometime in 2008 I finally decided to go ahead and do it. The result was goban, the first project I published on Github. Goban is written in Python and comes with a PyGame -based GUI to provide immediate feedback. I'm still pretty proud of how it came into shape: I started with the GUI and thus could immediately test the real library as it was being written. However, PyGame has been pretty inactive during these years and only recently got support for antialiased circles, which are absolutely essential for drawing the stones. I also omitted tests because I used the GUI to test manually, something that really bit me in the ass later on when I encountered trouble with capturing by filling dame and the ko rule. After I stopped playing go again I promptly forgot about goban for over a year.
Now that I'm about to start playing again I'm ready to unveil something I've been tinkering with in my spare time for a while: gorb. Gorb is in many ways an improved version of goban that has been translated to Ruby. Learning from past mistakes, I started by writing an extensive suite of unit tests to really get the rules down, including all the corner cases. Gorb finally passes this entire test suite and I now feel comfortable enough with it to publish its initial version on Github. It supports the Japanese rules and can handle both handicaps and non-standard komi with ease.
Gorb will be the heart of w2go, and both of these two projects are under heavy further development. Expect to see support for solving sets of tsumego problems, scoring and reading SGF files soon. I've also been planning to create some sort of interactive introduction to go with w2go. In the meanwhile, go ahead and take a look at these projects!