Check out Symmetric Chess, our featured variant for March, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Comments/Ratings for a Single Item

Earlier Reverse Order Later
Marseillais Chess. Move twice per turn. (8x8, Cells: 64) (Recognized!)[All Comments] [Add Comment or Rating]
Anonymous wrote on Fri, Nov 15, 2002 05:39 PM UTC:
<blockquote> The second art that I acquired in Pentonville [prison] was so-called 'Marseilles chess.' It was invented by an elderly Frenchman, with a red scarf around his neck, who taught it to me during exercise hours. In this game, each player in turn makes two moves instead of one—the only restriction being that the first of the two moves should not be a check to the King. To the chess-addict is this a nerve-racking experience which shatters his outlook and upsets all his values. Hitler and the Gestapo have faded into the past, but the memory of Marseilles chess in Pentonville still makes me shudder. </blockquote> Arthur Koestler<br> Introduction to <i>The Scum of the Earth</i> (1954) <br><br> Contributed by <br> Thane Plambeck<br> <a href='http://www.qxmail.com'>http://www.qxmail.com</a>

Andreas Kaufmann wrote on Thu, Jan 30, 2003 10:57 PM UTC:
When I was in school, we played Marseillais Chess with the following variation: if you are given a check, you should move the King from the check and you move only once this turn. This gives attacking side a big advantage: you can move one of your pieces, then give a check - the opponent must move the King and can't do the second move. The games were very tactical, once you gain an initiative, you usually try to keep it at any cost, sacrificing pieces to get the enemy King into open space, where you can keep checking it.

🕸Fergus Duniho wrote on Tue, Feb 25, 2003 03:47 AM UTC:Good ★★★★
This looks like an interesting game, but I don't wonder why no Zillions file is listed for it. This one would seem to be a difficult game to implement. The rule against checking on the first move may be difficult to implement, unless it's just impossible. I haven't analyzed the matter far enough to know whether it's possible. For each possible move, Zillions would have to check whether the enemy King would be in check. There is no query function for this, and even if there was one, it might be very costly. One might note the enemy King's location, then keep checking whether it is defended. But I'm not sure that this will work.

🕸Fergus Duniho wrote on Tue, Feb 25, 2003 04:08 AM UTC:
Zillions of Games comes with a game called 'Double-Move Chess
(Checkmate),' whose description says, 'Checking the opponent is only
allowed on the second move.' To test whether it enforced this rule, I
played both sides. After moving all four center Pawns forward, I captured
the Black King with two moves from the light-squared White Bishop. The
game went like this: e2-e4, d2-d4; d7-d5, e7-d5; B f1-b5, B b5-e8.
Although the rule was stated in the description, the ZRF did not enforce
it.

Tony Quintanilla wrote on Wed, Feb 26, 2003 01:31 AM UTC:
Mike, How about creating a neutral player who only has a dummy piece. The neutral player's move would go between the two same-color moves. That should cause Zillions to evaluate check after the first move. The neutral player should not be detectable in actual play, the moves list, etc.

🕸Fergus Duniho wrote on Wed, Feb 26, 2003 03:26 AM UTC:
I'm thinking the two moves should be of different move-types. The second
move can first check whether the enemy King is in check.

For example, preceed each move of the second move-type with (no-check?).

Link all spaces on board with next direction.

(define no-check? mark a1 (while (or (not-piece? King) (not-enemy?)) next)
(verify not-defended) back)

This searches for the enemy King's position, verifies whether its
position is defended, which means the current player is threatening that
space, then returns to the position of the piece moving.

🕸Fergus Duniho wrote on Wed, Feb 26, 2003 03:33 AM UTC:
I just reread your message. My idea was for something you already know how to do. But the principle behind it might be re-employed for making the King move out of check on the first move. Use two move-types. On the second move-type, check whether your King is in check. Search for the King's position, then check whether its position is attacked. I think you can just replace 'not-enemy?' with 'not-friend?' and 'defended?' with 'not-attacked?'. This will allow a second move only when the King is not in check. Thus, it will have to get out of check on the first move to get out of check at all.

🕸Fergus Duniho wrote on Wed, Feb 26, 2003 03:45 AM UTC:
I expect these two ideas could be combined together for greater efficiency. Search for a King. When one is found, verify that it's either an undefended enemy King or an unattacked friend King. If that verification succeeds, continue searching for the other King. Check whether it's either an undefended enemy King or an unattacked friend King. If that verification succeeds, the move can proceed. So, it works like this. A second move is allowed only if neither King is in check. So, this ends a turn when the first move is a check, and it forces a player to get out of check on the first move.

🕸Fergus Duniho wrote on Wed, Feb 26, 2003 04:06 PM UTC:
I've had an additional thought on how to make a Marseillais Chess ZRF more
optimized. Between each player's first and second move, have a dummy
player check whether either King is in check, placing a piece on a
specified location if either King is in check, and clearing the same space
if no King is in check. Then on the second move, each piece just verifies
that this space is empty before moving. This will eliminate a whole lot of
overhead caused by multiple checks of whether any King is in check.

It might also be useful to use two spaces instead of one. Checking both
spaces could be done with an or. Doing this would reduce a bit of
overhead. There could be two dummy players, a white dummy and a black
dummy. Each could first check for a marker indicating that it's side is
in check. If so, it would check whether it's still in check. If it was
empty, it would not have to check whether it's in check. In either case,
it would check whether it's side has placed the other side in check.

Another advantage of this would be the presence of visible check
indicators for each side. Zillions does not normally tell you when you're
in check. This would be a nice side effect of implementing the game in
this way.

Tony Quintanilla wrote on Wed, Feb 26, 2003 06:21 PM UTC:
The marker could simply be the same King piece image with some kind of change, such as a red outline, or some such, illustrating that the King is under attack. Adds an element of drama to the game....

🕸Fergus Duniho wrote on Thu, Feb 27, 2003 12:38 AM UTC:
Okay, I'll see what I can do. I believe it's doable, though some things might work out differently in the details.

🕸Fergus Duniho wrote on Fri, Feb 28, 2003 02:03 AM UTC:
I have completed Zillions implementation of a simplified version of
Marseillais Chess, which I call Simple Marseillais Chess. Implementing the
rules for en passant would have been very tricky, and there seems to be
nothing I can do about getting it to accept checkmate as a goal. So I just
let myself create a new version of the game, then implemented that. The
simplified version is played like Chess with these differences:

1. Each Player normally has two moves per turn.
2. The second move of a turn is allowed only when no Kings are in check.
3. Although a Pawn may move twice in a turn, it may not make the two-step
initial move available in Chess.
4. Pawns may not capture each other by en passant.
5. The object is to capture the enemy King.
6. 3-times repetition is a loss.
7. A player who cannot move must pass.

🕸Fergus Duniho wrote on Fri, Feb 28, 2003 02:31 PM UTC:
My ZRF for Simple Marseillais Chess is now improved. I previously had it check for check with extra moves by each King. This had the disadvantage of giving the human player extra work to do on some occasions. The game would be stalled until the human clicked on the space for the check marker. Checking for check is now taken care of by a third player. But it is still done with the same moves. The third player checks for check by making moves with the Kings belonging to each side. This is done by including items in the turn-order like (bot White check-move) and (bot Black check-move). As it happens, attacked? works with the player who owns the piece, not the player who moves the piece. So when bot moves the White King, it can use attacked? to check whether the White King is attacked. And when bot moves the Black King, it can use attacked? to check whether the Black King is attacked. The advantage of doing these checks with a third player is that human players no longer have to attend to the check marker. One disadvantage, though it's questionable how much of a disadvantage this is, is that Zillions now plays a weaker game. It played an even weaker game when I used ?bot instead of bot. But this may at least give human players a better chance of appreciating the game without being quickly beaten by the computer. I hope that increasing the thinking time will provide challenging enough play. If it's just not challenging enough, one can always remove bot from the turn-order and just attend to the check marker when necessary.

