fairy-stockfish / Fairy-Stockfish

chess variant engine supporting Xiangqi, Shogi, Janggi, Makruk, S-Chess, Crazyhouse, Bughouse, and many more
https://fairy-stockfish.github.io/
GNU General Public License v3.0
627 stars 197 forks source link

Does FairyStockFish support Gomoku, GO game and Jeiqi ? #325

Closed HyVong007 closed 3 years ago

HyVong007 commented 3 years ago

I have read all your git README and your Wiki but not found if these are supported by Fairy Stockfish ?!. Sorry if i didnot read so carefully.

Additional question: for Gomoku and GO game, what is the maximum board size ? can i have board size larger than 19x19 (GO game) ? I wish board size 32x32 for Gomoku or GO game because it will be more fun !

ianfab commented 3 years ago

Thanks for your suggestions. Unfortunately, currently board size is limited to 12x10, since Fairy-Stockfish uses a 128 bit representation for the board, also see https://github.com/ianfab/Fairy-Stockfish/issues/38. Therefore, full size Go or Gomoku are unlikely to be supported, only 9x9 Go might be feasible.

Regarding Jeiqi, to my understanding it is an incomplete information game, which makes it very different in terms of the representation of the game state. Fairy-Stockfish is designed for two player perfect information games, so Jeiqi unfortunately seems out of scope as well.

HyVong007 commented 3 years ago

Thanks for your suggestions. Unfortunately, currently board size is limited to 12x10, since Fairy-Stockfish uses a 128 bit representation for the board, also see #38. Therefore, full size Go or Gomoku are unlikely to be supported, only 9x9 Go might be feasible.

Regarding Jeiqi, to my understanding it is an incomplete information game, which makes it very different in terms of the representation of the game state. Fairy-Stockfish is designed for two player perfect information games, so Jeiqi unfortunately seems out of scope as well.

Yeah, first i feel apologised because i cannot find "Gomoku" and "GO" in your wiki. And, because Jeiqui have the hidden state (players will never know what the hidden piece is), when a player move the hidden piece then the piece will become visible. It may be hard for Fairy Stockfish. But, i think GO game is one of the most famous favorite chess. I love GO and Gomoku so much ! You should make the standard board 19x19 of GO game in the future. And board 19x19 for Gomoku too (because Gomoku and GO are almost the same). 9x9 board of Gomoku is too small. Thank for your reading. You can close this issues whenever you want !

HyVong007 commented 3 years ago

Thanks for your suggestions. Unfortunately, currently board size is limited to 12x10, since Fairy-Stockfish uses a 128 bit representation for the board, also see #38. Therefore, full size Go or Gomoku are unlikely to be supported, only 9x9 Go might be feasible.

Regarding Jeiqi, to my understanding it is an incomplete information game, which makes it very different in terms of the representation of the game state. Fairy-Stockfish is designed for two player perfect information games, so Jeiqi unfortunately seems out of scope as well.

It's hard to explain to you what Jeiqi is. For short, i find a good documentation here: https://www.clubxiangqi.com/uprules.php

( Remember to read 2 small sites inside: https://www.clubxiangqi.com/rules.php#AdvancedRule

https://www.clubxiangqi.com/rules.php#AutomaticDrawingRule )

And moreover, you can play jeiqi online on that website ! Help you will understand jeiqi - a very favorite variant of Chinese Chess.

mtaktikos commented 3 years ago

For a 9x9 Gomoku, simply add this lines to the variants.ini: [9x9gomoku:tictactoe] maxRank=9 maxFile=9 startFen = 9/9/9/9/9/9/9/9/9[PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPppppppppppppppppppppppppppppppppppppppppp] w - - 0 1 connectN=5

For larger boards, recommended is the Stockfish-based Embryo20, which is the best existing Gomoku/Renju engine and can be downloaded here: https://github.com/Gomocup/GomocupDownload/tree/master/2020

In Go, even if we can overcome the 12x10-limitation of Fairy-SF, the state space of the game is too large for an AB-engine, here MCTS/UCT-engines do much better. Even one-threaded MCTS-algorithms like that in the game system Ludii (https://ludii.games/details.php?keyword=Go) play 19x19-Go better than the strongest AB-engines.

About Jeiqi: as Fabian Fichter wrote, an AB-algorithm cannot handle non-deterministic games. Here, the MCTS/UCT-algorithm (and its variants) is not only the better, but the only possible tool. Again, I link to Ludii and its existing script banqi.lud for the game Banqi (https://ludii.games/details.php?keyword=Banqi). Banqi looks very similar like Jeiqi, but is played on a smaller board. Probably you need to write only some small changes to adapt it to play Jeiqi

ianfab commented 3 years ago

To make it easier to find out if a variant can be considered, I added a short section in the wiki to cover this topic: https://github.com/ianfab/Fairy-Stockfish/wiki/FAQ#can-the-gamevariant-xyz-be-supported. Thanks for pointing out this documentation gap.

HyVong007 commented 3 years ago

To make it easier to find out if a variant can be considered, I added a short section in the wiki to cover this topic: https://github.com/ianfab/Fairy-Stockfish/wiki/FAQ#can-the-gamevariant-xyz-be-supported. Thanks for pointing out this documentation gap.

Ok thank you so much ! I am developing a Unity3D game using C#, this game will contain: Chinese Chess (normal), Jeiqi, Gomoku (with board size from small to large), GO (small to large). And moreover, my game will contain Card games ( https://en.wikipedia.org/wiki/Card_game ). Thank you very much for suggesting some useful engines !

ianfab commented 3 years ago

Great. Since for now the questions seem clarified, I will close this. If new questions come up, of course feel free to reopen it or open a new issue.