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

Musketeer Chess #506

Closed
Nordlandia opened this issue Mar 10, 2018 · 22 comments
Closed

Musketeer Chess #506

Nordlandia opened this issue Mar 10, 2018 · 22 comments

Comments

@Nordlandia
Copy link

As per link, just wanted to make you guys aware of this.

https://groups.google.com/forum/#!topic/fishcooking/ExQyPxKxlHs

@ddugovic
Copy link
Owner

Thanks for the information. Does this game have rules @Nordlandia ? If not I may have to close this issue.

@musketeerchess
Copy link

www.musketeerchess.net for the rules. Game based on chess with special rules adding 2 new fairy pieces. Helps to get rid of the opening theory, spices the game with much more tactics and strategy

@Nordlandia
Copy link
Author

This?

http://musketeerchess.net/games/musketeer/rules/rules-short.php

@musketeerchess
Copy link

musketeerchess commented Mar 10, 2018 via email

@Nordlandia
Copy link
Author

One particular variant or multiple?

@musketeerchess
Copy link

musketeerchess commented Mar 10, 2018

As a beginning, 2 fairy pieces (default) have to be added, then, it'll become easier to program and add the others

@Nordlandia
Copy link
Author

Nordlandia commented Mar 10, 2018

Is the pieces similar to Seirawan Chess. Seirawan was recently implemented into variant framework.

@musketeerchess
Copy link

My choice if i must make a choice (my favorite pieces) will go for Unicorn & Hawk.
The Seirawan pieces inspired me but my pieces rules are quite different

@ianfab
Copy link
Collaborator

ianfab commented Mar 10, 2018

@musketeerchess
Have you defined yet how the setup phase of the extra pieces should look like in the UCI protocol and how FENs are extended to fully describe the board state? The pieces on the 0th/9th rank could be encoded in a similar way as for crazyhouse and seirawan chess, but the possible promotion options also need to be encoded somehow.

@musketeerchess
Copy link

musketeerchess commented Mar 10, 2018

Hi, i haven't fixed these elements.

A possibility could be:

For the Musketeer Chess Fairy piece encoding in FEN we can use letters other than P R N Q K B
for example:
Cannon = C
Leopard = L
Archbishop = A
Chancellor =O
Spider = S
Dragon = D
Unicorn = U
Hawk = H
Elephant = E
Fortress = F
Use of lower case notation for black and Upper case notation for White.

Concerning the initial placement of the pieces in lines 0 and 9,

Piece placement (from white's perspective). Each rank is described, starting with rank 9 and ending with rank 0; within each rank, the contents of each square are described from file "a" through file "h". Following the Standard Algebraic Notation (SAN), each piece is identified by a single letter taken from the standard English names (pawn = "P", knight = "N", bishop = "B", rook = "R", queen = "Q" and king = "K"). White pieces are designated using upper-case letters ("PNBRQK") while black pieces use lowercase ("pnbrqk"). Empty squares are noted using digits 1 through 8 (the number of empty squares), and "/" separates ranks.

@ianfab
Copy link
Collaborator

ianfab commented Mar 11, 2018

To avoid confusion about the board size and to decrease redundancy, I think it would make sense to use an FEN format like rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[HaAfhcag] w KQkq - 0 1 (white hawk on a0, white archbishop on f0, etc.), or rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[Ha/Af/hc/ag] w KQkq - 0 1 to improve readability, or the more verbose rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[Ha0/Af0/hc9/ag9] w KQkq - 0 1. After the extra pieces have been brought into the game, one could use a dash instead of the file (rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[H-A-h-a-] w KQkq - 0 1) to indicate that they are no longer there but keeping the information about the possible options for pawn promotions. This FEN format should be relatively intuitive for people familiar with crazyhouse or seirawan FENs.

For the piece placement I think a crazyhouse-like notation (A@f0) would make sense. For the piece selection, I am not sure. The piece type itself would in principle be sufficient (e.g., A), but maybe it should be a bit more verbose in this case.

Do you already have a GUI (apart from the web-interface) that supports Musketeer chess? If you want an engine based on Stockfish, it would be natural to use (an extended) UCI protocol, but without a GUI that supports the same interface, that could of course only be used from the command line.

@musketeerchess
Copy link

Hi
Your suggestion for FEN notation is excellent (the latest suggestion).
I don't have a GUI and this should be part of the project (using Winboard for example isn't that easy and that good). A simple GUI to make engine vs engine matches, copying and pasting analysis in the game and showing windows of the analysis of the engine and a window with some parameters we can change (default evaluation of the pieces etc).
Probably this GUI can be further developed for Stockfish playing Fisher Random Chess, Seirawan Chess, Crazy Chess and Other Variants.
Winboard is developed by HG Muller, a skiller programmer, but it's no longer feeded with fresh ideas and isn't really user friendly.

@HGMuller
Copy link

HGMuller commented Jun 5, 2018

I think it is a bad idea to abuse a FEN to encode game rules. FEN should be kept for encoding positions. Games with different promotion rules are really different variants. So logically the choice of pieces should occur through the UCI_Variant option, (e.g. by having variants like MusketeerHC) not through the FEN of a game position.

Furthermore, the rules of Musketeer Chess do not specify where pieces should be gated; this is a players choice. So the engine should make it, starting from a position where it has the pieces in hand, but without assigned gating square. Its first two moves should consist of assigning gating squares to the pieces in hand; only then it can start making moves on the board.

