This chess AI was developed by Justin Aubin and myself for an end-of-term project part of 8INF878 : AI course at UQAC. You can find the written report about this project (in French) in the repo.
It uses the UCI protocol. We implemented :
- principal variation splitting (distributed algorithm)
- depth limited minimax with fail-soft alpha-beta pruning
- material evaluation
- tapered evaluation
- piece square tables
- transposition table
- quiescense search
- move ordering
- opening book (20 000 games)
It can deliver a move in less than a second at depth 5 on most computers. If your computer has lot of cores, you may want to try at depth 7 and modify the 1 second time limit in Timer.java.
Thanks to it we won the small tournament organized between the AI of the students of the class.
This has been possible thanks to Chesslib for the chess rules and Carballo for the reading of Polyglot files.
The repo is a Maven project. Use the IDE of your choice to play with it. You can play against the AI using the console and UCI commands or build a .JAR file and use it on a Graphical User Interface supporting UCI protocol : Arena.
Games history can be found here.