Surprise - A WinBoard Chess Engine
(Last update: 23-Jul-2006)
This page presents the WinBoard chess engine "Surprise".
It is a free, non-commercial, amateur engine playing chess - nothing
more. There is no warranty that it works as expected. Downloading
and installing it is at your own risk.
The playing strength of Surprise-4.2.7 is about 1900 (WBEC: 1910 after
edition 12). For version 4.2.8 there is no rating available yet.
There is still much room for improvements. Currently I am working on
attack table code and on using it for qsearch move ordering and also
for evaluation. The current version does not yet contain this
new code.
Also I will probably rewrite the positional evaluation some day because
I think that this part has a major influence on the playing strength
of "Surprise".
Furthermore, the introduction of IID, futility pruning and razoring is
on my "todo" list, also changing the basic search algorithm from FAB
(fail-soft alphabeta) to PVS.
Download the current version
Change log
Changes in 4.2.8 against 4.2.7:
Changes in 4.2.7 against 4.2.6:
- Fixed a bug reported by Leo some months ago that, under certain circumstances,
resulted in not sending a "result" string after end of game.
- Implemented simple "blind bishop" detection.
- Improved move ordering again.
- Several internal improvements and code restructuring with little impact on strength.
Changes in 4.2.6 against 4.2.5:
- Hopefully fixed another mate score hash bug
Changes in 4.2.5 against 4.2.4:
- Fixed a really horrible searcher bug: sometimes the engine played the best move from
the previous iteration although the final iteration had already found that another move
was better!
- Slightly improved branching factor by fixing a bug in hash collision detection code;
many Queen moves from hash table were classified as "not pseudolegal", causing a "false positive"
hash collision and therefore many unnecessary researches
- Slightly improved move ordering by considering attacks if the moving piece is a pawn
or knight and attacks a higher-value piece with this move
Changes in 4.2.4 against 4.2.3:
- Improved move ordering by introducing history heuristic and solving other ordering problems
- Fixed bug in hash table mate scoring which caused Surprise to show very artificial
scores and sometimes also to miss the shortest mate
- Slightly reduced code size (8%) by removing some debug-only code which was contained in the
release version by accident but was never called
Changes in 4.2.3 against 4.2.2:
- Hash key bugfixes concerning ep and castling! (but this did not help much ...)
- Skip some losing captures in qsearch now (still not using SEE)
- Slightly improved move ordering
- Avoid move generation on hash move cutoff now
- Added "pawn to 7th rank" extension at horizon nodes
- Book loading speedup (legality checking of book moves was too slow)
- A couple of internal code improvements
Changes in 4.2.2 against 4.2.1:
- Enabled existing nullmove implementation after fixing bugs, should work now!
- Several smaller changes and bugfixes in search and hashtable
Changes in 4.2.1 against 4.2:
- Small bugfixes in opening book
- Small bugfixes in searcher
Changes in 4.2 against 4.1.6:
- Faster compiler (the free MSVC++), speed improved about 30-40%
- Found and fixed many bugs in search, evaluation, position editing (but still no "setboard" implemented :-( )
- Reimplemented basic code pieces for detecting checks or illegal moves to get closer to "legal move generation";
now also little bit faster
- Cleaned opening book (there were many duplicate lines and some illegal moves, too)
- Added "resign=[on|off]" to possible ini file settings
- Implemented a way to tell the engine via opening book that it should avoid certain positions
(by just putting a '-' behind the move, thanks to Arturo Ochoa for your proposal!)
- Heavy internal restructuring
- Again some smaller speedups
Changes in 4.1.6 against 4.1.5:
- Several major bugfixes in evaluation! (Incredible how it could survive before ...)
Changes in 4.1.5 against 4.1.4:
- Bugfixes in hash table implementation (hash table usage was below 1% due to 32-/64-bit problems)
- Small bugfixes in search
- Improved evaluation (trading bonus, increased bonus for bishop pair)
- Some smaller speedups
- New book version, again provided by Arturo Ochoa
Recommended settings:
When playing against another engine on a
single-processor machine, you should set ponder=OFF in most cases (note
that pondering is not yet implemented in "Surprise").
Beginning with Surprise-4.1.3, a main hash table is used with an internal
default size of 64 MB. This value can be changed via config file "surprise.ini".
Endgame tablebases are not yet supported.
Unzip the archive to any directory you like.
Surprise looks for the opening book
in the current working directory from where you run the program.
Download older versions
Please note: older versions marked with (**) may have had some
time management problems, especially in incremental mode!
Source code
Up to now I did not decide whether the source code will be publicly available.
About the engine
- The current version runs on Windows only, but a Linux version is planned.
- The engine currently only supports WinBoard (xboard) as GUI.
Some people have reported that Surprise would run without problems
under UCI and Arena.
- The engine supports WinBoard protocol version 2, with few exceptions
(see below).
What's still missing:
- Pondering
- Using endgame tablebases
- Selective search extensions
- Polling for input while thinking; in particular the '?' command
("move now") does not work yet
- Commands "time"/"otim" not implemented
- "playother", "setboard", "hint", "bk", "analyze"
About the author and the engine's history
Sven Schüle, born on 11-Mar-1965, living in Berlin (Germany).
Studied computer science, now working as a freelancer in software
development projects. Playing chess in a club since 1981, current
national rating about 1870 ("DWZ"). First chess programming activities
started in 1986 together with my friend Frank Sek. Later on I wrote
some private chess programs on an Atari ST and then on a Win95 PC.
The first version of "Surprise" was created about 1991 on Atari.
Versions 3.x (still private, developed in 2000/2001) were the first
versions playing at least acceptable chess. After 3 years break,
I continued development in 2004.
Contact: Sven dot Schuele at gmx dot de