Online technical papers

Chess board representations

If you are interested in how to represent a chess board in a computer chess program, then this HTML document will be useful to you. It covers the traditional offset board representation using arrays (including the well- known 0x88 approach) as well as the bitmap (bitboard) approach that uses 64 bit integers to represent the state of the 64 squares on the chess board. It is targeted to the beginning computer chess programmer but might be useful even for "old hands."

Rotated BitMaps

If you are interested in the concept of bitmaps, and in particular, the rotated bitmaps developed in the Crafty project, this document is a HTML version of the JICCA paper on rotated bitmaps. This paper is actually more current than the JICCA paper as it has been revised to include recent changes in the rotated bitmap implementation used in Crafty. This is a technical paper targeted to someone that is interested in developing a bitmap (bitboard) chess engine. It only discusses bitmaps (bitboards) and the rotated approach to generating pseudo-legal moves. It does not go into other engine details such as search and evaluation.

Hash Collision Effects

If you are interested in the concept of how hash collisions influence the accuracy of the search, then this HTML version of the JICGA paper on hash collisions addresses this topic.

Crafty Documentation

If you are interested in the documentation of all Crafty commands, or want to know more about what Crafty can do besides simply playing chess as it is distributed, then this document is for you. This is an HTML version of the crafty.doc/crafty.ps/crafty.pdf file that explains every command in Crafty in detail. This is intended for anyone that is, or is potentially a Crafty user, as well as for anyone developing a chess program and would like to see what a chess program interface might look like.

Lockless Hashing

If you are interested in the concept of lockless hashing and how it is used in a parallel search to avoid the overhead of MUTEX locks, then this HTML version of the JICCA paper on lockless hashing describes the approach used in Crafty to avoid MUTEX locks completely, when updating the transposition table. This is specifically targeted to the person working on a parallel chess program, and only discusses the issues surrounding the use of a transposition/refutation table by multiple threads executing in parallel.

Book Learning

If you are interested in the concept of book learning, and how it is used to auto-tune a computer chess program's opening book, then this HTML version of the JICCA paper on book learning addresses this topic. This paper assumes that the author is familiar with chess programs, and creating opening books for them, and is familiar with the problems related to selecting lines for a program to play as well as lines that the program should avoid.

Parallel Search (DTS)

If you are interested in the concept of parallel search as it applies to computer chess and would like technical details on how a high-performance parallel tree search works, then this HTML version of the JICCA paper on the DTS parallel search algorithm used in Cray Blitz is for you. This is a technical paper targeted to those that already have a good understanding of alpha-beta/minimax search, and who would like to find out how a parallel machine can be used to make the chess program search the tree faster, and thereby play stronger. It also assumes some parallel programming experience for such concepts as critical sections as well as potential inter-process race conditions and interleaved update problems.