Hello, I’m Glenn Fiedler and welcome to Virtual Go, my project to simulate a Go board and stones.
I’m a professional game programmer with 15 years experience in the game industry. Over the years I’ve worked for Irrational Games, Team Bondi, Pandemic Studios and most recently Sony Santa Monica on the God of War Team. During my career I’m extremely proud to have worked on such games as ‘Freedom Force’, ‘L.A. Noire’, ‘Journey’ and ‘God of War: Ascension’.
In my spare time I’m also an avid player of the board game ‘Go’.
A personal project I’ve always dreamed of is to combine the things that I love: the game of Go, graphics programming, physics simulation and network programming.
The end result I hope to achieve is a beautiful real-time computer rendering of a go board and stones with photorealistic visuals and the laws of physics defining all interactions between the go stones and the board. To all Go players reading this, yes, I hope to reproduce that unique ‘wobble’ you are familiar with when placing biconvex stones on the board.
During the course of this article series I’m going to build this project entirely from scratch and include you in on all the details of building it as a tutorial. I believe in sharing knowledge not hoarding it and hope that you can follow this project and understand the passion I bring to it and perhaps learn a few things along the way.
If you already play Go and want to get right in to the details of building the simulation, I would recommend skipping ahead to the next article in the series: The Shape Of The Go Stone.
Otherwise, if you would like a quick introduction to Go, please read on!
Introduction to Go
Go is a board game with origins in ancient China.
Today it is played worldwide with a particularly strong following in China, Japan and Korea.
Go is played on a grid with black and white stones. It is played by two people, each taking turns to place a stone of their color at one of the intersection points on the grid. Once placed on the board, stones do not move.
Each stone on the board has a number of liberties equal to the number of lines radiating out from it on the grid. A stone in the middle of the board has four liberties, a stone on the side has three, a stone in the corner has just two.
If the opponent is able to surround all the liberties with stones of the opposite color the stone is removed from the board.
When stones of the same color are placed horizontally or vertically next to each other they become logically connected and form a “group” with its own set of liberties. For example, a group of two stones in the center has 6 liberties, while the same group on the side has only 4.
A group may be captured if all of its liberties are blocked with stones of the opposite color. When a group is captured it is removed from the board as a unit.
Of course it is not so easy to surround your opponents stones because they get to place stones too
For example, a single black stone in the center may have just one liberty remaining in a situation known as “Atari” but can easily escape by forming a group of two stones. Now the black group has three liberties and can easily extend to create more.
It follows that it’s not really possible to capture all of your opponents stones or for them to capture all of yours. Instead, you must coexist on the board with stones of the other color and find a way to surround more points of territory than your opponent.
It sounds simple but as you play Go you’ll notice beautiful complexity emerging like a fractal: life and death – stones living even though surrounded, liberty races, seki or “dual life”, the ladder, ko, the snapback, playing under the stones, the monkey jump, the bamboo joint, the tiger mouth.
So many beautiful properties from such simple rules. Truly an amazing game!
Please visit The Interactive Way To Go if you would like to learn more.
If you enjoyed this article please donate.
Donations encourage me to write more articles!