Synchronous chess


Synchronous chess is a form of chess where moves by both players are executed simultaneously. Pieces move exactly as in ordinary chess, with the addition that the king may end up in check after a move (for winning conditions see below). In a given position any player can choose a move. The other player will not immediately learn what that move is. When both players have chosen then both moves will be executed simultaneously, resulting in a new position displayed to both players. It does not matter which player chooses first. Thus there is no difference between black and white (apart from the colour of the pieces).

This is possible since moves cannot interfere, because of the following. A player may make a move only to a square the player controls. A square is controlled by a player if it is attacked by strictly more pieces than by the opponent. A piece attacks all squares it can move to, and all pieces it can capture, and also the square where it sits. Controlled squares are highlighted (toggle the space bar to instead highlight the squares controlled by the opponent). A piece never attacks another piece of the same colour (since it cannot go there).

A pawn attacks the squares it can move to; in particular it attacks a square diagonally in front of it only if that square is occupied by a piece of opposite colour. For example in the position above, h4 is attacked twice by white (by h2 and Nf3) and once by black (by Qd8) and thus controlled by white. h3 is attacked by h2 and Bc8 and thus controlled by neither player.

A piece attacked by two opponent pieces is said to be frozen. Frozen pieces may not move, and can be captured by the opponent. A piece may be unfrozen by moves that make it no longer attacked by two pieces. Frozen pieces (of both colours) are shown on red squares. Above, d5 is frozen since it is attacked by e4 and Nc3. Here white can choose to capture d5 with pawn or knight. If black chooses Ng8-f6, then then any capturing white piece on d5 will be frozen, attacked by Nf6 and Qd8.

Castling moves require the king and involved rook not to be frozen, and both destination squares controlled. An en passant capture is possible if the captured pawn is frozen and the destination square is controlled.

A player wins the game by freezing the opponent king, i.e., attacking it with two pieces. A player also wins by checkmate, defined as there being no legal move and the king is attacked by at least one piece.

The game is drawn if both kings are simultaneously frozen or checkmated, and if either player is stalemated, i.e., has no legal move where the king is not attacked. The game is also drawn after 50 consecutive moves where no piece has been captured and no pawn moved.

Initially both players have three minutes on the clock, with a two second increment for each move. The clock of a player only runs down when the player has not chosen a move and the opponent has chosen a move. Thus, in a position where neither has yet chosen a move no clock runs.


The program is strictly peer to peer. When you start it, you get the following small window:

Here you can type in the IP number and the port number you wish to play against. By clicking Connect, the program attempts to connect. Or you may instead choose to wait for someone connecting to you, by clicking Accept.

Here the program remains until another player starts the program and connects to that IP and port. You can try it out locally by starting the program twice and write localhost for IP.

A variant of PSC uses fog of war: you only can see the squares that your pieces attack. To play with fog of war, both players must check the box.

Let me know of suggestions. Have fun! The program in a JAR file is here.


(c) Joachim Parrow 2023