
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.
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...
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.
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.
Prophet 2.0+ participated in The 2008 Second Annual ACCA World Computer Rapid Chess Championships, June 21-22 2008, finishing 29/36 with 6/14. Click here to see my summary.
Prophet 2.0+ participated in CCT10, Jan. 26-27 2008, finishing 32/36 with 1.5/7. Prophet suffered from a compiler bug, which I'll summarize here.
Prophet 2.0+ participated in The 2007 Second Annual ACCA Americas' Computer Chess Championships, Oct. 27-28 2007, finishing 13/16 with 3/6.
Prophet 2.0 participated in CCT9, Feb. 17-18 2007, finishing 33/52 with 3/7, and 23/37 with 4/9 in the blitz tournament. Click here to see my summary.
Prophet 2.0.epsilon.1 participated in The 2006 First Annual ACCA Americas' Computer Chess Championships, Oct. 28-29 2006, finishing 7/16 with 3/5. Click here to see my summary.
Prophet 2.0.delta.1 participated in The 2006 First Annual ACCA Presidents Tournament, Aug. 12-13 2006, finishing 16/18 with 2/6.
Prophet 1.0 participated in CCT8, Feb. 2006, finishing 31/38 with 3.5/9.
Prophet 0.something participated in CCT7, Feb. 2005, finishing 40/44 with 2.5/9.
It's been a while since I've released anything. That's mainly because I don't have a lot of time to spend on Prophet, and what I'm working on requires a lot of time!
My main focus right now is on implementing Dynamic Tree Splitting (DTS). I believe that as we start to see computers with more and more cores per die, the flexibility DTS offers over YBW (in terms of split point selection) will translate into a more efficient parallel search. Whether that is true, and if so if it's worth the added complexity reamins to be seen.
Secondly, I've developed a somewhat structured testing scheme, which I hope to use to improve the evaluation function.
Looking ahead, I am also very interested in applying machine learning techniques to improve the opening book, the evaluation, and perhaps even the search. I have started a simple tablebase generator (so far only KQK), so I'd like to continue with that. A distributed (message passing) setup would also be a lot of fun.
My guess is that it will be late 2008 before 3.0 is ready. I don't plan on releasing any minor updates between now and then.
I am sometimes online ICC logged in as Wizard-King or ProphetX. You can also reach me by email: james _at_ chessprogramming _dot_ org.