Online technical papers
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."
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.
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.
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
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.
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.
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.