Move around the board using WASD, Arrow Keys, or the mouse, or your finger. For mouse and touch controls, press along a cardinal direction from the player character and it will move in that direction.

Press the Spacebar or the left button in the bottom right corner to toggle between Push mode and Swap mode. Some obstacles can be pushed, and others can be both pushed and swapped.

Press R or the right button in the bottom right corner  to reset the room and try again.

Hover over objects on the game board to see a Hint about them on the bottom of the screen.

Reach the green portal to finish each level. Try to collect all the gold squares!


I wrote this little Boulderdash clone for Remake the Classics Jam. I started 5 days into the jam, messed around with basics for several after that, and I didn't finish as much of the game as I would have liked. Many mechanic ideas had to be cut, and the small collection of levels was made haphazardly on the last day of the jam!

Still, the game can be played and finished, so I am entering it in the jam anyway!


  • This game was written in C and uses SDL2, stb_image, minimp3, and some little libraries of my own. The web build uses Emscripten.
  • The game code itself is only 3758 SLOC spread across 15 files, excluding generated files for audio and sprites. A big chunk of that is for generating the asset files, so the actual amount of code for the game is closer to ~2500 LOC.
  • The web build of the game has a smaller compressed size than the native build.


Download 1 MB

Install instructions

Play in the browser or download for Windows. You should be able to extract the archive and run the game without any extra steps.


Log in with to leave a comment.

The player movement has been hard for folks to adjust to, myself included. It feels unresponsive because the game takes place in discrete “turns” that last about half a second, and the state of the game doesn’t change until a turn begins.

Obviously you want to allow players to start moving immediately, but doing this in a visually nice way while preserving the very rigid turn-based nature of the game turns out to be a hard problem.

If nothing but the player could move on its own, you could fake it and start a “movement turn” whenever the player moved, but with other things moving you need a way to lock everyone to the same rules to prevent weirdness.

There’s a very long discussion about this sort of problem vis a vis Jon Blow’s Sokoban game in Jai, in which he mentions having spent a long time solving this problem well:

So I don’t feel as bad for doing a poor job in the time frame of a game jam! I would like to figure out a good solution on some future game, though.

Some folks have been curious about how to solve particular levels, so I put up a little walkthrough: