Resistance Is Futile

I have recently changed my name to Andrew Borg (from Kashin), so my personal page now lives at a new address - aborg.dev. The previous address akashin.me is still serving, but is now deprecated.

I'm gradually migrating my other accounts, e.g. aborg-dev on GitHub.

Grid Game Toolkit

I've always wanted to have a tool to quickly prototype various grid-based puzzle games like Crosswords, Sudoku, Hashiwokakero, etc. Sure, pen-and-paper can get you pretty far, and we used it extensively for our last Ludum Dare entry Skyland, but it is a bit clunky to share when your playtesters are located remotely.

After looking at many examples of such games (krazydad has been an amazing resource), I think they all use a very similar vocabulary:

  • A grid of fixed size (but possibly with irregular shape)
  • A fixed set cell types (with numbers, symbols, lines)
  • On-the-border or around-the-border hint system (using numbers or colors)
  • Solution can be fully expressed on the grid as a static snapshot (unlike many videogames like Sokoban or Snakebird where you need to record a sequence of actions)

So I decided to build the Grid Game Toolkit, a framework for building such games with the following goals:

  • Adding new games should be easy with minimal programming skills (e.g. with scripting or Rust trait implementation)
  • Should work well both on desktops and on touch-based devices (I really want it to work on my Android-based e-reader)
  • Can import puzzles from major providers like crossword newsletters and sites like https://www.nonograms.org/ as well as from PDF-based sources
  • Have built-in puzzle editor with a programmatic solution finder

It's a perfect opportunity to learn Rust better, so I will be using Bevy game engine that worked well for our previous game jam.

The MVP will support Japanese Crosswords, Sudoku and one more puzzle type. I hope this will be diverse enough to expose important design decisions, but also small enough to implement over the winter holidays.

If you want to stay in the loop, I will be posting regular development updates on Mastodon and will be using this blog for longer posts.

Till the next time!