PuzzleScript Is A Simple Language For Making Puzzle Games

This is like my job before I started writing here.

When I spoke to Stephen “increpare” Lavelle last month, the creator of brainy puzzle game English Country Tune described his oeuvre as “pushing stuff around” games. That’s a good genre! It’s in my top ten, alongside “making people fall down” games, “staying inside the lines” games and “steering balls into holes” games.

Now increpare has expanded his work in the field by releasing PuzzleScript, an open-source puzzle game engine that makes it easy to create “pushing stuff around” games and all manner of other puzzles. It’s easy enough that successful indie designers like Terry Cavanagh and Bennett Foddy can make games in it in between the hundreds of other games they’re producing in any given second.

The PuzzleScript website gives a basic introduction to the language. Here’s a line that means, “If a player is trying to walk into a crate, try to push that crate.”:

[ > Player | Crate ] -> [ > Player | > Crate ]

The engine is powered by HTML5, which means every game runs in your browser without a prior install, and you can view the source codes for the game you’re playing and edit it in real-time. If I was to play just one, I’d recommend Farbs’ (of Captain Forever and Card Hunter) Dungeon Janitor, which has you tidying up some happy slime. Porpentine made her own recommendation yesterday.

PuzzleScript is easy enough to use that you can make a game in it quickly even with no prior game making experience. Check out increpare’s PuzzleScript tumblr for more examples of the creativity that happens when you make game development that little bit more accessible. Oh! Also, read this thing Cara wrote about one of increpare’s other games, Slave Of God.


Top comments

  1. zachforrest says:

    What's Graham doing here on Kieron Gillen's blog?
  1. Ricc says:

    Hi Graham! :)

    • RedViv says:

      Yes hello guy from that magazine wot came from the future and that casted crate pod! Welcome guy! Have a pleasant time!

    • Jams O'Donnell says:


      (I like Graham)

    • Premium User Badge

      Graham Smith says:

      Hello! <3

    • DiamondDog says:

      Look, I understand you’re new, but don’t think none of us noticed the absence of a pun in that title…

      Just a friendly warning before things get ugly.

      • VelvetFistIronGlove says:

        Betraying your own ignorance there. I guess the pun went way over your head.

      • DiamondDog says:

        Oh no.

        I’m just going to hide for a few weeks.

  2. The First Door says:

    I think you guys might have broken it! It’s not loading any of the games for me any more!

    EDIT: Ah, it seems it is now, it’s just running a bit slow!

  3. AshEnke says:

    I really like the graphical creation of both sprites and level with a simple ascii board.
    It seems really limited in what we can do with it but the examples are already quite varied so who knows !

  4. zachforrest says:

    What’s Graham doing here on Kieron Gillen’s blog?

  5. slpk says:

    That line of code makes absolutely no sense. If you’re trying to simplify, why use weird symbols and constructions when you could simply do:

    if playerABC walkingInto crate123 then push crate123

    • mike says:

      The code seemed totally opaque to me too, and so I looked through the docs. I think dude’s built it as a cellular automaton; each line of code is a rule. So you could do [ > Player | Crate ] -> [ > Player | BrokenCrate ] for a dude who bumps into crates and breaks them, or [ Crate | Player | Crate ] -> WIN to win the game if you’re between two crates. I’m still not sure it’s better, but it’s not for no reason.

  6. Aardvarkk says:

    G. Smith, Good lord!