Closed ulliit closed 1 year ago
Hi, if I understood the rules correctly, the only rule that can not be configured as of now would be the pawn triple steps. The board size, new piece type, castling rules, extended region for pawn double steps, etc., can all be configured via the variants.ini file, see e.g. https://github.com/ianfab/Fairy-Stockfish/wiki/Variant-configuration.
Thanks, I kind of thought that a configuration without source code modification indeed might be possible. However, this triple step is probably essential, otherwise the game would be too slow. Ok, I'll take a look at .ini and source.
If you are interested in trying it yourself, hacking together pawn triple steps in the code should be relatively straightforward, introducing a bitboard b3
analogous to the double steps (b2
) in https://github.com/ianfab/Fairy-Stockfish/blob/7231c780cc86325636ab01765b33fe3a3cdaf94a/src/movegen.cpp#L126-L159 but the generalized en passant handling would be somewhat problematic. I am hesitant to implement more extensions to pawn movements, because I would be in favor of a more general solution, also see the related #305.
May be we can talk on lichess? I left a message for you.
Hi Fabian,
thanks for implementing the pawn move. However, I think there's a bug that prevents the engine from accepting variants with more than 8 ranks/files. Neither my custom definition did work then nor the predefined variants Wildebeest and Indiangreat.
I tried a minimum configuration using the 5x6chess definition as a bedrock and placed it at the top of the variants.ini. The following works:
[10x10chess:gardner] customPiece1 = e:CZ maxRank = 6 maxFile = e promotionRegionWhite = 6 promotionRegionBlack = 1 startFen = 5/2k1K/5/5/5/3e1 w - - 0 1
... :~/sf_fairy_faf18f3/src$ ./stockfish Fairy-Stockfish 290323 by Fabian Fichter uci id name Fairy-Stockfish 290323 ... uciok setoption name VariantPath value variants.ini Variant template 'xiangqi' does not exist. Variant template 'janggi' does not exist. Variant template 'janus' does not exist. Variant template 'grand' does not exist. Variant template 'capablanca' does not exist. setoption name UCI_Variant value 10x10chess info string variant 10x10chess files 5 ranks 6 pocket 0 template fairy startpos 5/2k1K/5/5/5/3e1 w - - 0 1 position startpos move e5e6 go movetime 1000 info string classical evaluation enabled info depth 1 seldepth 1 multipv 1 score mate 1 nodes 11 nps 11000 tbhits 0 time 1 pv d1b4 ... bestmove d1b4
Defining the custom piece as a combination of the Betza pieces Camel and Zebra seems to work. The engine plays d1b4# as the correct move here.
A version with maxRank = 8, maxFile = h works as well. The following doesn't work:
[10x10chess:gardner] customPiece1 = e:CZ maxRank = 9 maxFile = i promotionRegionWhite = 9 promotionRegionBlack = 1 startFen = 9/9/9/9/6k1K/9/9/9/7e1 w - - 0 1
... :~/sf_fairy_faf18f3/src$ ./stockfish Fairy-Stockfish 290323 by Fabian Fichter uci id name Fairy-Stockfish 290323 ... uciok setoption name VariantPath value variants.ini Variant template 'xiangqi' does not exist. Variant template 'janggi' does not exist. Variant template 'janus' does not exist. Variant template 'grand' does not exist. Variant template 'capablanca' does not exist. setoption name UCI_Variant value 10x10chess position startpos move i5i6 go movetime 1000 ... info depth 17 seldepth 25 multipv 1 score cp 53 nodes 749488 nps 747992 hashfull 436 tbhits 0 time 1002 pv e2e4 d7d5 e4d5 c7c6 d2d4 c6d5 g1f3 g8f6 f1d3 e7e6 c2c3 b8c6 f3e5 f8d6 e1g1 d6e5 d4e5 bestmove e2e4 ponder d7d5
The engine throws no info string here after setting the variant and plays classical chess afterwards.
Wildebeest:
:~/sf_fairy_faf18f3/src$ ./stockfish Fairy-Stockfish 290323 by Fabian Fichter uci ... uciok setoption name VariantPath value variants.ini Variant template 'xiangqi' does not exist. Variant template 'janggi' does not exist. Variant template 'janus' does not exist. Variant template 'grand' does not exist. Variant template 'capablanca' does not exist. setoption name UCI_Variant value wildebeest position startpos move e2e5 go movetime 1000 ... info depth 17 seldepth 25 multipv 1 score cp 53 nodes 749488 nps 748739 hashfull 436 tbhits 0 time 1001 pv e2e4 d7d5 e4d5 c7c6 d2d4 c6d5 g1f3 g8f6 f1d3 e7e6 c2c3 b8c6 f3e5 f8d6 e1g1 d6e5 d4e5 bestmove e2e4 ponder d7d5
Grüße, Ulrich
Hi, this likely means you are using the non-largeboard version. Please make sure to download or compile a binary with largeboard support.
Hi,
I tried to figure out a "true" 10x10 chess version, and I think the result is quite promising. Would it be possible to implement it?
https://chessxp.com/docs/rules.html
The adjustments would only include a "big knight" as an additional piece and faster pawns.
Ulli