Protector is a Bitboard-based chess program that communicates with a chess GUI via the UCI protocol from Stefan Meyer-Kahlen.
In short
it's kinda Bitboard-based TogaII with many small improvements. Take a look at the code for more details.
### SUPPORTED PLATFORMS
Currently Protector can be compiled and run on the following platforms:
- Windows XP 32-bit. Use Microsoft Visual Studio 2005. Protector should also run on Windows 2000 and Vista 32-bit but I haven't tested this.
- Windows Vista 64-bit. Use Microsoft Visual Studio 2005 with the 64-bit libraries. Protector should also run on XP 64-bit systems, but I haven't tested this.
- Ubuntu Linux 32-bit and 64-bit. Use ICC and the Makefile in the 'linux' folder. Install ICC 11.0, copy 'Makefile', 'depend' and 'tools.h' to the main folder and type 'make'. Protector should also run on other Linux distributions, but I haven't tested this.
Please note: For tests Protector should have access to at least 4-men Nalimov tablebases (better: 5-men), since it doesn't contain specialized code for primitive endgames.
### FUTURE WORK
It would be great if you support the further development of Protector in one of the following areas. I recommend to contact me via '
Raimund_Heid@yahoo.com' in advance.
- Speed optimization. I haven't speed-optimized Protector for a long time and I assume that it can be accelerated 10-20% by refactoring, an example being the usage of compiler intrinsics under Linux. Use the automated tests (assertions in debug mode) for refactoring.
- Evaluation. Of course this is an endless story. Protector currently is weak in estimating the value of rooks vs. knights and bishops in endgames. I assume that connected pawns need to be examined in order to assess this value more adequate. Another important weakness is 'king position in endgames' (distant passers, proximity to remaining pawn islands, king invasion).
- Parallel search. Currently Protector uses the shared hashtable approach for parallel search. The speedup with more than 2 processors is poor. Some more sophisticated SMP algorithm like YBW should do a much better job.
- Parallel search under Linux. Not much to be done. All that's needed is an exclusive access to the hashtable library since it doesn't seem to be thread-safe; see 'search.c'.
- GCC support. Not a big thing either, I suppose. ICC 11.0 (Intel C++ Compiler) compiles Protector without warnings. However GCC complains about the inline functions in the header files and wants to have them in the module files. I guess that a compiler switch can solve this, but I haven't found it yet.
- Mac support. I haven't compiled Protector on a Mac yet since I don't own one. I assume that it takes a couple of hours to get Protector compiling and running on a Mac, some support from you would be great!
### CREDITS
Protector is based on many great ideas from the following people: Fabien Letouzey (pvnodes, blending of opening and endgame values), Thomas Gaksch (pvnode extensions, extended futility pruning, space attack eval), Robert Hyatt (consistent hashtable entries), Eugene Nalimov (tablebases), Stefan Meyer-Kahlen (UCI), Gerd Isenberg (magic bitboards), Mike Donnig (testing), Vincent van Diepeveen (for reminding me to respect the value of someone else's work). Without their contributions Protector would not be what it is. Thank you so much.