Andreas Kaufmann wrote on Fri, Nov 7, 2003 11:10 PM UTC:Excellent ★★★★★
Can anybody create a game courier preset for Marseillais Chess (Balanced variant)? Thanks!

Roberto Lavieri wrote on Thu, Dec 2, 2004 02:32 AM UTC:Good ★★★★
This game is not so easy to play in the opening!, tactics are enterely different than in FIDE-Chess, and it is very easy lose material if you try to develop fast your pieces looking for suposed 'positional advantage' that, in the majority of the cases, it is not advantage of any class, much times you fall in exposed positions, it seems better play it in a somewhat conservative way, being very careful with the support to all your major pieces in play. If you take not care, you can be checkmated very soon. The average number of moves to finish a game can be of no more than 20 moves. this game is extremely dynamic, and it must be balanced with the usual rule: in the first move, White plays only one move. If not, White advantage is notorious in the opening. Surprisingly, e2-e4 does not seem to be the best first move in this game.

Greg Strong wrote on Thu, Dec 2, 2004 03:23 AM UTC:
Let me make sure I understand the rules of this game correctly ... Since my two consecutive moves may move the same piece twice, then essentially any piece (except the pawn) can perform a rifle capture by taking the piece, and then returning to the original square... Assuming this is true, games must be pretty short since pieces will be constantly falling.

Roberto Lavieri wrote on Thu, Dec 2, 2004 07:51 PM UTC:Good ★★★★
Greg, you are right, all pieces have rifle capture capabilities, but much more than this, power of pieces is not only extraordinary, it is augmented by the fact that you can move not only the same piece twice, but two consecutive moves with different pieces too. On an empty board, Queen and Rooks can reach ALL the rest of the squares (63!) from any initial position. Ends are a madness, and for this reason the games finish very soon, in very rare cases you can play a game which finishes in more than 25 moves!

📝Antoine Fourrière wrote on Fri, Dec 17, 2004 12:51 PM UTC:
If a player advances a Pawn by two squares, then plays a piece on the intermediary square, e.g. c2-c4; N b1-c3, can/must an enemy Pawn take both the piece and the Pawn en passant, e.g. d4xc3xc3?

Roberto Lavieri wrote on Fri, Dec 17, 2004 03:48 PM UTC:
I don't know much about Marsellais, I have tried it a few times with a novice status, but I have not analyzed rare situations and fine details. I think this move can NOT be done, en passant movement is a Pawn move in which you capture an enemy Pawn moved INMEDIATELY before the en-passant capture. In your example, after the Pawn move you moved other piece in the second part of the turn. I think it is the same if you move the Pawn twice letting it in a position in which en-passant is permissed, you can't take the Pawn because the last move was not a two-steps move in the same PART of the turn, you moved one square in the second part of your turn, and this is the last move to the effects of the game. This is an interesant discussion, and it must be clarified by experienced players. If we are rigurous with the Chess rules that I suppose are translated to Marsellais, if you move a Pawn two squares and it lands in a position in which it can be captured en-passant, and after that you move other piece, this is the last move, so the Pawn can't be captured en-passant, but if you move first the other piece and after that the Pawn, it is vulnerable to en-passant capture, so order can be important to the effects of the application of this rule. Has someone an 'official' response?.

Roberto Lavieri wrote on Fri, Dec 17, 2004 03:57 PM UTC:
My interpretation of the 'two moves per turn' is simple: after you move the first move of your turn, the other player is forced to 'pass', as a permissed (and obligatory) 'move' in this game, and after completing the turn with your second move, the two-moves turn is to the other player.

Joe Joyce wrote on Fri, Dec 17, 2004 07:29 PM UTC:
I've understood the interpretation of en passant capture to mean the
capturing player makes the en passant move 'as soon as legally
available'. For example, if the initial double-step pawn move results in
a discovered check, the check must be dealt with, then, on the next turn,
if the player is not again in check, the pawn may be taken en passant, if
that move is still available. A series of checks would 'push' the en
passant capture along with it. The checks could even be ended by the
double capture move originally suggested. If that move, the en passant
capture ameliorating check, was available, then it would have to be taken
then, or the en passant opportunity would be lost. This could
theoretically occur in a FIDE game, no? Anyway, the en passant capture
would then be available to the other player during his next move, which
would have to be the one-move capture, and not the two-move non-capture.
In which case, the situation described would be a serious blunder, or a
brilliant sacrifice.
This does not hold if Roberto is strictly right, and there is a voluntary
pass by the opponent, for, theoretically, the opponent could have,
instead, made a voluntary en passant capture between the non-capturing
moves.

Roberto Lavieri wrote on Fri, Dec 17, 2004 10:11 PM UTC:
No, I'm wrong about en-passant rule. It states:
'A pawn that is moved two squares in one move (half a turn) can be taken
en-passant, even if the pawn moved in the first half of the turn. The
en-passant taking should be done on the first move of the turn. However,
when two pawns can be taken en-passant, this is allowed.'
I have to see the comment that is going to be displayed in a few hours,
because I'm now a bit confused with Antoine's question.
Some clarifications are needed about rare cases, I expect that an
experienced player can give detailed explanations about it.

Anonymous wrote on Sat, Dec 18, 2004 12:36 AM UTC:
Antoine Fourrière asks: 'If a player advances a Pawn by two squares, then plays a piece on the intermediary square, e.g. c2-c4; N b1-c3, can/must an enemy Pawn take both the piece and the Pawn en passant, e.g. d4xc3xc3?'

Interesting question! I always take 'en passant' by pushing my opponent's Pawn back to the third rank and then capturing it in a normal fashion. The result is the same as if I forced my opponent to retract his two-step Pawn move and then make a different move with the same Pawn. Marseillais Chess rules lead to considerable confusion here. I would be tempted to say that Black may capture the N(c3) in Antoine's example, but may not perform an en passant capture of the P(c4). We may find out that this question has been dealt with before.


Doug Chatham wrote on Sat, Dec 18, 2004 11:17 PM UTC:
On page 21 of his book Popular Chess Variants, D. B. Pritchard writes, 'The en passant rule has seen change. Modern players allow it only when the pawn advance formed the second move of a turn.'

This implies that the opponent cannot capture two men with one en passant move.


Roberto Lavieri wrote on Sun, Dec 19, 2004 08:13 PM UTC:
Thanks to Doug, it answers Antoine's question, and it swhows that my initial interpretation was not wrong as I though: 'My interpretation of the 'two moves per turn' is simple: after you move the first move of your turn, the other player is forced to 'pass', as a permissed (and obligatory) 'move' in this game, and after completing the turn with your second move, the two-moves turn is available for the other player.'

David Paulowich wrote on Wed, Feb 16, 2005 02:06 AM UTC:Excellent ★★★★★
'The reason the Queen is worth more than the separate Rook and Bishop is that she gets a bonus from having 8 directions of movement.' - Ralph Betza, who also writes '... the Queen is worth a notable amount more than the separate R and B, but this seems to be mostly because pieces that concentrate great value are as a general rule worth more than their separate component pieces (more forking power).'

To paraphrase Betza, the Queen's ability to do 'two things at once' makes it worth a Pawn more than a Rook and a Bishop. My last game of Marseillais Chess leads me to the opinion that Q=R+B exactly in this variant, as the two separate pieces can both move in the same turn. The subject of Marseillais Chess piece values deserves further study.


🕸Fergus Duniho wrote on Mon, Jul 25, 2005 02:06 AM UTC:
I have written a Game Courier preset for Marseillais Chess, and I played through a game fixing various bugs. It may be ready to go, but first I was hoping some of you might have the time to further test it for bugs and report any back to me. You can either give me a log if you play by email, or if you just move pieces, you can go into Annotate mode and cut and paste the moves that led to any bug you found. Here is the URL for the preset: /play/pbm/play.php?game%3DMarseillais+Chess%26settings%3DAbstract

