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