Check out Glinski's Hexagonal Chess, our featured variant for May, 2024.


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

Ratings & Comments

LatestLater Reverse Order EarlierEarliest
Game Courier Tournament 2019. Chess Variant Tournament to be played on Game Courier.[All Comments] [Add Comment or Rating]
dax00 wrote on Fri, Nov 15, 2019 06:53 AM UTC:

So, after two rounds of play, the current tournament results are:

[Pos) Name, Pts, #Wins, BS, SB, Black wins]                             

  1. Kevin Pacey, 5.5, 5, 11, 13.25, 3; 
  2. dax00, 5, 5, 11.5, 11.5, 2; 
  3. Carlos Cetina, 4.5, 4, 8, 10.75, 2; 
  4. Fergus Duniho, 4, 4, 9, 9, 3; 
  5. Greg Strong, 4, 4, 6, 6, 1; 
  6. Adam DeWitt, 3, 3, 3, 3, 1; 
  7. Jarid Carlson, 1, 1, 1, 1, 1; 
  8. Aurelian Florea & wdtr2 & John Davis, 1, 1, 1, 1, 0.

Marseillais Chess. Move twice per turn. (8x8, Cells: 64) (Recognized!)[All Comments] [Add Comment or Rating]
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.


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...


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 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.


🕸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: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 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:



🕸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 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.



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.


Frog chess[Subject Thread] [Add Response]
H. G. Muller wrote on Thu, Nov 14, 2019 09:45 AM UTC:

Capablanca Chess has about 16% draw rate between equal players, compared to orthodox Chess about 32%. (That doesn't account for the limit of near-perfect play, possibly with the aid of exhaustive opening theory that prevents mistakes before the game reaches the stage of a dead draw.)

Draw rates tend to fall for games within a group of players of very diverse strength, as many games will be a guaranteed win for the strongest player.


Kevin Pacey wrote on Thu, Nov 14, 2019 04:36 AM UTC:

I've added to my previous post with some edits, in case anyone missed it.


Kevin Pacey wrote on Thu, Nov 14, 2019 02:30 AM UTC:

If you mean the Frog Chess variant that I invented some year(s) ago, and submitted to this CVP website, I only know of the games that have been played so far on Game Courier (on this website), and at the moment there's been no draws in about 17 games (one opponent long ago deleted an unfinished game I had been playing with him, after he apparently realized he had been counting on an illegal frog piece move, that he tried soon enough).

However, other than myself, I don't know of any chess master who has played Frog Chess on Game Courier. Below elite player level in chess (that is, well beyond master level), draws are far less likely, in over-the-board games, simply because there are more mistakes made by non-elites, and it's assumed a very well played game of chess should end in a draw.

I don't know of the drawing percentages for Capablanca Chess, but on Game Courier (on this website), I wouldn't be surprised if there are next to no draws, even though many games have been played with it. Again, one reason would be that the players here are nowhere near world chess elite strength in terms of skill at chess or other chess variants, as far as I know, and my own guess is that Capablanca Chess is far from being an extremely drawish game (the same would go for Frog Chess). Lastly, it may be worth noting that there are no books on Frog Chess or Capablanca Chess (afaik), unlike for chess, so players of any level would be feeling their way in the dark rather more.

Here's a link to the logs of finished Frog Chess games as played on Game Courier so far:

https://www.chessvariants.com/play/pbm/logs.php?game=Frog+Chess&age=0&stat=finished

[edit: Here's a link to the logs of finished Capablanca Chess games played on Game Courier so far - one in 45 was drawn to date; it was one of my games, agreed drawn since there was a long delay before a bug to the preset was fixed, a bug which affected that game in particular:]

https://www.chessvariants.com/play/pbm/logs.php?game=Capablanca+Chess&age=0&stat=finished

[edit: Here's a link to the logs of finished Chess games played on Game Courier so far - ten in 159 were drawn to date:]

https://www.chessvariants.com/play/pbm/logs.php?game=Chess&age=0&stat=finished

[edit: For what it's worth, in International Master John Watson's 1998 book, Secrets of Modern Chess Strategy, he quotes monster chess database figures as 40-30-30 in terms of post-1965 White win-Drawn-Black win percentages for all levels of competitive tournament chess players taken as a whole, and says these rates have been quite stable; note the figures also mean that White scores 55%, and Black 45%, in terms of results.]


James Zuercher wrote on Thu, Nov 14, 2019 01:36 AM UTC:

How does Frog Chess compare with normal chess and Capablanca chess in terms of percent draws?


Marseillais Chess. Move twice per turn. (8x8, Cells: 64) (Recognized!)[All Comments] [Add Comment or Rating]
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.


Betza Notation. A primer on the leading shorthand for describing variant piece moves.[All Comments] [Add Comment or Rating]
H. G. Muller wrote on Wed, Nov 13, 2019 10:47 PM UTC:

I implemented a new enhancement of XBetza notation in XBoard, to be able to more precisely indicate generation of e.p. rights on oblique moves. 'Non-jumping' is an ill-defined concept for those; nN could be a Mao or a Moa, so with the existing convention ifmnN would not sufficiently specify what the blocking square (and thus e.p. square) is. For that a multi-leg description fully specifying the path is necessary, like mafsW for the Mao.

XBetza uses the 'e' modifier to indicate e.p. capture, as alternative to the 'm' and 'c' modality. But this only seems useful in the final leg of a muti-leg move. So I redefined the meaning of 'e' in a non-final leg to me an 'm' move that generates e.p. rights on its target square. This would make the double-push of a FIDE Pawn ifeafmW. (And its e.p. capture feF, which can combine with the normal capture to fceF.)

[Edit] On thecond thoughts I wonder if it wouldn't be better to use the 'n' modifier instead of 'e' for indicating generation of e.p. rights by a non-final leg, and reserve the latter for actual capture. When laying out a lame-leaper trajectory one will almost certainly use a stepper atom (W, F or K), and 'n' can never have its traditional non-jumping meaning there. OTOH, e.p. capture on a non-final leg is not completely out of the question: one could want to define an e.p.-capturing Checker, feafmF, where the 'e' on the non-final leg then means that leg should end on the e.p. square (by definition empty), and that the move as a whole leads to removal of the previously moved piece as a side effect. Double-push FIDE would then become ifnafmW to generate e.p. rights.


Marseillais Chess. Move twice per turn. (8x8, Cells: 64) (Recognized!)[All Comments] [Add Comment or Rating]
🕸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.


FairyGen. Generator for end-game tables with fairy pieces.[All Comments] [Add Comment or Rating]
💡📝H. G. Muller wrote on Wed, Nov 13, 2019 05:56 PM UTC:

Oops, my bad! Non-capture only is indicated by 'n', not by 'm'. I was mixing it up with Betza notation. :-(

So the non-capturing Rook (Betza mR) would be R: (1,0,sn*). An 'm' would be simply ignored; FairyGen checks for occurrence in the string behind the second comma for 'n', 'c', 's' and '*' only. You don't have to specify anything about captures if you don't want them.

Using (0,0) as step for a completely immobile piece might work, as the piece would see itself in the target square, and captures of friendly pieces is never allowed. It should not be needed, though. But there must be a space behind the colon, perhaps this was the problem.


Prussia General wrote on Wed, Nov 13, 2019 05:05 PM UTC:

HG,

the sm* code did not work, as I tested by defining a unit called S with the same movement of rook but unable to capture (0,0,sc*). This piece should have zero winning chances against a bare King. Fmax gave the exact same stats as a regular rook, so somehow it's ignoring the sc* part of the code.

yet a different note - for a piece that could not move, you need the 0,0 otherwise it would still give an error. also, can you define a unit that is immune to capture?


Marseillais Chess. Move twice per turn. (8x8, Cells: 64) (Recognized!)[All Comments] [Add Comment or Rating]
🕸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 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.


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 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.


Victorian Chess. Play Victorian Chess on Game Courier.[All Comments] [Add Comment or Rating]
Kevin Pacey wrote on Wed, Nov 13, 2019 09:07 AM UTC:

@ H.G.: I'd observe that if you've got a massive tome like Modern Chess Openings, which covers a lot of major chess opening lines (as well as some minor ones) for all kinds of chess openings, you may see that there are a large number of variations where at least one side castles queenside. Possibly White more often, I'd think, as he often can afford to play more aggressively - the rook comes to a central file in one move, and there's lots of cases in chess of opposite-sides castling, where the side that castles queenside often does so in order to launch a pawn storm against an enemy king castled kingside. However, sometimes one or both sides to castle queenside simply because it's safer to do so than castle kingside or stay in the centre.


25 comments displayed

LatestLater Reverse Order EarlierEarliest

Permalink to the exact comments currently displayed.