Because Musketeer gating (unlike Seirawan gating) is equivalent to stacking of pieces, I would prefer to use a notation that treats stacking in a general way. E.g. a stack of pieces on a certain square could be indicated by putting the IDs of the involved pieces in parentheses. So

r(nh)bqkb(nc)r/pppppppp/8/8/8/8/PPPPPPPP/RN(BC)QK(BH)NR [-] w KQkq - 0 3

would be a position where white has assigned its Hawk an Cannon to f1 and c1, respectively, while black has assigned these to g8 and and b8. Moving the white Bishops or black Knights would 'uncover' the underlying H or C. At that point, there is nothing in hand; the hand only is for unassigned pieces.

Finally, if you think WinBoard is not user friendly, this is mostly your own fault, by not revealing what you consider user-friendly. For me, WinBoard currently does everything I need, in the most efficient way conceivable. Your preferences might differ from mine, however. But I cannot smell what they are...

@ianfab
Copy link
Collaborator

ianfab commented Jun 5, 2018

@HGMuller The promotion rules are determined by the choice of gating pieces in the setup phase, i.e., during the first moves of the game, if I understood correctly. In my opinion, this makes them part of the board state and not of a subvariant, because otherwise you would have to change the variant during the game (and the variant would be kind of undefined at the beginning).

I like your suggestion regarding the generalization of the representation for gating pieces. The FEN format might need an extension to specify the promotion options though (for aforementioned reasons).

@HGMuller
Copy link

HGMuller commented Jun 5, 2018

Hmm, it seems you are right. I thought the players would just have to agree on the pieces, before they started. It is really very annoying that promotion rules can become part of the game state. Imagine the way some pieces move would become part of the game state... (In fact one could argue that this is exactly what is the case here: a variant with two additional pieces X and Y, to which Pawns can also promote, and for which during the game is decided how they move.)
One could use the 'hand' field for this, but this really feels like abuse. This whole problem is so specific to Musketeer Chess that it is questionable if a general promotion-choice field would be of any value. Otherwise I would have suggested an entirely new field 'P=NBRQHC'. But in most Musketeer positions this would be very redundant. So I am inclined to go for a kludge, which would only work for Musketeer, by the virtue of the fact that you cannot gate under a King: you 'stack' the fairy pieces that get captured under the King, like '(KHC)'. But only if that side still has Pawns.

@ddugovic
Copy link
Owner

Musketeer Chess sounds fun to play.

I know Fabian has taken interest in many chess variants in his Multi-Variant SF fork although I don't recall seeing Musketeer among them.

I just heard this itch.io job board creation announcement which seems of some interest, although I think itch.io developers tend to focus on offline desktop applications.

@ianfab
Copy link
Collaborator

ianfab commented Apr 27, 2019

There is a fork for Musketeer chess that was split off from Fairy-Stockfish during its initial development. However, to my knowledge there is no GUI supporting the musketeer chess specific mechanism for gating moves (apart from using S-chess gating as a workaround) and the UCI protocol extensions that I made for the setup phase.

@HGMuller
Copy link

HGMuller commented Apr 27, 2019 via email

@HGMuller
Copy link

Now that the Musketeer Chess project seems to wake up from hibernation, I gave it a thought how the prelude could be handled in WinBoard. CECP already has commands to enable a non-standard dialog between engine and user: with "askuser TAG QUESTION" it can make the GUI pop up a dialog asking the QUESTION, and after the user types in the ANSWER, the command "TAG ANSWER" will be sent to the engine. The command "telluser MESSAGE" can be sued to present the user a MESSAGE that does not require a response.
To negotiate the Musketeer piece the engine could for instance say: "askuser piece2 My piece choice is H. What is yours?", and the user could then type "A" for Archbishop in the response field, to cause "piece2 A" being send to the engine. Or if the engine plays black it could simply start with "askuser piece1 What piece do you pick?". A black engine can announce its choice for the gating file of the second piece through a "telluser" command, as no further response from the user is expected after that, and it can just await the first move of the user after announcing it.
One snag is that Musketeer Chess would be an engine-defined variant (using Seirawan as parent, to enable gating and holdings to gate from), and that I would like the participating pieces to be known before the engine sends its "setup" command to define the piece symbols & IDs of the participating pieces, and the initial position. So that the GUI can put the selected pieces in the holdings, and won't offer the not-selected pieces as promotion choice. This is awkward, because WinBoard sends 'ping' immediately after the 'variant' command, so that it can know when the latter will not be replied to with a 'setup' (rather than the reply just being tardy). In that case it aborts the game with an error when the 'pong' reply arrives. So 'pong' would have to be delayed until after the 'setup' command, and thus until after completion of the negociation prelude.
This would actually work in the current WinBoard implementation, but is a rather bad violation of the spirit of the ping/pong mechanism. But perhaps we should be pragmatic here, and redefine the commands for user communication as 'asynchronous'.

Another problem is that this would have to be done in a completely different way in a game between two engines. Unless the meaning of the 'askuser' command would be redefined in engine-engine mode, to not cause a popup, but send the squastion to the other engine.

@musketeerchess
Copy link

musketeerchess commented Dec 14, 2019 via email

@HGMuller
Copy link

You should post that on talkchess.com. Although everyone knows that the $1500 will go to Stockfish, the 2nd price you offer will be high enough to attract interest of a few other programmers.

@musketeerchess
Copy link

musketeerchess commented Dec 14, 2019 via email

@ianfab ianfab closed this as completed Apr 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants