Prophet

An Open Source Chess Engine by James Swafford


Last modified: 6/5/09 --- logo by Jim Ablett

About Prophet

Prophet is a chess playing program. Actually, it's a chess engine, meaning it's just a console (text) based program. It is not terribly strong as far as chess programs go, but if you're not a computer program and you're not titled it will probably give you a good thumping most of the time.

Playing a game with Prophet without using some sort of GUI would be pretty painful, so you'll want to get XBoard or Winboard by Tim Mann. I don't know if Prophet works with any other GUI, but in theory if it uses the Xboard/Winboard II protocol it should.

Technical Details

Prophet is written in C++, but is mostly C.

As far as the core algorithms go, Prophet is very conventional. The search is a classic depth first alpha-beta search with iterative deepening. It searches interesting lines deeper, and does some very conservative pruning to avoid wasting time searching stupid lines. A queiscense search is performed after the full width search.

I will try to elaborate more as time permits...

Credits/References

I'm pretty sure that every line of code is written by me, with the exception of the Random32() function in utils.cpp. Random32() came from Crafty, but I think before that it came from GNU Chess.

That said, most (all?) of the really good ideas in Prophet aren't mine. They are from so many different people that I'm not going to attempt to name them all. If you're reading this, you probably know most of them anyway. :) However, I do need to explicitly name a couple of sources.

First and foremost, Crafty. Like Crafty, Prophet is a (rotated) bitmap engine, though Prophet's implementation is my own.

Prophet has also been influenced by TSCP.

I have also looked over Arasan and Glaurung, both of which are very nice programs. I stole Glaurung's Makefile.

Download

You can download Prophet in binary and source form from the download page. If you find a bug, please let me know. If possible send the logfile as well.

Tournaments

Future Work

I'm working towards a 3.0 release. My guess is the release will be ready in 4Q 2009. Here's what needs to be accomplished:

  1. DTS is done --- in a simplified search. I'm still folding things like null search and LMR back into the iterative search.
  2. The single CPU version must be 100 ELO stronger than Prophet 2.0. I'm not sure how it compares now; I'm in the process of measuring this.
  3. LOTS of code cleanup to do.

Contact

I am sometimes online ICC logged in as Wizard-King or ProphetX. You can also reach me by email: james _at_ chessprogramming _dot_ org.