Show HN: Conway's Game of Chess

Show HN: Conway's Game of Chess

Chess, but each square also follows the rules of Conway's Game of Life.

Only your own pieces count as neighbours when deciding births/deaths.

For births, an empty square must have 3 neighbours for 2 consecutive turns.

For deaths, a piece must have <2 or >3 neighbours for 3 consecutive turns.

This is a simple proof of concept I made with python and curses.

You can play with a friend locally or over a socket connection.

Controls: Arrow keys to move the cursor, enter/space to select and move a piece, u or backspace to undo a move, r to redo a move, q or escape to quit, s to perform a move with stockfish if installed (useless since it has no knowledge of this variant), any other key to unselect a currently selected piece.

GIST.GITHUB.COM
80
7
elesiuta

Comments

@cypherpunks01

I was just thinking of this concept except for Go instead of chess. Has anyone done this or have thoughts on how it could work?

@elesiuta

That sounds like it could be fun! The multiple turn delay I used for this may help solve some of the problems of the pieces dying immediately at the start, and for the end game where too many deaths would cause the game to drag on. Births could probably have a smaller delay than deaths. I could see this make for interesting plays by opening holes in your opponent. There's also the choice of whether births/deaths take into account all neighbours or just your own pieces.

@EricMausler

I'm just a wannabe game designer, but what comes to mind for me would be to apply an entire board Conway update every X (4?) turns.

I think it would be a bit easier to mentally manage than having every piece on its own count

Might give an edge to whoever goes second, because they will have more control on creating overpopulation conditions right before an update, which would offset first move advantage

@inkcapmushroom

Make it happen every 3 or 5 turns then, so that it flips back and forth.

@zzo38computer

Wouldn't it be better to use the chess notation, to enter the letters and numbers for which file and which rank you want, instead of having to move the cursor by arrows?

@elesiuta

Probably, but if I continue this I'd add it to an existing chess client, or at least use something better than curses. I was actually planning to do this before sharing, but after sitting on it for a while I figured it was better to just get it out there.

I used curses simply because it was quick to experiment with since I had some similar code from another game I could reuse.

@User23

I started reading this hoping for an ONAG representation of Chess.

Still pretty cool though!

@raldi

This would really benefit from a few screenshots.

@geek_at

They moved the gist to this repo [1]. Since it's text based they kind of have a screenshot in the new Readme

https://github.com/elesiuta/conways-game-of-chess

@raldi

Yeah, but an animated GIF or a few successive stills would go a long way here.

@elesiuta

Just added one now!

@alexander2002

Can you fork lichess from github and publish the variant if it possible. Several sites already exist on this basis (PyChess, Lidraughts, LiShogi).

@elesiuta

If there's enough interest I'll consider it, and if someone else beats me to it even better! (I just ask for appropriate credit and to check with me before starting so there's no duplication of effort)

@nilslindemann

Raises hand interested!

@elesiuta

Thanks!!! It'll probably still be a while till I can get started on this (if I do), but I just created a new repo for this here if you (or anyone else) wants to get started before me! https://github.com/elesiuta/conways-game-of-chess

@acheong08

I think it would gain more attention as a GitHub repo instead of a gist.

@elesiuta

Thanks you're right, I am pleased this seems to be getting more attention than I expected so I moved it here https://github.com/elesiuta/conways-game-of-chess

@gorenb

This is a wonderful idea! Will work on this for Rust at some point.

@ddxv

Super fun idea!

I played a few games with myself, but noticed that the "Game over" message does not stop the game? Is it supposed to keep going after the king dies?

Also, I think some kind of legend would be very helpful. I was unsure what the lettering system meant, "w", "l", and "o". I get they are related to the rules, but was unsure what. I see in the code you have an epilog text, but I never saw that displayed when running the game, I think it would be helpful to see it while playing.

Finally, what rule dictates which pieces are born?

@elesiuta

Thanks!!

> I played a few games with myself, but noticed that the "Game over" message does not stop the game? Is it supposed to keep going after the king dies?

Game is over when that happens, I just didn't add in the logic to terminate or restart the game, so yes you can technically keep going.

> Also, I think some kind of legend would be very helpful. I was unsure what the lettering system meant, "w", "l", and "o". I get they are related to the rules, but was unsure what. I see in the code you have an epilog text, but I never saw that displayed when running the game, I think it would be helpful to see it while playing.

Good point, I just updated it to display before the game starts, before it would only show when running it with --help.

> Finally, what rule dictates which pieces are born?

There's a queue for each player which continuously loops over the list of pieces displayed, and they're popped from the queue to eligible squares starting from row 1 for white, and starting from row 8 for black, and from left to right.

@tragomaskhalos

Heh - checkmate not stopping the game was also a feature of Atari 2600 chess; always fun to carry on until the computer had no pieces left