- Notifications
You must be signed in to change notification settings - Fork0
0x88 chess engine written in C++ ♘
License
vinc/purplehaze
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Do chess engines dream of electric guitar?
Purple Haze is a free chess engine compatible with the Xboard protocol. It iswritten by Vincent Ollivier and distributed under the terms of the GNU GeneralPublic License version 3.
The development of Purple Haze started in the winter of 2006-2007 as a petproject to learn the Java programming language by a student in ComputerScience. It was terribly slow and rapidly put aside for two years beforebenefiting from a regained interest after much research and reading of paperson the subject.
A new version was written in C++11 between the summer of 2009 and the beginningof 2010 but it was full of bugs and not well engineered so a second majorrewriting started during the winter of 2010-2011. This time it was onlyslightly faster but it would prove to be a lot easier to maintain and theoverall code quality was enhanced by using a test-driven development practice.The goal is to end up with something reasonably good and free of bugs.
Most of its concepts or algorithms are inspired from scientific papers andOpen Source engines, notably TSCP, CPW, Fruit, Crafty and Stockfish. A lot ofthe ideas used for the implementation of theses concepts also comes fromreading theComputer Chess Club Forums and theChess Programming Wiki. Withoutthem Purple Haze would not be able to do more than moving the pieces aroundthe board.
See INSTALL for detailed installation instructions or just type the followingcommands in a terminal:
$ git clone git://github.com/vinc/purplehaze.git$ cd purplehaze$ make
Data Structures:
- 0x88 Board Representation
- Piece-Lists
Moves:
- Lazy Move Generation
- Best Move from Iterative Deepening or Transposition Table
- Most Valuable Victim / Least Valuable Aggressor
- Killer Moves
Search:
- Principal Variation Search
- Iterative Deepening
- Transposition Table
- Mate Pruning
- Check Extension
- Adaptive Null Move Pruning
- Extended Futility Pruning
- Late Move Reduction
Quiescence Search:
- Standing Pat
- Delta Pruning
- Move Ordering (via MVV/LVA)
Evaluation:
- Lazy Evaluation
- Material Hash Table
- Opening and Ending Piece-Square Tables
- Tapered Evaluation
Debugging:
- Perft
- Divide
- EPD Test Positions
Miscellaneous:
- SAN output
- FEN parsing
- Zobrist hashing
- Xboard protocol
- Time Management
You are free to read it, run it and modify it. If you choose to do so, drop mean email atcontact@vincentollivier.com, it is not yet a mature project soany feedback will be really appreciated.
About
0x88 chess engine written in C++ ♘