Improve README and INSTALL documentation
[purplehaze.git] / README.md
blob0170bea3e86cc3d92b9e0134cfd59e49c287268d
1 Purple Haze
2 ===========
5 Do Chess Engines Dream of Electric Guitar?
6 ------------------------------------------
8 Purple Haze is a free chess engine compatible with the Xboard protocol. It is
9 written by Vincent Ollivier and distributed under the terms of the GNU General
10 Public License version 3.
12 The development of Purple Haze started in the winter of 2006-2007 as a pet
13 project to learn the Java programming language by a student in Computer
14 Science. It was terribly slow and rapidly put aside for two years before
15 benefiting from a regained interest after much research and reading of papers
16 on the subject.
18 A new version was written in C++11 between the summer of 2009 and the beginning
19 of 2010 but it was full of bugs and not well engineered so a second major
20 rewriting started during the winter of 2010-2011. This time it was only
21 slightly faster but it would prove to be a lot easier to maintain and the
22 overall code quality was enhanced by using a test-driven development practice.
23 The goal is to end up with something reasonably good and free of bugs.
25 Most of its concepts or algorithms are inspired from scientific papers and
26 Open Source engines, notably TSCP, CPW, Fruit, Crafty and Stockfish. A lot of
27 the ideas used for the implementation of theses concepts also comes from
28 reading the [Computer Chess Club Forums](http://talkchess.com/forum/) and the
29 [Chess Programming Wiki](http://chessprogramming.wikispaces.com/). Without
30 them Purple Haze would not be able to do more than moving the pieces around
31 the board.
34 Implemented features
35 --------------------
37 Data Structures:
38 * 0x88 Board Representation
39 * Piece-Lists
41 Moves:
42 * Lazy Move Generation
43 * Best Move from Iterative Deepening or Transposition Table
44 * Most Valuable Victim / Least Valuable Aggressor
45 * Killer Moves
47 Search:
48 * Principal Variation Search
49 * Iterative Deepening
50 * Transposition Table
51 * Mate Pruning
52 * Check Extension
53 * Adaptive Null Move Pruning
54 * Extended Futility Pruning
55 * Late Move Reduction
57 Quiescence Search:
58 * Standing Pat
59 * Delta Pruning
60 * Move Ordering (via MVV/LVA)
62 Evaluation:
63 * Lazy Evaluation
64 * Material Hash Table
65 * Opening and Ending Piece-Square Tables
66 * Tapered Evaluation
68 Debugging:
69 * Perft
70 * Divide
71 * EPD Test Positions
73 Miscellaneous:
74 * SAN output
75 * FEN parsing
76 * Zobrist hashing
77 * Xboard protocol
78 * Time Management
81 Installation
82 ------------
84 See INSTALL for detailed installation instructions or just type the following
85 commands in a terminal:
87     $ git clone git://github.com/vinc/purplehaze.git
88     $ cd purplehaze
89     $ make
92 Usage
93 -----
95 You are free to read it, run it and modify it. If you choose to do so, drop me
96 an email at <contact@vincentollivier.com>, it is not yet a mature project so
97 any feedback will be really appreciated.