from alyaza@beehaw.org to gaming@beehaw.org on 28 Apr 2025 19:08
https://beehaw.org/post/19702694
I made a website. It’s called One Million Chessboards. It has one million chessboards on it.
Moving a piece moves it for everyone, instantly. There are no turns. You can move between boards.
What
Well last year I made this game called One Million Checkboxes.
It was a pretty fun time! So I thought I’d do something like this again.
I worked really hard on this one. I hope you like it.
How
This was the most technically challenging thing that I’ve worked on in a long time. I’m going to save a full technical writeup until I see how my decisions pan out, since I think there’s a decent chance I’ll need to make a lot of changes.
But I’ll summarize a few things for you.
- Unlike One Million Checkboxes, I designed this for scale
- The game runs on a single server (!)
- The board is stored fully in-memory; it’s a 2D array of 64 million uint64s
- The backend is written in go. This is my first go project.
- I use a single writer thread, tons of reader threads, and coordinate access to the board with a mutex
- The frontend optimistically applies all moves you make immediately. It then builds up a dependency graph of the moves you’ve made, and backs them out if it receives a conflicting update before the server acks your move.
That last part - optimistic move application with what games people sometimes call “rollback” - is about 1,600 lines of code that took me a ~7 days of fulltime work to write. I don’t remember the last time I wrestled with a problem that hard!
threaded - newest
the website: onemillionchessboards.com
Wtf? I love it XD Gonna try it out when i get home.
This is super cool. Well done!
hmm…
<img alt="" src="https://infosec.pub/pictrs/image/8f0ef86b-afc9-42f0-9d80-00418261cf58.jpeg">
hmm…
<img alt="" src="https://infosec.pub/pictrs/image/3e278e31-a864-4772-b68c-d301c44b9ca5.jpeg">
…and my axe!
<img alt="" src="https://infosec.pub/pictrs/image/913d9222-3c5d-4c5c-9bd4-5dbc32a1fd9d.jpeg">
I was taking a rook around and taking a bunch of pieces out. Found someone else making moves and antagonized them for a bit before moving away. I guess they followed me, because as I was taking out a back row on one board, the rook ambushed me as I took out a knight.
I just grabbed a queen and took out a ton of pieces unopposed.