🕸Fergus Duniho wrote on Tue, Jul 26, 2005 02:34 AM UTC:
Antoine, While using the games you included on this page to test my rule-enforcing Marseillais Chess preset, I found an error in one of the games. In Albert Fortis(White) vs. Alexander Alekhin (Black), on Black's third move, the second part of the move tries to move a Pawn from an empty space (b7). I assume this move should be b6-b5. When I made that one correction, my preset let the the rest of the game play through legally. Would you recheck your source and make the appropriate correction?

Matteo Perlini wrote on Wed, Sep 5, 2012 12:42 PM UTC:
Is computer good in Marseillais Chess?

Kevin Pacey wrote on Mon, Sep 19, 2016 02:41 AM UTC:Excellent ★★★★★

The fact that one of the best chess players of all time (Alekhine) took the trouble to play at least one game of this variant may count for something.

In trying to tentatively estimate the value of the pieces in this variant, I'd guess that the long range pieces may be worth, say, one and a half times what I give them as in standard chess. Thus: P=1; N=3.49; B=5.25; R=8.25; Q=15 and the fighting value of K=4 (though naturally it cannot be traded).


V. Reinhart wrote on Mon, Feb 13, 2017 06:54 PM UTC:

Wow, this rule change makes a big difference to the game of chess!

The sample games were finished in 4, 7, 18, and 13 moves - each move certainly has much more influence on the game play.

I've been trying to think of ways to "add power" to the game "Chess on an Infinite Plane" without adding more or stronger pieces. This might be a good way to do it (but maybe with some limitations).

Is there anyone who would like to try such a game? I'm open to any new and innovative ideas. If you have any favorite pieces, we can try those also (but I'm looking for more than just a mix of new pieces).

The games in play for Chess on an Infinite Plane are going well so far. I'm just interested in a version which might somewhat amplify the game power a little.


Greg Strong wrote on Fri, Apr 7, 2017 04:00 AM UTC:

A request was made on another thread for games scores and/or analysis of Marseillais. I ran a self-play match with ChessV using about 12 total hours of thinking. Here is the score:

 1. c2c4        b7b6,c8b7
 2. b2b3,c1b2   b7g2,g2h1 
 3. f1g2,g2h1   e7e5,d7d5 
 4. b2e5,d2d4   b8c6,c6e5 
 5. e2e3,d4e5   a8c8,f8b4 
 6. b1d2,a1b1   d5c4,b4d2 
 7. d1d2,b3c4   c7c5,d8d2 
 8. e1d2,d2c3   h7h6,c8d8 
 9. b1b6,b6b7   g8e7,h6h5 
10. b7a7,a7b7   f7f6,f6e5 
11. g1f3,f3e5   e7c6,c6e5 
12. f2f4,f4e5   e8g8,f8f2 
13. b7d7,d7d8   f2f8,f8d8 
14. e5e6,a2a4   d8d6,g8f8 
15. h1f3,h2h3   g7g5,h5h4 
16. f3b7,a4a5   g5g4,g4g3 
17. a5a6,b7g2   d6e6,e6a6 
18. c3d3,d3e4   a6d6,d6d2 
19. e4f5,f5g4   d2g2,g2g1 
20. g4h4,h4g4   g3g2,f8f7 
21. g4f5,f5e4   g1a1,g2g1=q 
22. e4d3,d3c2   a1f1,f1f2 
23. c2d3,d3e4   f7e6,g1g6
black wins by checkmate

Also, there have been 12 games completed on Game Courier. You can find the game logs by following this link.


