-
Notifications
You must be signed in to change notification settings - Fork 44
Home
Multi Variant Stockfish is a fork of Official Stockfish specialized to play chess and some chess variants:
- Crazyhouse
- Atomic
- Horde
- King of the Hill
- Racing Kings
- Giveaway
- Three-Check
- Chess960 (played natively by Official Stockfish)
- Losers (wild17 on ICC)
- Extinction
- Grid
- Two kings (wild9 on ICC)
Multi Variant Stockfish is currently used in these lichess.org projects:
- lichess.org custom Stockfish: as engine used to play against the users on lichess.org
- fishnet: distributed Stockfish analysis for lichess.org: as engine running on contributed remote servers for games analysis on lichess.org
- PNaCl Stockfish: as engine running in Chrome browser for your personal games analysis
If you are interested to play only Chess and/or Chess960, or to play Chess and/or Chess960 at maximum strength level possible, simply use Official Stockfish. Multi Variant Stockfish, even though using the same code base for Chess and Chess960, is a bit slower.
If you are interested to play with Multi Variant Stockfish, compile yourself a binary following Building Multi Variant Stockfish or download, according your OS and CPU architecture, the latest development snapshot build:
Operating System | Status | profile-build |
---|---|---|
Linux | x86_64, x86_64-modern, x86_64-bmi2 | |
OS X | x86_64 | |
Windows | x86_64, x86_64-modern, x86_64-bmi2 |
The project has the goal to develop and to improve the playing strength of some chess variants not already played natively by Stockfish.
Each patch, with a new idea or an improvement for a variant, is tested with Multi Variant Fishtest, in order to merge only code statistically proved to improve the variant playing strength.
Once at month the maintainers will merge the Official Stockfish new patches to keep up to date also the playing strength for Chess and Chess960, and will start, for each variant, a regression test:
- to measure the improvement of the playing strength of the variant: usually the improvement is due to the patches tested with Multi Variant Fishtest, though also the upstream patches could give some improvement from time to time.
- to spot up some upstream patches that could be a big regression for the variant.
The only new parameter is UCI_Variant
. Here is an example (type uci
for a list of all parameters):
$ ./stockfish
Stockfish 2018-03-10 64 BMI2 Multi-Variant by D. Dugovic, F. Fichter et al.
setoption name UCI_Variant value crazyhouse
info string variant crazyhouse startpos rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[] w KQkq - 0 1
position startpos
go depth 1
info depth 1 seldepth 1 multipv 1 score cp 194 nodes 20 nps 10000 tbhits 0 time 2 pv e2e3
bestmove e2e3
A Python consumer can be found at https://github.com/rpdelaney/python-chess-annotator .
UCI-compatible GUIs which implement the UCI_Variant option can be found at:
- CuteChess: https://github.com/cutechess/cutechess/releases
- PyChess: https://github.com/pychess/pychess/releases
- WinBoard: http://hgm.nubati.net/WinBoard-AA.zip or http://open-aurec.com/wbforum/viewtopic.php?f=19&t=53680 or source
Multi Variant Fishtest, a fork of Fishtest, is a distributed tasks queue for testing new ideas and improvements for multi variant chess engines through self playing. The main instance for Multi Variant Stockfish is:
http://35.161.250.236:6543/tests
Developers submit patches with new ideas and improvements, CPU contributors install a fishtest worker on their computers to play some chess games in the background to help the developers testing the patches.
The fishtest worker:
- automatically connects to the server to download: a chess opening book, the cutechess-cli chess game manager and the chess engine sources (for the current master and for the patch with the new idea) that will be compiled according to the type of worker platform.
- starts a batch of games using cutechess-cli.
- uploads the games results on the server.
The fishtest server:
- provides several test templates to generate tests for the patches.
- manages the queue of the tests according customizable priorities.
- computes statistics from the game results sent by the workers.
- updates and publishes the results of ongoing tests.
- stops tests when they are statistically significant and publishes the final tests results.
If you are a developer, fork Multi Variant Stockfish and contribute some patches for some variants, following the instructions in Creating my first test to submit tests. You can also contribute to improve Multi Variant Fishtest, to test a patch locally on your computer simply follow Installing a development multi variant fishtest server on Ubuntu.
Even if you don't know programming yet, you can help the Multi Variant Stockfish developers to improve the chess engine by connecting your computer to the Multi Variant Fishtest following these instructions: