Prophet

A Chess Engine by James Swafford


Last modified: 11/3/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 an older (non-parallel) version of 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. I'm not sure if I'll ever publish another release. At this point I'm inclined to keep future versions private.

Tournaments

Future Work

I've been pretty inactive for a while, but when (and if) I do get moving again the next task would be to finish the DTS implementation. It's actually about done in a simplified search, but I need to fold some things like null search and LMR back into the iterative search routine.

Following that, there are a million directions I could go in. I would be interested in doing a distributed search or a table base generator, but if Prophet's ever to be competitive I'll need to focus on the evaluation function for a while.

Contact

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