boardlaw currently depends on Hex. Hex is an uncommon game, and that weakens a lot of what we'd like to claim. It'd be better if boardlaw used Chess or Go. I've avoided that so far though because they're much more complex games than Hex and they seemed much more painful to implement.
Aside from the central goal of this project, various folk in the Leela Zero Discord have said nice things about the performance of the boardlaw engine, and that makes me think it'd be interesting/valuable/publishable to carry the engine over to games people actually care about.
Work
Implementing either of these would involve replicating the work in the hex dir, which is to say:
Write a slow, single-thread Python implementation of the game just to make sure you know what's happening
Find a reference implementation of the game, likely from OpenSpiel
Check your Python implementation against the reference implementation by playing lots of random games on both and seeing that they give the same results.
Write lots of extra tests for edge cases that won't show up in random testing.
Write a fast CUDA implementation of the game and validate it in the same way.
Find all the spots in the rest of the engine where I've implicitly assumed there are no draws, and change that. Whups.
I think this is a week's work for someone already comfortable with Python and CUDA.
Chess
For consistency with Hex, output should probably be two 'planes'; one that picks a square containing a piece, and one that picks a square to move that piece to. Mask out invalid actions.
Most of the pain is going to be in implementing position repetitions, since that induces a lot of state beyond what's on the board right now.
As well as traditional chess, it'd be useful to have 'small board equivalents' for fast experiments. Minichess offers some options, but it'd be better if the smallest was even small than that. Two pawns on a 2x2 board maybe? Ridiculous, but a valuable debugging setup.
Go
Most of the pain will be in Ko fights. Don't know if there's any other off-board state?
Small-board equivalents are obvious and easy, hooray
Breakthrough
Breakthrough's a poor complement to Hex because it is similarly uncommon.
It is a simple, board-size-homogeneous version of chess though, and if we want to avoid implementing chess or Go but still get some diversity in the gameset, this'd be a good choice.
boardlaw currently depends on Hex. Hex is an uncommon game, and that weakens a lot of what we'd like to claim. It'd be better if boardlaw used Chess or Go. I've avoided that so far though because they're much more complex games than Hex and they seemed much more painful to implement.
Aside from the central goal of this project, various folk in the Leela Zero Discord have said nice things about the performance of the boardlaw engine, and that makes me think it'd be interesting/valuable/publishable to carry the engine over to games people actually care about.
Work
Implementing either of these would involve replicating the work in the hex dir, which is to say:
I think this is a week's work for someone already comfortable with Python and CUDA.
Chess
Go
Breakthrough