An XBoard compatible chess engine
Prophet is a chess playing program written in C. Technically it's a chess engine, meaning there is no graphical user interface. To play a game with Prophet, you'll want to install Winboard (Windows) or XBoard (Linux/Mac). See http://www.gnu.org/software/xboard for details.
This codebase is the third major rewrite of Prophet. The first version was started in 2000. The second version (first rewrite) was started sometime around 2007, and the last version (second rewrite) around 2011. The last version of the codebase (https://github.com/jswaff/prophet3) was retired in 2018. Some design goals for this codebase were:
To elaborate on that last point, although Prophet is a fully functional standalone chess engine, I tend to use it more as a "plug in engine" within chess4j more than I do as a standalone engine. This hybrid approach allows me to enjoy the benefits of programming non-critical-path functions in a higher level language while still getting the raw speed of native code. Consequently, I have made a decision to NOT build an opening book or pondering support directly into Prophet, as both are handled by chess4j. (Of course I may change my mind in the future!)
To build Prophet, you'll need a C compiler. I use gcc and 'make'.
If you have the proper build tools, just do:
make
./prophet4_3
If you want to build the tests, you'll also need g++, and a copy of Google Test from https://github.com/google/googletest . Finally, set an environment variable GTEST_DIR to point to the 'googletest' project (we don't need the googlemock stuff). Then do:
make test
./prophet4_test
Strong enough to beat most humans, but not that strong as far as chess engines go. (I hope to change this.)
The CCRL Blitz list (https://www.computerchess.org.uk/ccrl/404/) shows Prophet 4.2 to be rated at 2443. Prophet 4.3 should be around 50 ELO stronger based on the results below:
Rank | Name | Elo | + | - | games | score | oppo. | draws |
---|---|---|---|---|---|---|---|---|
1 | tantabus-2.0.0 | 75 | 3 | 3 | 51250 | 61% | -7 | 22% |
2 | prophet-4.3 | 71 | 3 | 3 | 40000 | 60% | -1 | 25% |
3 | arasan-13.4 | 62 | 3 | 3 | 51250 | 59% | -6 | 21% |
4 | barbarossa-0.6.0 | 52 | 3 | 3 | 51250 | 58% | -5 | 21% |
5 | qapla-0.1.1 | 24 | 3 | 3 | 51250 | 54% | -2 | 24% |
6 | prophet-4.2 | 18 | 3 | 3 | 40000 | 53% | -1 | 24% |
7 | loki-3.5 | 16 | 3 | 3 | 51250 | 52% | -1 | 23% |
8 | myrddin-0.88 | -9 | 3 | 3 | 51250 | 48% | 1 | 25% |
9 | prophet-4.1 | -42 | 3 | 3 | 40000 | 44% | -1 | 23% |
10 | tjchess-1.3 | -88 | 3 | 3 | 51250 | 36% | 9 | 22% |
11 | jazz-840 | -140 | 3 | 3 | 51250 | 29% | 14 | 19% |
12 | prophet4 | -147 | 7 | 7 | 10000 | 30% | -1 | 18% |
4.3:
4.2:
I would still like to improve Prophet's understanding of pawns, but at this point I'm turning my attention to implementing a neural network.
The search is still single threaded. That is actually a regression of sorts; Prophet 2 was SMP capable (using Young Brothers Wait), but it will come. I just choose to focus on the eval for a bit first.
You can see the combined Prophet / chess4j backlog here: https://trello.com/b/dhcOEaCO/chess4j-board .