Skip to content

@MichaelB7 MichaelB7 released this Apr 13, 2019 · 346 commits to McCain since this release

This update has a MultiPV Bug Fix, minor updates and source cleanup.

A fairly significant MultiPV bug was introduced recently in SF. The SF Development team fixed it almost immediately when it was brought to our attention. Naturally , this update will have the latest patches committed since the X2a Release as well.

The MultiPV bug is discussed here:

and here:

(X2 pronounced "ten-two)
McCain, a UCI chess playing engine derived from Stockfish and Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung Author)
Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad (Stockfish Authors)
Copyright (C) 2015-2019 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad (Stockfish Authors)
Copyright (C) 2017-2019 Michael Byrne, Marco Costalba, Joona Kiiski, Gary Linscott, Stéphane Nicolet, Tord Romstad (McCain Authors)

McCain is based on the strongest engine in the world, Stockfish.

This version has bug fixes for the triple opening book usage, a new UCI option called DC Slider ( Dynamic Contempt Slider) . the default setting of 65 represents an increase of 6.5% in the dynamic contemplation calculation. Another new option for the casual user called Jekyll & Hyde, as the name suggests, using the Jekyll & Hyde setting ( must be used with the variety option set to 1 or higher) , will cause McCain to play with a very undecided nature of his attack - sometimes striking aggressive , at other times vert mild and non aggressive. It's here strictly for the entertain value as it obviously weakens McCain considerably, making it much more enjoyable for human play. The matefinder code in McCain was eliminated as I was dissatisfied with it and came to realize that Joe Ellis' matefinder works just about perfect anyway. On my Github remote, you can find a branch for mate_finder ( Joe Ellis' code) , that has been updated for current development Stockfish

One source - and you build 2 different flavors of stockfish - current-dev-stockfish and McCain.You also build the current-dev Stockfish with all the features that McCain has.
Note: Only McCain will be distributed , the other flavors are for those who are able to build it themselves - but feel free to share with others - if you do share, please provide above link to GitHub as that is the only legal way to share your hand-built built exe's with others

NOTE - if you pull McCain from Github, please go to the McCain branch , the master branch is in sync with current-dev Stockfish.

The user experience changes :

Opening Book cleanup - now accepts 3 polyglot books :
Opening book 1 - could be GM or opening - generally a very specific book
Opening book 2 - wider book, would kick in once opening book 1 is"out of book"
Opening book 3 - wider book, would kick in once opening book 2 is"out of book"
The source provided enables one to build quickly 2 different engines:

McCain-X2: includes all of current-dev Stockfish with added functional modifications and features

makefile options:
The version and features - are controlled by commenting in and out the 3 lines in ( toggle is on uncommented and off with the pound signs).
Uncomment the line below for McCain, comment in (add pound sign) for Stockfish
Only McCain with added feature will be publicly distributed , although feel free to play with other versions privately
features include : Cerebellum book functionality, play by Elo (UCI limit strength), keyboard shortcuts and a few other items
(Pound Signs)

I have tried to source and provide credit for all changes different from from current-development Stockfish through the use of ifdef's for Maverick and Features and the source of the changes attributed to the original author as I best as I was able to detect from Github. In addition all of the other added features , cerebellum book ( code and book file by Thomas Zipproth), Play by ELO and keyboard shortcuts are also identified with ifdef's. With the exe's , you will find some Windows version complied by Lucas Monge and Dann Corbit, As soon as as John Stanback sends me his, I will update.

Also, a note of great appreciation to all of those who contribute to Stockfish:

List of authors for Stockfish, last updated as of 03/06/2019, from Github/Official-Stockfish

Tord Romstad (romstad)
Marco Costalba (mcostalba)
Joona Kiiski (zamar)
Gary Linscott (glinscott)

Aditya (absimaldata)
Adrian Petrescu (apetresc)
Ajith Chandy Jose (ajithcj)
Alain Savard (Rocky640)
Alexander Kure
Ali AlZhrani (Cooffe)
Andrew Grant (AndyGrant)
Andrey Neporada (nepal)
Andy Duplain
Aram Tumanian (atumanian)
Arjun Temurnikar
Auguste Pop
Balint Pfliegel
Ben Koshy (BKSpurgeon)
Bill Henry (VoyagerOne)
Bojun Guo (noobpwnftw)
Brian Sheppard (SapphireBrand)
Bryan Cross (crossbr)
Chris Cain (ceebo)
Dan Schmidt
Daniel Dugovic (ddugovic)
Dariusz Orzechowski
David Zar
Daylen Yang (daylen)
Eelco de Groot
Elvin Liu (solarlight2)
Ernesto Gatti
Fabian Beuke (madnight)
Fabian Fichter (ianfab)
Fauzi Akram Dabat (FauziAkram)
Felix Wittmann
Gian-Carlo Pascutto (gcp)
Gontran Lemaire (gonlem)
Goodkov Vasiliy Aleksandrovich (goodkov)
Gregor Cramer
Günther Demetz (pb00067, pb00068)
Guy Vreuls (gvreuls)
Henri Wiechers
Hiraoka Takuya (HiraokaTakuya)
Hongzhi Cheng
Ivan Ivec (IIvec)
Jacques B. (Timshel)
Jan Ondruš (hxim)
Jared Kish (Kurtbusch)
Jarrod Torriero (DU-jdto)
Jean-Francois Romang (jromang)
Jerry Donald Watson (jerrydonaldwatson)
Jonathan Calovski (Mysseno)
Jonathan D. (SFisGOD)
Joost VandeVondele (vondele)
Jörg Oster (joergoster)
Joseph Ellis (jhellis3)
Joseph R. Prostko
Justin Blanchard
Kelly Wilson
Ken Takusagawa
Kiran Panditrao (Krgp)
Leonardo Ljubičić (ICCF World Champion)
Leonid Pechenik (lp--)
Linus Arver
Lub van den Berg (ElbertoOne)
Luca Brivio (lucabrivio)
Lucas Braesch (lucasart)
Lyudmil Antonov (lantonov)
Matthew Lai (matthewlai)
Matthew Sullivan
Mark Tenzer (31m059)
Michael Byrne (MichaelB7)
Michael Stembera (mstembera)
Michael Chaly (Vizvezdenec)
Michel Van den Bergh (vdbergh)
Miguel Lahoz (miguel-l)
Mikael Bäckman (mbootsector)
Michael Whiteley (protonspring)
Miroslav Fontán (Hexik)
Moez Jellouli (MJZ1977)
Mohammed Li (tthsqe12)
Nathan Rugg (nmrugg)
Nicklas Persson (NicklasPersson)
Niklas Fiekas (niklasf)
Ondrej Mosnáček (WOnder93)
Oskar Werkelin Ahlin
Pablo Vazquez
Pascal Romaret
Pasquale Pigazzini (ppigazzini)
Patrick Jansen (mibere)
Peter Zsifkovits (CoffeeOne)
Ralph Stößer (Ralph Stoesser)
Raminder Singh
Reuven Peleg
Richard Lloyd
Rodrigo Exterckötter Tjäder
Ron Britvich (Britvich)
Ronald de Man (syzygy1)
Ryan Schmitt
Ryan Takker
Sebastian Buchwald (UniQP)
Sergei Antonov (saproj)
Steinar Gunderson (sesse)
Stefan Geschwentner (locutus2)
Stefano Cardanobile (Stefano80)
Stéphane Nicolet (snicolet)
Tom Vijlbrief (tomtor)
Torsten Franz (torfranz)
Uri Blass (uriblass)
Vince Negri

McCain-X2 is an alternative chess engines for the chess connoisseur who appreciates using top chess engines for analysis or too et Stockfish to weaker level for more casual play. It is based on current -dev Stockfish (10+ 3-31-2019)), hence it will play mostly like Stockfish v10+ most of the time. There are certain positions that McCain will provide analysis that is often overlooked by other engines.

McCain also works with the Cerebellum book by Thomas Zipproth (Brainfish Author - . It also includes the standard McCain UCI options, including Limit Strength (Elo) (use Threads set to 1!) , Brute Force , No Null, Fast Play, Tactical and variety play. All of the keyboard shortcut commands, remain, eliminating the need to always perform the UCI setoption name value command from the keyboard as long as the option name does not contain spaces. As mentioned previously, it accepts 3 polyglot books and will follow the moves of the books in sequential order - play book1 first - once "out of book", twill play from book 2, then book 3 once book 2 is out of book. McCain-X2 supports 7 man syzygy endgame tablebase

Some shortcut commands:

b   = bench
g   = go
i   = infinite
p f = position fen
sd  = search depth
sm = searchmoves
q   = quit
?   = stop ( to stop  A search)
new option set or s = set, see example below

set threads xx = setoption name threads value xx
set hash xxx = setoption name hash value xx
g d 5  = go depth 5
g i = go infinite
g movetime 10000 sm g1f3 - searches only move g1f3 for 10 seconds 

Please note that ALL of the strength and usability of McCain is due to the Stockfish team. The Stockfish team is amazing and they work very hard and are very creative in keeping Stockfish the number 1 engine in the world and all their work is done pro bono for you. So if you have extra CPU cycles sitting around the home or business , please consider donating your spare CPU time: It is very easy , you can be on any type of OS, Windows/macOS/Linux and they have scripts that will run the process for you behind the scenes, once setup, simply logon to fishtest and leave your computer on.

McCain will be competitive with any engine at time control of 60 seconds and 2 seconds increment or longer. But the main focus of McCain is for deep analysis in long games, such as those played in correspondence games.

Future releases will be in alignment with the official Stockfish releases generally, however this will be subject to ELO gains or features added by the SF team as determine by me.

McCain has been adopted for DGT-Pi electronic chessboard. Please reach out to Al "Scally" Cooper for more information ( . The setting files that Al distributes have numerous fun and weaker engine settings to play against. Al frequently posts on this site if you want to reach out to him:!forum/picochess

Finally, a very huge thank you and note of appreciation to Lucas Monge ( , John Stanback ( and Dann Corbit ( for their work in compiling the different flavors of exe's presented below for Windows and Linux Operating Systems. Hopefully, you find one that works for you.

Note - additional flavors will be posted when received.

Assets 4
You can’t perform that action at this time.