Introduction to Virtual Go

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’.

go board outside cafe

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.

old men playing go outside in the park

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.

go-board-liberties-9x9

If the opponent is able to surround all the liberties with stones of the opposite color the stone is removed from the board.

capture-stones-9x9

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.

go-board-group-of-two-liberties-9x9

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.

capture-groups-of-two-9x9

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.

atari-run-away-9x9

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.


Next: The Shape Of The Go Stone




If you enjoyed this article please donate.

Donations encourage me to write more articles!

13 thoughts on “Introduction to Virtual Go”

  1. Hello,
    as a guy in love with both Go and computer physics I must say this is a fantastic project and I wish you a lot of luck with it.

    I have two simple questions: do you have any plans on making the game open source (perhaps sometime later on)? I think the Go community would love to help you out to finish the game faster and add some nice features.
    The second question is whether you have considered collaborating with Go servers like KGS, Tygem, etc.? I think it would be in mutual interest to make use of the existing huge player-base. At the very least it would be nice to have an advertisement over there, but ideally to actually network with their servers, so that people could use your game as a (sort of) fancy client — a programming effort I would be willing to pursue if you’d make the game open source.

    In any case, best luck with the game!

    1. Thanks!

      Right now I’m really just trying to make this program beautiful and tactile to interact with on touch screens (see latest iPad screenshot here: http://gafferongames.com/wp-content/uploads/2013/04/virtual-go-screenshot.jpg).

      My first major milestone is to support playing a 9×9 game with your friends over wifi, then *reviewing* that game with your friend over wifi and saving an SGF with variations, perhaps with the option to share this SGF file over facebook/twitter post-match.

      Once this is made there are many different directions to go. I think I’ll just listen to the community and see what features they want the most :)

      1. Also, Marek if you have an iPad 2,3 or 4 and would like to help beta test Virtual Go, please go here and join the beta test group.

        http://tflig.ht/Zy3J8Y

        I’d love to get your feedback and please share this link with your go playing & iPad owning friends :)

  2. Pingback: Pan de baduk | Badukaires
  3. Hello,

    I’m a hobbyist game programmer and know your website for years (the network programming part as yu could guess). And incidentally, I’m a european 1d go player (3d on kgs), and I just discovered today you have also interest in go!

    (I dont own an IPad, you have to plan an android version!)

  4. you should make a go board like the one they used in the new TRON movie! that would make the game even be more desirable , and i would buy it :)

  5. Pingback: Introduction to Virtual Go | Marsh Games Blog

Leave a Reply