Destription

The existing front-end for XBoard is 2D and uninteresting (but functional). This project involved adding a 3D front-end to XBoard that allows the user to view the board, in its current state, in 3D (not very functional, more for looks) by choosing a menu option. XBoard is written completely in X (no glut or fltk) so this project required that I create and pass X events around and manage my own display lists. I had to modify the existing xboard.c file to redirect events to my 3D viewer when the 3D option is selected. The changes that were made to the original program are listed in 3dchanges.patch. The files that I wrote from scratch are graphics.c and graphics.h.


The original 2D front-end for XBoard.


User's Guilde

The build procedure for XBoard uses automake, so configure will need to be run before make. Since this is a new feature for XBoard, the --enable-3d option must be passed to configure. After configure completes, run make.

In order to start XBoard, either GNUChess or Crafty will need to be on the system. If neither are, I've included the Crafty source with this project. To build Crafty on the Solaris machines at UCSC, cd to the crafty source directory and run make solaris-gcc. After the build completes, XBoard can be started with the command xboard -fcp crafty -scp crafty (you may need to specify absolute paths for xboard and crafty).

Once XBoard has started, you can start playing a game, or you can make the computer play itself by clicking on the Mode menu and selecting Two Machines. At any time, you can click on the Options menu and select Enable 3D Board. In 3D mode, you can move the camera around by clicking anywere in the window (except on a chess piece) and then moving the mouse. Picking of pieces works, but I still need to figure out how to register a move with the chess backend so you cannot make moves from this mode.


Selecting 3D mode.


The 3D board.


A 3D view of a game in progress (GNUChess vs. GNUChess).