While working on my Game Courier preset for Marseillais Chess, I got some ideas for improving it. But instead of just making a new variant of Marseillais Chess, I decided to create a game with the following design goals in mind:
The rules were shaped mainly by the limitations of Zillions of Games. Its limitations are more restrictive in many respects than Game Courier's, especially for me, given that I created Game Courier and can always add new features as I need them. Anyway, I didn't need any new features to program this game for Game Courier, and I didn't need to modify any rules to get it to work with Game Courier. So this game is principally the product of trying to easily program a game similar to Marseillais Chess for Zillions of Games.
The same as in Chess
The same as in Chess
Extra Move Chess is played like Chess except as follows:
You can also play this game with other people online, using Game Courier.
Here I will explain my rationale for some of the rules. Some of the rules simply echo the goals in creating this game and need little explanation. These include the rule allowing two moves, the rule concerning checkmate, and the rule concerning stalemate. I wanted checkmate and stalemate to happen at the beginning of a player's turn, because that is when they happen in Chess.
I made the second move optional to prevent a player from deliberately moving into stalemate. This would make it too easy for a player to draw a game he was behind in. As long as the second move is optional, a player who can't make his second move is not stalemated. Now, I could have accomplished this goal by making the second move mandatory except when none is available. But the only way I could program this in Zillions of Games would be by setting the "pass move" option to forced, and that would also allow the first move to be passed when one wasn't available, which would eliminate stalemate from the game altogether. To preserve the possibility of stalemate on the first move while removing the possibility of stalemate on the second, my only option was to make the second move completely optional. This is programmed in Zillions of Games as a null move for the piece moved in the first move.
This restriction is the simplest way to accomplish the following goals:
So that Zillions of Games would accurately recognize checkmate, I had to remove the possibility of moving out of check on a player's second move. Otherwise, Zillions would let the checkmated King move into check on a player's first move and out of check on the second. One way of doing this would be to prevent the second move altogether whenever the King is checked, but this would involve finding the King and checking whether it is in check for every single possible move. The overhead for this would make Zillions play poorly or even crash the program. In fact, when I tried an optimized version of this plan, it did crash the program. The much simpler option was to prevent any moves that could remove a check. This meant keeping a checkmated player from escaping check, from blocking check, and from capturing the checking piece. The first two could be done transparently. The easiest was to keep a checked King from moving on the second move. Stopping blocks was a bit trickier. It involves letting riding pieces move across the last piece moved when checking the King. This would stop blocks by making them ineffective. Finally, the easiest way to stop the capture of the checking piece was to disallow all captures on the second move, for Zillions provides no easy way for identifying the checking piece. This is why Extra Move Chess forbids capturing on the second move.
In addition to this, the rule prevents the capture of the King. The rule against moving the same piece twice prevents extended captures, but it leaves open the possibility of unblocking a piece with the first move and capturing the King on the second. The rule against capturing on the second closes this possibility, thereby allowing this game to be won by checkmate, not King capture.
It is a capturing move, and for the reasons given above, all capturing moves are limited to the first move.
Since a player can make only one capture per turn, a player can make only one en passant capture per turn. So, if I allowed two double Pawn moves on the same turn, only one could be captured by en passant. The en passant rule was added to Chess to diminish the advantage of double moves, and I want it to do the same in this game. Besides that, it would require much more overhead for Zillions of Games to keep track of two different Pawn moves and to allow en passant for either one of them. Likewise, it would require more overhead to allow only one double move per turn on either move. The simplest way to allow both double moves and en passant in Zillions of Games is to allow them on consecutive moves, namely the last move of one player and the first move of the next. This allows them to be programmed in Zillions of Games with no more code than it uses for them in Chess. In fact, it uses the same code.
In Marseillais Chess, there is a rule against making the second move when the first move checks the King, and this rule does the job of preventing a piece from capturing the King, which allows the game to be won by checkmate, not capture. Extra Move Chess already includes a restriction that does this job, namely the complete ban on capturing a piece with the second move.
Although the rule in Marseillais Chess does the further job of making checkmate more difficult, this is needed more in that game, because it already makes attacking easier. There is less of a need for this in Extra Move Chess, which is much closer to Chess in the attacking ability it gives to each side. Also, given that it lacks many of the tactical possibilities of Marseillais Chess, it is nice for it to have some of its own.
Besides all that, such a rule couldn't be easily programmed in Zillions of Games. It would require code almost identical to the code needed for stopping a second move when one's own King is in check, and that would either slow down Zillions of Games or crash it.