jswaff / prophet

Prophet chess engine
3 stars 0 forks source link

prophet

An XBoard compatible chess engine

Introduction

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.

Design Goals

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!)

Installing

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

How Strong is it?

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%

Status and Roadmap

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 .