Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Liground supporting Musketeer Chess #221

Open
musketeerchess opened this issue Jun 21, 2021 · 3 comments
Open

Liground supporting Musketeer Chess #221

musketeerchess opened this issue Jun 21, 2021 · 3 comments
Labels
enhancement New feature or request

Comments

@musketeerchess
Copy link

Hi
Musketeer Chess is a chess variant played on an 8x8 classic chess board with a classic chess set. Only difference is: Two additional pieces are added (pieces can be atypical pieces or classic pieces). These pieces are chosen as follows: first white choses the first piece type, then it's blacks turn to chose the second piece type. Initially when the variant was created, black couldn't chose the same piece type white has chosen (it was to bring more diversity to the game and make the players rapidly confortable with different piece types). Now the variant evolved and it's possible to chose the same piece type.

After the additonal pieces are chosen (Piece Selection Phase) it's time for each side to select the squares where the additional pieces will enter the playing stage. This phase is called Gate Selection. In fact, the additional pieces are introduced by a drop mechanism once one of the pieces on first Rank (or 8th Rank for Black) moves for the first time. The additional piece is then dropped at the same time, making it a double piece move like castlling involving two pieces. For example, we want the piece to enter at c1 square. So when the Bishop in c1 square moves for the first time for example from c1 to g5, the additional piece is dropped in the c1 square and it then joins the fight. Both sides will alternate chosing the drop squares for their pieces. It's forbidden to Gate Select behind King and Rook at the same time preventing from dropping both pieces at the same time when castling.

Further explainations at https://musketeerchess.net/home/index.html or https://github.com/fsmosca/musketeer-chess

@QueensGambit
Copy link
Collaborator

QueensGambit commented Jun 22, 2021

Hello @musketeerchess ,

LiGround internally uses ffish.js for move generation which is built using Fairy-Stockfish.

I noticed that there is a new PR which aims to add Musketeer Chess to Fairy-Stockfish.

After the PR was merged, it will be available in ffish.js, too.

Implementing the setup phase of Musketeer Chess requires a bit of work.

Is there a standardized way of describing the setup phase in PGN format?
I found an example in the Musketeer Chess forum where the header has already been set.

[Event "?"]
[Site "?"]
[Date "2021.02.03"]
[Round "-"]
[White "-"]
[Black "-"]
[Result "*"]
[Variant "musketeer"]
[VariantFamily "seirawan"]
[VariantMen "E:KDA;C:llNrrNDK;A:NB;F:B3DfNbN;M:NR;H:DHAG;S:B2DN;U:CN;D:QN;L:NB2;K:KisO2"]
[FEN "*c*l****/rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/**C**L** w KQkq - 0 1"]
[SetUp "1"]

{--------------
. c . l . . . .
r n b q k b n r
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R N B Q K B N R
. . C . . L . .
white to play
--------------}
*

@alexobviously
Copy link

alexobviously commented Jun 22, 2021

Is there a standardized way of describing the setup phase in PGN format?

I have implemented the Musketeer variant for fairy-stockfish and pychess-variants, and the approach I went for was not considering the setup phase to be part of the game, but rather having a variable starting position for games (i.e. where the committed pieces are already set). I don't think this is exactly ideal, but implementing the setup phase in fairy would have required serious refactoring since nothing like that exists at the moment, and most likely it would not have been approved. Instead, all of the setup is handled in pychess, and a starting FEN is just passed to fairy. Since you're using ffish.js, I guess if you were to add this variant to liground you'd have to take sort of the same approach.

@QueensGambit QueensGambit added the enhancement New feature or request label Jun 22, 2021
@QueensGambit
Copy link
Collaborator

QueensGambit commented Jun 22, 2021

Thank you @alexobviously for elaborating this.
I assumed it would be handled this way in Fairy-Stockfish.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants