I wrote some software 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. In that sense, it's just like Mr. Kasparov.
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 disturbing amount 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.
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.
At the moment, the shadows are projected onto the ground plane.
I wrote some experimental code so the pieces could cast shadows onto each other, but it was too slow. I did a lot of clever bounding box checks, and the performance is fine when the pieces are spread out, but if you lump them all together it's unacceptable.
This probably doesn't matter too much though because generally speaking, when people play chess, they don't spend a lot of time looking at the shadows cast by the pieces.
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