I wrote a multiplayer game that simulates a chess board with no physical location.

The image of a chess board is presented. Just as with a real chess board, the viewer can adjust the viewing angle and move pieces arbitrarily.

Any number of users can connect to the program across the network. There is only one chess board.

The subdued visual style was inspired by the work of graphic designer Edward Tufte.

Garry is named after Garry Kasparov, the last human chess master to be beaten by a machine.

The program Garry knows nothing about the game of chess.

A simple physics model allows pieces to nudge each other out of the way when they collide. The pieces rotate realistically when pushed against each other.


My original intent was to simulate everything about a real chess board, except that instead of sitting on a real table down in the kitchen, this chess board would be located on the network. Users could walk up to the chess board and interact with a game in progress, just like in the real world.

I overlooked two subtle facts that turned Garry into a complete disaster. First, the program was anonymous. There was no feedback about who, if anyone, was playing, or who was moving pieces.

Secondly, as most grammar school children are aware, moving small objects around and knocking them together is a lot of fun.

I released the game at work. Two people would begin playing a game, and inevitably a third person would connect to the system and see the pieces and immediately start rearranging them and pushing them together.

This wouldn’t be so bad in itself if chess weren’t a game in which the players invest a large amount of time arranging the pieces in a particular configuration.

Tempers flared.

In horror, I realized that I had created software that facilitates hatred between people! I was pretty depressed about this.


Now Garry displays the names of the players around the edge of the window, and you can tell how everyone is sitting relative to each other in the shared space.

The players can also type messages to each other. When a user moves a piece, his name is highlighted. Audio cues indicate when a new user enters the game, when characters are typed, and when pieces are manipulated.

Typically, a user will join the session, and the players will type something like “Hi Steve, we are already playing” and hatred will be avoided, unless there are other reasons to dislike Steve.


I wrote some experimental code so the pieces could cast shadows onto each other.

A coworker, Lawrence Kesteloot, wrote a special client program for Garry that knows how to play chess and responds to simple textual commands. That program is called Shallow Blue.

Return to Drew’s Home Page