V. Reinhart wrote on Fri, Apr 7, 2017 04:33 AM UTC:
Thanks Greg,
I think it was me who made the request (I was wondering about games with double-moves). A game with 23 moves is not really very long, so the double-move does shorten the game. (But it's not too short that the play becomes unfair or non strategic).
I did just recently upload ChessV so now I can do my own analysis. I might try to to do a study similar to what you just did.
Btw, 4 other games listed here lasted 4, 7, 19, and 13 moves. So I assume ChessV played better (like two equally matched opponents). The other possibility is that ChessV played worse, but worse in an equal way (but I doubt that).
One question: Why did the analysis take 12 hours? I know looking into the game tree takes many cycles, but that seems like a really deep analysis. Is that the normal time required to get best play from ChessV?

Greg Strong wrote on Fri, Apr 7, 2017 05:15 AM UTC:

I expect 23 moves is probably in the neighborhood of what a well-played game of Marseillais should last.  Double moves lead to sharper tactics and bloodier games.  For example, defending a piece doesn't necessarily accomplish much, since the opponent can use his two moves to take the piece and then move the attacker away to a safe location (a kind of hit-and-run.)  Also consider that each move is really two moves, so this game had the equivalent of about 45 moves of conventional chess.

Unfortunately, if you run this test with ChessV it is going to crash.  There's a bug I discovered when trying to run this that I first had to track down and fix.  The version I recently posted was a "release candidate" to get it out into the wild so I could get people doing more testing and reporting problems.  So far about a dozen bugs have been found and fixed.  I hope to release an update shortly - possibly this weekend.  Then you'll be able to run similar tests.  The short explaination is that there was a bad interaction between the double-move and the code that handles en passant.

Why 12 hours?  Somewhat arbitrary.  The longer you let it think, the deeper it can think.  But the time required to reach the next level of depth increased exponentially, and the exponent can be quite high.  To reach enough extra depth to make a difference in skill might require a couple of days.

I should also point out that Marseillais is different enough from standard chess that we don't really know how to best program a computer to play it.  We are in uncharted waters here.  Almost certainly there are changes that need to be made to the standard chess algorithm for proper play of double-move variants, but we do not yet know what those changes are and it will take a lot of study and experimentation to find them.  If you're really interested in the details, chess programs have something called Quiescent Search that is very important, but this concept doesn't really work for double-move variants and it is not clear what should replace it.  You can read about quiescent search here.

But, all that said, this score is of what is probably one of the highest quality games of Marseillais ever played. Humans don't really know how to play it well either. Every aspect of standard Chess has been studied deeply for hundreds of years. But, as you saw for yourself when you went searching out samples games and analysis for double-move variants, there isn't much available. But stay tuned. This is an area that will hopefully see more development in the future. Now that there is a GUI that can run double-move games, hopefully some other chess programmers will make engines that are capable of playing them.


V. Reinhart wrote on Fri, Apr 7, 2017 04:52 PM UTC:
That's interesing. 12 hours is a big jump from the default value of 5 minutes (144x to be exact). But a small default makes sense, so you can play a fast game first, then set it to more acurate play later if you're ready.
 
When you did the 12 hour test, did you set the Minutes to 720, or did you just run the game "unlimited"?
I also like the 12x12 chess game option.  That is a game I'm going to play and study.  It's basically the same as chess but with 2 extra files or ranks around the perimeter. Therefore it represents an intermediate point between chess and chess on an infinite plane . One thing I've been curious about is if good play ever involves trying to go around your opponents pieces, and attack from behind. Obviously you lose tempo, but the advantage is the back is not guarded by pawns.

Greg Strong wrote on Fri, Apr 7, 2017 05:15 PM UTC:

I ran the game giving each side 8 hours on the clock.  Didn't wind up using all the time, though, because the game ended first.  You never really know for sure how much time you should use for any given move because you don't know how long the game will last.

Regarding Chess on a 12 x 12 Board, I've played a few games here.  You can find the logs on Game Courier.  It seems there is definitely a use for "flanking" - going outside and around.  You can get a rook moving on the very first move if you want.


🕸Fergus Duniho wrote on Mon, Nov 11, 2019 02:28 AM UTC:

While fixing a bug in the Game Courier code, I came across a situation that is not clearly covered by the rules. Suppose a Pawn makes its usual first-move double move, then it moves forward one more space on the same turn, so that it moves a total of three spaces forward. Can it be captured by en passant if the opponent has a Pawn in the usual position? On the one hand, it has made a double move, and a Pawn that makes a double move can normally be captured by en passant. On the other hand, it is no longer on the space it moved to when making its double move, and if the player had wanted to, he could have moved the Pawn forward one space, then captured the Pawn that was in a position to capture it by en passant if it had made a double move.

For now, I have written the code to forbid en passant capture in this situation. Does anyone know if there is any precedent for allowing en passant capture in this situation?


Greg Strong wrote on Mon, Nov 11, 2019 02:43 AM UTC:

This is tricky, and different players have used different rules.  This page states:

According to Pritchard's Popular Chess Variants, 'The en passant rule has seen change. Modern players allow it only when the Pawn advance formed the second move of a turn.'. This helps to eliminate some ambiguity discussed in the comments. (What if a player advanced a Pawn by two squares, then occupied the intermediate square with a piece?)

The situation is potentially even worse than this example.  What if a pawn made a double move and then went on to capture a piece with its second move?  Would capturing it en passant then magically bring back the piece it captured?

There was a discussion about this on the talk chess site a few years ago.  The discussion went on for quite a while and a lot of people weighed in.  I can try to dig up the thread, but the final outcome was that there is really only one interpretation of en passant makes sense and doesn't lead to problems: the en passant capture must be made with a player's first move and can only be used to capture a two-space move by the opponent's second move.  If a player makes a two-space pawn move with the first of his two moves, it is not subject to en passant.  ChessV uses this interpretation and I believe Game Courier should do the same.


H. G. Muller wrote on Mon, Nov 11, 2019 08:31 AM UTC:

In any case it should be clear that you can never capture a piece after it moved away with the second move, just because it was in a location after its first move where you could capture it. It would be highly illogical if e.p. capture would be an exception to that. Whether you want a second move done with a different piece to destroy e.p. rights is a matter of choice.


🕸Fergus Duniho wrote on Mon, Nov 11, 2019 04:37 PM UTC:

I changed it to allow en passant only when the Pawn's double move is a player's second move, and I confirmed that this change did not break any past game. But as I was rewriting the rules, one more thing occurred to me. Suppose a Pawn's double move done on the first move puts a King in check, thereby ending the turn without a second move. If this check could not be ended with an en passant capture, this could allow a King to be checkmated in a position that would not be checkmate in Chess, and this would violate the intention behind the game.

So, I think we have to exclude the rule that en passant is allowed only when a Pawn makes a double move on the second move of the turn. This could be replaced with the rule that en passant is allowed only when the double move was the opponent's last move, or it could be replaced with the rule that en passant is allowed only when the Pawn that made a double move didn't make another move after it. For the meantime, I'll change it back to the latter.


H. G. Muller wrote on Mon, Nov 11, 2019 05:37 PM UTC:

Well, another move should clear the e.p. rights generated by any previous move. Like it always does. E.p. rights are transient, and last only to the end of the next move. (And not to the end of the next turn!)


Greg Strong wrote on Mon, Nov 11, 2019 06:57 PM UTC:

Yes, I should have said en passant only allowed if the two-space pawn move was on the player's most recent move (rather than second move) to account for this.  I just tested this situation and ChessV does allow en passant to get the king out of check.  It is implemented as H. G. suggests - any move clears the EP square.


🕸Fergus Duniho wrote on Mon, Nov 11, 2019 08:26 PM UTC:

The earliest source I can find is Pritchard's 1997 Encyclopedia, which is the source Hans originally used to write this page. It says "En passant is legal if the opponent moved a pawn two squares on either of his moves but the capture must be made at once. However, if the opponent made two two-square pawn moves, both pawns can be taken e.p. This last rule is credited to Alekhine by F. Palatz in an article on the subject (LEC Sep 1928)." LEC refers to L'Echiquier. Notably, Alekhine is not one of the inventors, and how the game should handle en passant might be something that the original inventors didn't think of. It is also unknown whether the game was invented by Fortis or by de Queylar. It has been attributed to each one, but its origins are murky.

Regarding one of the alternative rules, it says "The game was sometimes played with alternative rules: a check on the first move was illegal and a player could not capture e.p. if the pawn had been moved in the first part of the player's turn." It's very possible that Fortis and de Queylar invented similar games with slightly different rules that eventually got conflated together.

The rule that Greg Strong and H. G. Muller propose has the advantage of being the simplest to program. It works with code that has already been written for Chess. Of course, the original inventor of the game would not have had this in mind, since programming games was not an option when it was invented. However, the rules as initially described above can be programmed, and that's what I have done in Game Courier. The only issue with them is that they need emendation for a Pawn that moves twice on the same turn. If we keep those rules, then en passant capture should be impossible in this instance, or it should be allowed for the Pawn on its new space. I have the former programmed right now, whereas the latter would be trickier to program.


Greg Strong wrote on Mon, Nov 11, 2019 08:45 PM UTC:

So if the player moved a pawn two spaces and the placed a piece on the square passed over you would allow capture of both with a single move?  To me, that doesn't fit comfortably with the spirit of chess.  Pritchard notes that the rule has changed over time, probably for good reason.  Similarly, Marseillais Chess is now played in 'balanced' form because it is clearly superior.  Old games do evolve and that's a good thing.

Here is the thread on Talk Chess where this was discussed.  In it I actually started iwth Fergus' view and was persuaded to adopt my current view.


H. G. Muller wrote on Mon, Nov 11, 2019 08:49 PM UTC:

What I cannot imagine is that the original inventor would have thought it reasonable to allow e.p. capture

  1. when the capturing Pawn has not seen the other one move past it
  2. when the Pawn that moved is no longer there
  3. when the e.p. square gets occupied

🕸Fergus Duniho wrote on Tue, Nov 12, 2019 02:54 AM UTC:

So if the player moved a pawn two spaces and the placed a piece on the square passed over you would allow capture of both with a single move? 

The way it is coded, that would not happen. The first thing it checks for is an ordinary diagonal capture. If the move involves one, that's what it does, and it doesn't get around to checking for an en passant move.

I have started to look at the thread you provided a link to, and I will continue to look at it tomorrow.


🕸Fergus Duniho wrote on Tue, Nov 12, 2019 04:29 PM UTC:

What I cannot imagine is that the original inventor would have thought it reasonable to allow e.p. capture

  1. when the capturing Pawn has not seen the other one move past it
  2. when the Pawn that moved is no longer there
  3. when the e.p. square gets occupied

That's all reasonable, and what I've coded for Game Courier is in conformity with it. The first one is already handled by the rule that en passant is not allowed on the second move unless the player is making two en passant captures. This prevents a player from using his first move to move a Pawn into position to do an en passant capture. (Note that a Pawn that was already in the position to do this could just capture the double-moved Pawn normally and then use its second move to go to the space the now captured Pawn had passed over, reaching the same position without using en passant.)

The second is handled by setting the ep1 variable to false whenever a player moves the same Pawn again. Since ep1 would store the position of the previously moved Pawn if the last move were a Pawn move, it checks whether the second move is from that location.

The third is handled by checking for a normal capture before checking for other types of Pawn moves. If the move is a normal capture, it never gets to the code for en passant. If it's not a normal Pawn capture, then the move was to an empty space. By the time it reaches the elseif clause for en passant, it has already been determined that the space is empty.

 


🕸Fergus Duniho wrote on Tue, Nov 12, 2019 10:05 PM UTC:

One more issue has come up. Suppose that a player makes a first move that leaves him with no legal second move. Does this end his turn like a checking move would, or does it end the game in a draw? Pritchard says in Popular Chess Variants, "A player who is not in check and cannot complete his turn is stalemated." This suggests the latter, but he could have said it more explicitly if that is what he meant. Is there any consensus on how being unable to move on the second move should be handled?


wdtr2 wrote on Wed, Nov 13, 2019 12:29 AM UTC:

Tough Question.  I could see the 2nd move being "pass", and if Marseillas is a mandatory 2 move game per person, it is a strong arguement that it is a stalemate.  You are the programmer to the game, I would pick the one Fergus Likes, and make sure it is mentioned in the rules.


dax00 wrote on Wed, Nov 13, 2019 07:01 AM UTC:

It seems logical to me that stalemate must be a result of one player's move making it impossible for the other player to complete his move(s). Intentionally "stalemating" yourself on your first move so you have no legal second move seems like it should be illegal - an illegal move. If left with any set of 2 legal moves to be played, a player should be compelled to make those moves.

If, for example, a player can only move his pawn, that pawn starts on b7, and an enemy pawn is on b4, that player should not be allowed to make the pawn double-move on move 1, but rather make 2 separate single-square moves.


H. G. Muller wrote on Wed, Nov 13, 2019 08:51 AM UTC:

I support that interpretation. The pair of moves should be legal, and a first move that only occurs in illegal pairs should therefore be considered illegal itself.

One can compare this with the handling of the touch=move rule in FIDE rules, which also makes a turn a two-event action: lifting a piece, and then dropping it. If I play Carlsen with black, and start touching Ra8 after his opening move, I cannot claim a draw on the basis that this Rook has no moves, and I am not in check, so that its a stalemate. I simply must grab another piece to move.


🕸Fergus Duniho wrote on Wed, Nov 13, 2019 03:02 PM UTC:

I hadn't thought of that interpretation, but it is more computationally complex than the ones I was considering. It would involve testing a position for legal moves, then trying out each legal move and testing it for legal moves until at least one legal move is found. Also, I normally handle checking for stalemate in the Post-Game sections to minimize its computational cost, but if a move were to be illegal if it had no follow-up move, the code would have to check for double levels of stalemate in the Post-Move sections, and that would significantly raise the computational load of the code.

The two interpretations I was considering were to allow only one move when no second move is legally available or to end the game in a draw when a second move is not available. Another alternative would be to end the game as a loss for the player who does not have a second move available. This would discourage players from deliberately stalemating themselves just as well as making it illegal would, and it could be done with far less computational complexity.


H. G. Muller wrote on Wed, Nov 13, 2019 04:05 PM UTC:

I would consider the latter solution perfectly acceptable. In my Shogi engines I use something similar for Pawn-drop mates; rather than engaging in time-consuming testing whether the move is legal, just reverse the score of a checkmate when the previous ply was a Pawn drop.

I don't know if the interface already commits the user to the first move after he entered it. If not, and he can still take it back, you don't really have to do anything. Whatever he does for the second move will be rejected as illegal, so sooner or later he will decide to try another first move.


🕸Fergus Duniho wrote on Wed, Nov 13, 2019 04:44 PM UTC:

Using the Zillions-of-Games version of Marseillais Chess by Young-Hyun Joo, I moved pieces until I got a position where one side used the first move to move into a position with no second move. When I tried to move again, it declared the game a draw.

While I generally don't like the idea of a player being able to draw a game by stalemating himself, it is also a difficult thing to do until the endgame, and giving each player two moves should normally allow the player who is ahead to force checkmate all the more quickly. So, in this game, it may mitigate the greater advantage of the player who is ahead and give the player who is behind greater hope of being able to draw the game without really making the game too drawish.

This rule comes from a reading of Pritchard, and given how he mangled all of my games that ended up in the revised version of his Encyclopedia, I don't trust him. But he is also the only source I have. I would like to find the article written by Fortis, but it may not be on the web. Since I don't have a serious objection to it, and since it is computationally less expensive than some other options, I'll probably go with it unless someone has a more authoritative historical source than Pritchard.

Checking how en passant works in the same Zillions script, it works as I have programmed it except that it allows the capture of two pieces when a piece has moved to the space a pawn just passed over with its double move. I suspect that if capturing two pieces at once were allowed, this would have been mentioned explicitly in the rules. My interpretation is that since en passant means "in passing," the idea is that an en passant capture happens during the pawn's move and not after another move. In that case, the new piece would not yet be on that space when the en passant capture actually happens, and a double capture would not be possible then. Given this, a pawn who captured by en passant on that space should itself be captured, leaving the piece that moved to that space still standing. But this would overcomplicate the game, and it is easier to say that moving the piece there caused the enemy pawn to lose its chance to capture by en passant but compensated for this by giving it another piece to capture. So, I don't support allowing double captures.


🕸Fergus Duniho wrote on Wed, Nov 13, 2019 04:50 PM UTC:

I don't know if the interface already commits the user to the first move after he entered it. If not, and he can still take it back, you don't really have to do anything.

This comment popped up while I was writing my last one. The interface does not commit a user to a move until it is complete.

Whatever he does for the second move will be rejected as illegal, so sooner or later he will decide to try another first move.

That's how it currently works. A player without any legal move on his second move is unable to proceed and must go back and make a different move to complete his move. The problem comes in when a player has only one legal move, and that puts him in a position without any more legal moves. In that case, the player is unable to move at all, and all he can do is resign or wait for the clock to time out. I would rather have something cleaner than that.


🕸Fergus Duniho wrote on Wed, Nov 13, 2019 08:10 PM UTC:

I think I figured out how to interpret the rule in a way that uses stalemate but avoids the problem of letting a player deliberately move into stalemate. This is the interpretation that if a player does not have any combination of two legal moves, the game ends in stalemate at the very beginning of his turn. I could do it like this. After checking for regular check and stalemate in the Post-Game sections, I could try out the available legal moves to see if any are followed by legal moves, stopping as soon as I find at least one. For this, I would use a subroutine that returns false as soon as one legal move is found and does not take the time to go through all possible moves and calculate a list of legal moves. Since there are plenty of legal moves when lots of pieces are on the board, and a position without any combination of two legal moves would be most likely in a position with few pieces left, there should not be a heavy computational load for doing this.


Greg Strong wrote on Thu, Nov 14, 2019 01:33 AM UTC:

I somewhat like the notion that a player can't make a first move that puts himself into stalemate if there is an alternate sequence.  Unfortunately, this would be extremely difficult for me to implement.  Like Zillions, ChessV handes multi-move variants by treating each leg as a separate move and implements the double move by adjusting when the side-to-move is flipped.  To implement this, I would not know if a move is legal without generating moves another level deep, and that would be a radical modification.  In practice, I think this would almost never come up in a real game.  I had a hard time even coming up with a position where I could test this.

So far as I know, there is no other xboard engine that plays Marseillais (or another GUI that enforces the rules.)  I really hope that changes.  To that end, I'm not inclined adopt an interpretation that makes it substantially harder to make a fully compliant engine to address a situation that is extremely rare at best.

Don't get me wrong - when trying to nail down the rules for classic games, ability to program them shouldn't be the top concern, and certainly shouldn't constitute a veto of clearly defined rules.  But the classic rules are in doubt, very likely were played with different interpretations at different times (to the extent these corner-cases were even considered), and the rules have been evolving.


H. G. Muller wrote on Thu, Nov 14, 2019 10:03 AM UTC:

Is this really a problem? If you score stalemate after the first move as -INFINITY (which it would automatically get when you score King capture as +INFINITY), the node that searches the first move will end up with score -INFINITY if it has no legal pair of moves. Only there you correct such a score to 'draw' if the player is not in check. This assumes actual checkmates get a slightly better score, either by adjusting them for distance to the root in the leaf itself, or by a delayed-loss bonus when propagating towards the root, so that positions heading for a forced checkmate will not be mistaken for stalemates. (Note that a consequence of the proposed rules is that when your only 1-step-legal check evasions stalemate yourself, this would count as a checkmate.)

BTW, I thought that Sven Schüle said he had made an engine, in the TalkChess discussion you already referred to. I never got around to making a Fairy-Max derivative for it.


🕸Fergus Duniho wrote on Thu, Nov 14, 2019 05:59 PM UTC:

For the sake of testing some endgame positions as I write the code, here is a game where I played both sides just to get a stalemate position.



🕸Fergus Duniho wrote on Thu, Nov 14, 2019 08:27 PM UTC:

Here's an example of what I'm calling a second-order stalemate. Black is not in check but has only one legal move.



🕸Fergus Duniho wrote on Thu, Nov 14, 2019 08:33 PM UTC:

One more question remains. While the rules seem to allow for second-order stalemate when the King is not in check, what about when the King is in check? Should this count as checkmate or stalemate? From the understanding that checkmate is check plus stalemate, we could argue that check plus second-order stalemate is also checkmate. Or, we might argue that the ability to escape check, even if no follow-up move is possible by any means of escaping check, constitutes only stalemate. Here's an example:



Greg Strong wrote on Thu, Nov 14, 2019 09:20 PM UTC:

Sorry if I'm falling behind in this conversation.  I'm working so messages are coming faster than I can consider or respond to them.  So, for now, I'm only responding to H.G's latest message:

I understand what you are saying here, but I'm not sure how this addresses the issue.  Perhaps the conversation has already moved beyond what I think we are talking about. Regarding the "move into stalemate" issue, H. G. said:

The pair of moves should be legal, and a first move that only occurs in illegal pairs should therefore be considered illegal itself.

I think this is what we were talking about.  If it's not, please let me know.  You describe assigning a stalemate score to a move pair, but I don't think this does anything about making a first move ILLEGAL if it leads to a stalemate when there is an alternate possibility.  If we've already written this off as unworkable, great.  If we're still talking about it, I don't think it is reasonably doable.

Regarding Sven's eninge - that would be awesome.  I didn't remember this from the thread and going back now, it seems this file is no longer available.


🕸Fergus Duniho wrote on Thu, Nov 14, 2019 09:20 PM UTC:

Aside from trying to reconstruct the original Marseillais Chess, I would like to propose a game I might call Simplified Marseillais Chess, which is designed with programming it in mind. It would follow the rule of Balanced Marseillais Chess of giving White only one move at the start of the game, it would allow en passant capture only of a Pawn moved on the last part of a player's turn, it would have a turn end with one move if there were no legal moves to follow it, and it would work with normal stalemate and checkmate on a player's first move. I think those are the main differences from regular Marseillais Chess. Is there anything I have overlooked?


Greg Strong wrote on Thu, Nov 14, 2019 09:25 PM UTC:

I think you are describing what I already consider to be Marseillais Chess. In other words, what you are proposing is what I think we should be considereing to be actual Marseillais. But, in any event, what you describe is what ChessV is already doing under the name "Marseillais Chess" and what, on the other TalkChess thread, we agreed the rules to be (although we didn't get into the move-into-stalemate question)

Not arguing - if you are proposing we move forward with this, I am in complete agreement.


H. G. Muller wrote on Thu, Nov 14, 2019 10:32 PM UTC:

We might miscommunicate, because I am thinking in terms of a pseudo-legal-move search, while you might want to determine move legality before searching them. For me an illegal move is simply a move that receives score -INFINITY when I search it. In an engine for normal chess this happens when the next ply captures your King, which gets awarded +INFINITY, and is then negated. Incidentally -INFINITY is also the start value of bestScore, and if it is left at -INFINITY all of the moves must have been illegal. That means mate or stalemate, and if stalemate is a loss both can get the same score, and -INFINITY would be a very suitable value, and you don't really have to do anything other than just returning the maximum move score.

IMO independently trying to establish legality of moves in a search is just a waste of time, as moves are legal more often than not. Just do the search, and when the move is illegal this will discover it soon enough, and will return -INFINITY. But most of the time there is nothing to discover. As long as an illegal move will get a score lower or equal than anything else, the search will work fine.

If you want to test legality of an input move, just do a sufficiently deep search on it (1 ply + QS in normal chess, 2 ply + QS in Marseillais), and reject it if the score is -INFINITY. You don't need any special code for that. I you want to make a list of legal moves (e.g. for the purpose of highlighting taret squares), just write a small loop to subject every prseuo-legal move of interest to such a search.


Greg Strong wrote on Fri, Nov 15, 2019 12:21 AM UTC:

We might miscommunicate, because I am thinking in terms of a pseudo-legal-move search, while you might want to determine move legality before searching them.

A reasonable distinction - from the point of view of a pure engine, it might not matter if a move is technically legal if you return -INFINITY for those moves that aren't.  For a GUI (that is, either Game Courier, or ChessV at the root), we need to know what is legal vs. illegal, although you do address this (quoted later.)

IMO independently trying to establish legality of moves in a search is just a waste of time, as moves are legal more often than not. Just do the search, and when the move is illegal this will discover it soon enough, and will return -INFINITY. But most of the time there is nothing to discover. As long as an illegal move will get a score lower or equal than anything else, the search will work fine.

What you say makes perfect sense.  It does.  And yet, Stockfish does not work this way.  It does not allow a king to be captured and evaluate it badly - rather, it considers that move to be illegal, even in a deep search.  I've looked at a ton of open source chess engines, and what you desribe is not how they work.  In truth, I don't really "understand" chess engines well at all - I sort of understand, but have a very, very hard time visualizing it.  You clearly understand these things on a level that I do not. I'm really just a sophisticated copy-cat who models my open-source engine after the code of others.  What you describe is a nice simplificaiton, but you are far off the beaten path and I am reluctant to follow you down this road, especially given that ChessV doesn't just play Chess, it plays over a hundred games, and it does it with absolutely NO "special cases" for any given game jammed in the middle of anything.  None.  It does what it does by means of a very sophisticated architecture of message-passing between Game, Piece, PieceType, and Rule classes glued together dynamically at run-time.  Not to brag, but there is nothing else in the world like it.  I don't want to tear apart what works on promise of what might be a 0.01% improvment in a typical game, nor what might make an unlikely corner-case of Marseillais more playable.

If you want to test legality of an input move, just do a sufficiently deep search on it (1 ply + QS in normal chess, 2 ply + QS in Marseillais), and reject it if the score is -INFINITY. You don't need any special code for that.

Ok, here you might be right.  As a GUI, I really only need to know what is legal at the root, and again, what you say makes sense.  But I am afraid to follow you.  For one thing, ChessV must, must, must do the right thing in every chess variant which it comes across.  I stipulate that as an immutable parameter of its design (a parameter which I have temporarily broken by implementing Makruk without the counting rules.)  Is it always the case that an evaluation of -INFINITY (game lost) is the same as a move that is not legal?  And 1 ply + QS in normal chess, 2 ply + QS in Marseillais?  Doesn't this already indicate that we don't really know and we are doing an approximation?  Is this univerally applicable to all variants it supports and may support?  For Progressive Chess, does it need to be X ply + QS?  And what the heck does QS even mean in terms of a game like Marseillas where there are no quiescent positions?

Please don't misintrepret - I am not doubting you.  Your engines are awesome and there are many different games where you have the best engine in existance and, in some cases, the only engine.  I'm not doubting you.  I'm doubting MYSELF.  I'm just not willing to make a radical change when I cannot fathom the consequences.

All that said, at some point I will have a sophisticated test suite of dozens of positions in dozens of different games so I can test architectural changes with some level of confidence.  For example, I really like the alternative to mate-distance-pruning you suggested on another forum that is like a universal application of it that prefers the shortest route to any advantage.  It seems genious, and I want to use it.  But I'm afraid, given that Stockfish doesn't use it ...  And I have no robust test suite to prove it doesn't break anything...


Greg Strong wrote on Fri, Nov 15, 2019 01:09 AM UTC:

An additional note, which I will add to the text of the page itself at some point, when we finish discussing modern Marseilleas:

The concept of an FEN Notation needs to be updated for Marseillais Chess.  ChessV can load/save an FEN for any game, so I needed to decide how to enhance FEN for Marseillais.  The only part that needs to be expanded is the part that records the side on the move - typically "w" or "b".  I add the additional options of "w2" for white on-the-move with two moves still to make and "b2" for black on-the-move with two moves still to make.  I like this alteration in part because the starting position for a (balanced) game still has the same FEN as orthodox chess.


🕸Fergus Duniho wrote on Fri, Nov 15, 2019 04:16 PM UTC:

Is there any French speaker here who can provide an accurate English translation of this? Google translate is not good enough to make it clear.

Les échecs marseillais sont une variante du jeu d'échecs où chaque joueur joue deux coups à la suite. En plus des règles du jeu normales, les joueurs doivent respecter les règles suivantes :

  • Un joueur en situation d'échec doit parer l'échec au premier de ses deux coups.
  • Si un joueur fait échec au roi au premier coup, il perd la faculté de jouer son deuxième coup.
  • Si après avoir joué son premier coup, un joueur se trouve dans une situation où il lui est impossible de jouer un coup légal, il est déclaré pat.
  • La prise en passant doit être effectuée au premier coup sauf si deux prises en passant sont possibles. Dans ce dernier cas, les deux prises en passant peuvent être effectuées à chacun des deux coups.
  • L'avance de deux cases des pions depuis leur position initiale ne peut pas être considérée comme un coup double (avance de deux fois une case). Donc le joueur peut jouer ensuite son deuxième coup.

H. G. Muller wrote on Fri, Nov 15, 2019 07:08 PM UTC:

About the FEN: is this really needed? Why would one ever want to have a FEN for a position after the first move? In orthodox Chess we also do not have a special form of the turn indicator for positions half-way a castling, where the King has already moved and the Rook is yet to move. Or in Chu Shogi, for after the Lion made the first leg of a locust capture. The exceptional case for the initial position can already be recognized from the full-move counter in the FEN.

[idea!] Why not use a fraction on the full-move counter if you want to do this?  E.g. move 10.5 would mean after the first half of the 10th turn of the player on move.

As to legal move generation:

It seems to me that a Marseillais Chess cannot be implemented without some dedicated code that would be useless in single-move variants. One task for this code would be to score a stalemate after the first move different from one before it, namely as an illegal position (whatever score you want to use for that) rather than a draw. A second task should be to treat first-moves  that get such a score as illegal moves, i.e. ignore them, and correct the legal-move count that might have been made during move generation for it. This would need a 'delayed' mate detection to handle the case where this count hits zero because all 1-move-legal moves turn out to cause self-stalemate the player, aborting the node with a checkmated or a draw score depending on the in-check status.

It should be clear that you cannot judge the legality of a turn before you have seen the full turn. So that would be 2 ply in Marseillais, and a progressive number of ply in Progressive. If you wouldn't try the last ply of the turn, you could never know if the turn can be legally completed. Unless of course the rules guarantee there always is a legal move irrespective of the position, e.g. because passing on the second turn is always allowed. If you do a full judgement on the legality of the position after the turn, one turn should be enough.

The reason I mentioned QS was because I assumed this would be required to detect the fact that the previous ply exposed the King. The assumption was that the root node of QS would start generating moves, and detect that one of the moves captured the King before really searching any. And then abort with a very happy score. So it would always be a 1-node QS, or a dedicated King-capture test, if you want. Depending on the variant there could be simpler ways to detect King capture than generating all moves and see what they hit. E.g. making all possible retrograde captures from the King, and see if they hit an enemy that reciprocates one (sometimes referred to as the 'super-piece method').  Depending on the complexity of the moves in the variant the super-piece method might be cheap or very expensive. (E.g. bent sliders, Cannons or Fire Demons are a pain.) Just generating all prograde capture moves, which you must be able to do anyway, is always a sure method, though.

How much extra you need compared to the turn you want to judge the legality of unavoidably depends on how complex the conditions for legality can be in the variant at hand. Take the Shogi Pawn-drop-mate ban. To detect it you must be able to see that that the Pawn drop checks (which is of course trivial), but that every conceivable reply move is illegal (exposes your King, or perhaps (worse) completes a perpetual checking cycle). So that is two turns plus a King capture test.

But it can be worse. Imagine a variant where it is illegal (rather than just losing) to expose yourself to mate-in-1 (rather than just to King capture). To judge a move you then have to take into account all replies that check, and then all evasions to any of those, to see if these expose the King. That is 3 ply + 'QS' (or 2-ply + mate-test). Imagine a variant where it is illegal to check when you cannot continue checking until you checkmate. (Tsume Chess?) Far fetched? Take the chained release moves of Paco Shako, implemented as a multi-move turn. It is illegal to release a piece from an embrace (by jumping into it) if the released piece cannot find an empty square to go to, an enemy to enbrace, or trigger another legal release. You will have to verify that at least one chain of releases (no matter how long) exists that terminates. There is just no predicting how many ply it can take.


H. G. Muller wrote on Fri, Nov 15, 2019 07:21 PM UTC:

French translation:

Marseillais Chess is a chess variant where each player plays two successive moves. On top of the rules for the normal game, the players must honor the following rules:

  • A player that is in check must evade the check on his first move.
  • If a player checks a King with his first move, he loses the capability to play a second move.
  • If, after having played his first move, a player finds himself in a position where it is impossible to play a legal move, this is considered a stalemate.
  • En-passant capture should be performed with the first move, except when two e.p. captures are possible. In the latter case, the two e.p. captures can be made in each of the two moves.
  • Pushing Pawns two spaces beyond their initial location cannot be considered a double move (two advances of one space). So the player can make his second move after that.

 


Greg Strong wrote on Fri, Nov 15, 2019 10:27 PM UTC:

About the FEN: is this really needed? Why would one ever want to have a FEN for a position after the first move?

Really?  FENs are useful.  For example, the CECP setboard command.  I think the fact that ChessV will give you the FEN for the current position or load a new position by FEN in any game to be a useful feature.

[idea!] Why not use a fraction on the full-move counter if you want to do this? E.g. move 10.5 would mean after the first half of the 10th turn of the player on move

I'm sorry, but I don’t like this at all.  Instead of adjusting the side-to-move from “w2” to “w” and then to “b2”, you are going to go from “w” on move 10, to “w” but on move 10.5, and then to “b” and roll the move counter back to 10?  That is not cleaner than my approach.  And my approach is cleanly extensible to Progressive Chess

It seems to me that a Marseillais Chess cannot be implemented without some dedicated code that would be useless in single-move variants.

It is certainly true that allowing multi-move variants requires extra code.  So the goal was to add this capability in a modular fashion that is not specific to Marseillais.  ChessV has Rule objects which can be plugged in to enable various capabilities.  To support this, I made a special type of Rule called a MoveCompletionRule which handles updating the side-to-move when moves are made or unmade.  Every game must have exactly one of these.  Unless you are playing a multi-move variant, you just leave the default in place which just oscillates between white and black.  Other implementations can do more complex things.  The MarseillaisMoveCompletionRule can be plugged into any game – add it to Capablanca Chess and you have Marseillais Capablanca with one line of code.

It should be clear that you cannot judge the legality of a turn before you have seen the full turn

Well, this is what we are discussing... I wish to avoid that complexity, which I consider unnecessary and possibly undesirable, at least for Marseillais.  But you do have one excellent point, which is:

Take the Shogi Pawn-drop-mate ban.

Yeah.  That’s a problem.  I may not be able to avoid this issue long term since I deffinately want to be able to support Shogi.  I think that rule did cross my mind previously and I immediately pushed it to the side so as not to give myself nightmares.  Say, I wonder if Zillions can handle that rule?  I bet it can’t.

The other examples you give, like Paco Shako – are probably not going to happen – at least not unless other programmers start assisting me.  ChessV is now up to 400 files of source code.  It’s a ridiculously ambitious project for one guy in his spare time.  Some things just aren’t going to happen.  Unless I win the lottery.  Or find a wealthy benefactor.

The reason I mentioned QS was because I assumed this would be required to detect the fact that the previous ply exposed the King

That’s not how I am handling it.  One of the messages a Rule object can accept is MoveBeingMade – upon which it can update internal information (in the case of the castling rule or en passant rule), but it can also rule that the move is illegal.  The Checkmate rule handles MoveBeingMade, checks to see if the king is attacked, and rules the move illegal if it is.  And, determining if a square is attacked is also routed by message passing.  Butterfly Chess includes a CaptureByAdvance rule which handles the Advancer’s capture ability.  So the Checkmate rule handles MoveBeingMade, fires off IsSquareAttacked messages, which are picked up by the CaptureByAdvance rule.  So Butterfly Chess has both capture-by-advance and check/checkmate/stalemate without either Rule object knowing anything about the other!  Beyond that, support for Butterfly comes entirely from the scripting language - no C#, entirely plug-and-play. Computationally very inefficient, hence my lousy nodes-per-second, but that’s how ChessV is able to play such a wide variety of games and how I am able to add support for new games very quickly.


H. G. Muller wrote on Sat, Nov 16, 2019 08:47 AM UTC:

Yes, FEN is very useful in general. What I was questioning is whether it would be useful to design special FEN conventions for representing game states halfway a turn. I have never seen an orthodox-Chess puzzle like "white mates in four after he has touched his Rook", or people pushing for a FEN field to indicate which piece has been touched. Or a Chu Shogi problem that said "white mates, now that he has captured a Gold something with the first leg of his Lion move. Neither can I imagine why you would want to load a position half-way a turn in a GUI or engine.

 

More later


Greg Strong wrote on Sat, Nov 16, 2019 04:25 PM UTC:

Ok, I see.  Yes, probably representing positions in the middle of turns would not be common.  But since ChessV considers the legs to be different moves, I needed to do something.  I don't want to break the property that everything has an FEN.


H. G. Muller wrote on Sat, Nov 16, 2019 05:18 PM UTC:

But then I am not so happy that this requires an alteration of the normal (full-turn) FENs, which would require w2 and b2 stm field in your proposal. I would much rather have it that the exceptional partial-turn FENs would require something special. As the full-move counter is actually completely useless, and in balanced Marseillais the first turn is special in that it only allows a single move, recognizing half-turn FENs by artificially setting their move count to 1 would be OK with me.

The WinBoard Alien Edition would not consider positions half-way a turn not as game positions; when you step through the game later it would always alternate player between two turns, and show the effect of the pair of moves (like it was dealing with castling). Animation of the move might tell you the order.

As to the legality issue: I took the pragmatic approach in my Shogi engines as well as WinBoard: I do not consider Pawn-drop mates illegal, just losing. If checkmate is detected, its scoring depends on whether the previous move was a Pawn drop or not. So even without engine WinBoard allows the user to enter the Pawn drop, which then will end the game for him as a loss. For Shogi this is of course entirely justifiable. But it would not disturb me if Marseillais was treated the same; if we thing it should not be allowed to stalemate yourself after the first turn, just detect the stalemate and declare it a loss if the user elects to play into it.


🕸Fergus Duniho wrote on Sat, Nov 16, 2019 05:29 PM UTC:

Since you brought up the rule in Shogi against checkmating a King in Shogi with a Pawn drop, I checked how I handled it in Game Courier. I handled it similarly. After checking for checkmate in the Post-Game code, my code checks whether the checkmate was due to a Pawn drop, and if it was, it reports an illegal move instead of concluding the game.


H. G. Muller wrote on Sun, Nov 17, 2019 04:50 PM UTC:

I still wanted to comment a bit on legality checking and game-end detection:

There is no need to assign illegal moves the same score as a legal losing game termination. You can assign it an even lower score. This reminds me of the fact that there are many Xiangqi engines that prefer losing by perpetual checking over being mated in 1. But the behavior can entirely be controlled by setting the score for the various kinds of game termination; minimax or alpha-beta doesn't require a binary game outcome. (Luckily, or the heuristic evaluation would not be any good.) If losing by illegal move gets a lower score than any form of losing by legal means, minimax should always avoid it. Unless the game rules themselves are incomplete, and allow you to manoeuvre by legal moves into positions where you have no legal moves, but which are not defined as terminal. (Most common case of this is failing to define stalemate as game end in games where the goal is King capture, under the false assumption that you will always have pseudo-legal moves.) Even in that case the illegal-move score will merely show up in the root as the most dishonorable form of losing.

It is useful to distinguish 'direct' termination conditions (detectable from the move or piece counts, such as King capture or baring) from 'indirect' ones (depending on the location of pieces and how they move). 'Check' is already a complex condition, defined in terms of pseudo-legal moves. 'Legal' (and thus illegal) are again defined in terms of check. And 'checkmate' is defined in terms of 'legal'. These definitions taken at face value often imply search, being of the form "there must not exist a move that ...". The definition of checkmate even involves a two-ply search, as it requires all pseudo-legal moves to be searched for legality, which again requires all replies to be examined for King capture.

Now it is very possible that there exist shortcuts for doing these searches, e.g. check detection through the super-piece method, or mate detection through estabishing that the checker(s) cannot (all) be captured, nothing can be interposed to block the check(s), and the King has nowhere to withdraw to. This is pretty well developed for orthodox Chess, but can get arbitrary complex in arbitrary variants. E.g. for determining whether a square is attacked when there are hoppers, bent sliders or locust capturers around (not to mention Coordinators, Immobilizers and Pincher Pawns). The super-piece method requires generation of retrograde captures, which must be handled by dedicated code, which can easily be inconsistent with the prograde move generator used in search. And for mate detection, what if there is a Lion around that can capture two checkers in one move? Or capture one, and block the other? What if there are bent sliders, that can both be blocked on a single square? What if the checkers involve a hopper, and its mount can move away, capturing or blocking another checker? How do I determine whether a locust capturer will attack me after the evasion? If I just stick to the official definition of these game concepts I only need prograde pseudo-legal-move generation, and there is not nearly as much that could go wrong.

You mentioned the 'beaten path', but you should keep in mind that this is the path used by developers of engines for orthodox Chess, and thus might not necessarily lead to where you want to be. No matter how much smartness you built into your engine for more efficient detection of the game-end conditions, it will never hurt to be prepared for game rules where these shortcuts fail, and some illegal moves escape your dedicated detection for those. So I would recommend to reserve a score for 'illegal move', (which, with checking rules, would be the negated score of capture or extinction of royal(s)), so that your engine will not crash if you inadvertantly run into a King capture. And in any node detect whether enough of the moves you thought to be legal are indeed legal, so that you would not have to declare game end after all (with an appropriate score different from the illegal-move score, like a draw or a distance-to-root-corrected losing or winning score). Which is pretty easy by starting bestScore at the illegal-move value, and see at the end if it stayed there. In cases where your dedicated game-end detection fails, your would then have a safety net in the engine. As for the GUI, you could always subject all moves to a search to make sure they are legal, and make the depth of this search a parameter of the variant, which can then be increased for variants with unusually complex game-termination rules.


Vighnesh Jadhav wrote on Sat, Jul 16, 2022 02:43 PM UTC:Excellent ★★★★★
Marsellais chess has a rule where each player moves 2 pieces in the same turn. Castling is considered a single move. All other castling rules apply.

🕸Fergus Duniho wrote on Mon, Feb 5 07:36 PM UTC:

Now that Game Courier supports viewing past moves without loading a new page for each move, it has become easier to annotate games. So, I played a sample game of Marseillais Chess against myself, then annotated it in one window while viewing it in another. I also made some fixes to the code for generating an HTML form after annotating a game. I have included the game on this page as one more example game.


A. M. DeWitt wrote on Wed, Feb 7 05:20 PM UTC:Excellent ★★★★★

I have not played this game personally, but I must say, for a multi-move variant, this game was very well-made.

Also, the new circle symbol in GC for past moves is very nice. However, this functionality doesn't seem to work with hexagonal boards (like Hex Shogi 91's).


🕸Fergus Duniho wrote on Wed, Feb 7 06:25 PM UTC in reply to A. M. DeWitt from 05:20 PM:

Also, the new circle symbol in GC for past moves is very nice. However, this functionality doesn't seem to work with hexagonal boards (like Hex Shogi 91's).

I have now added it, but it reverses the significance of the circular and square borders, as I was already using circular borders for hexagonal boards. So, the general rule is that the border shape best fitting the shape of the space is the main one, and the other border shape may be for earlier moves (as in Marseillais Chess) or side effects (as in Hex Shogi 91).


80 comments displayed

Earlier Reverse Order Later

Permalink to the exact comments currently displayed.