Refactor killer moves
[purplehaze.git] / README.md
blob499b4f2e47f4cc3f23639d2e7b68568cbf1d04b1
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 project
13 to learn the Java programming language by a student in Computer Science.
14 It was terribly slow and rapidly put aside for two years before benefiting
15 from a regained interest after much scientific papers' reading on the subject.
16 A new version was written in C++ between the summer of 2009 and the beginning
17 of 2010 but it was very bugged and difficult to maintain so the second major
18 rewriting started during the winter of 2011. This time it is only slightly
19 faster but a lot more organized (comparatively) and follow a test-driven
20 development. The goal is to end up with something reasonably good and free of
21 bugs.
23 Most of its concepts or algorithms are inspired from scientific papers and
24 Open Source engines, notably TSCP, CPW, Fruit, Crafty and Stockfish. A lot of
25 the ideas used for the implementation of theses concepts also comes from
26 reading the [Computer Chess Club Forums](http://talkchess.com/forum/) and the
27 [Chess Programming Wiki](http://chessprogramming.wikispaces.com/). Without
28 them Purple Haze would not be able to do more than moving the pieces around
29 the board.
32 Implemented features
33 --------------------
35 * Data Structures:
36     * 0x88 Board Representation
37     * Piece-Lists
39 * Moves:
40     * Lazy Move Generation
41     * Best Move from Iterative Deepening or Transposition Table
42     * Most Valuable Victim / Least Valuable Aggressor
43     * Killer Moves
45 * Search:
46     * Principal Variation Search
47     * Iterative Deepening
48     * Transposition Table
49     * Mate Pruning
50     * Check Extension
51     * Adaptative Null Move Pruning
52     * Extended Futility Pruning
53     * Late Move Reduction
55 * Quiescence Search:
56     * Standing Pat
57     * Delta Pruning
58     * Move Ordering (via MVV/LVA)
60 * Evaluation:
61     * Lazy Evaluation
62     * Material Hash Table
63     * Opening and Ending Piece-Square Tables
64     * Tapered Evaluation
66 * Debuging
67     * Perft
68     * Divide
69     * EPD Test Positions
71 * Miscellaneous
72     * SAN output
73     * FEN parsing
74     * Zobrist hashing
75     * Xboard protocol
76     * Time Management
79 Installation
80 ------------
82 See INSTALL for installation instructions. For the moment there is no stable
83 version yet.
86 Usage
87 -----
89 You are free to read it, run it and modify it. If you choose to do so, drop me
90 an email at <contact@vincentollivier.com>, it is still a very young project
91 written by a beginner in chess programming so any feedback would be really
92 appreciated!