main -> Ghost 3 Beta
Ghost 3 is still in Beta. This is just a temporary page to provide some information on the status.
2016-10-15: New Beta version is released containing important bugfixes.
What has changed between Ghost 2 and Ghost 3?
The search has been rewritten from scratch to support parallelism. There are some other improvements, but the new search is definitely the most important change.
Technically, it uses work stealing provided by the Threading Building Blocks library. From the algorithmic side, it is currently a rather minimal search. Like Ghost 2, it still uses MTD(f).
For the first time, I experimented with Singular Extensions (SE), which was definitely a huge win for Ghost. Although, I try to keep the engine as original as possible, my current SE implementation is inspired by ideas popularized by Stockfish. Kudos to the Stockfish team, it is a great engine!
Status: What still needs to be done before the first stable release?
Before I will release Ghost 3 officially, I would like to address at least these issues:
But even this incomplete stage, Ghost 3 should be a stronger engine
than Ghost 2. So, let the Beta begin. :-)
That is the most important open issue.
If you let it play many games, you will notice that it sometimes just crashes. That definitely needs to be improved.
- Windows support:
That was a major issue for a long time, as Visual Studio lacks behind in C++14 support. Only recently, I was able to port it to Windows using MinGW and GCC.
Ghost 2 was ported to Windows using Cygwin, but Ghost 3 uses Threading Building Blocks, which is not supported. Finally, I was able to compile it with MinGW.
For those having the same problem, I can recommend the rather unknown new project called mysys2. It provides a MinGW like environment in combination with the nice pacman package manager from Arch Linux.
I have not tested 32-bit support but I assume that it will work as well.
- Missing protocol support
For instance, Ghost will just use all CPUs on the machine.
I have not yet implemented the parts of the WinBoard/XBoard protocol that deal with
For 64-bit Windows, you can download Ghost 3 here. If you are interested in a 32-bit version or a Linux binary, please let me know.
Install guide (64-bit version):
- Unzip the downloaded archive. All files should to be unpacked in the same folder:
Ghost Bitbases (king+pawn vs king+pawn)
Ghost Bitbases (king+pawn+pawn vs king+pawn
with one pawn ram)
- Overview of the .dll dependencies:
- libstdc++-6.dll: C++ standard library
- libboost_system-mt.dll, libboost_thread-mt.dll: Boost libraries
- tbb.dll: Threading Building Blocks (for the parallel search)
- libgcc_s_seh-1.dll, libwinpthread-1.dll: MinGW dependencies
- It is recommended to use a graphical user interface, for instance:
- Increase the transposition table
- Check whether the bitbases files (kp_kp.gbb and kpp_kp_ram.gbb)
are in the same directory as the executable
As Ghost 3 is not a stable release, there are still issues
with random crashes.
- The 64-bit binary assumes that your CPU supports the POPCNT instruction.
Older CPUs (2010 or earlier) are currently not supported, but if there
is interest, I could build an alternative version. Same goes for 32-bit
support, which I have not thoroughly tested under MinGW.
- mailto: philipp.classen [at] gmx.net
- or: michael.classen [at] gmx.net
authors: Michael Claßen, Philipp Claßen
Last modified: Tue Sep 15 00:16:30 CET 2016