Skip to content

#PROCJAM PuzzleScript + Tracery Inspiration

Thu 9th November 2017

This week is #PROCJAM. This is a virtual event taking place around the world, 4th-13th November 2017. It’s a bit like a game jam, but what you make is some software (or other artefact) that generates something else: it might generate stories, it might generate artwork, it might generate characters or levels for a game, it might even generate a whole game. It’s not strictly game related, but a lot of the work tends back towards games 😄

“making things that make things” ~ #PROCJAM 2017

I have been interested in modelling and marking up the structure of games (both digital and physical) since the start of my PhD, so while my doctoral research took a big detour into user modelling, adaptation and personalisation in technology-enhanced learning, in my last few months at the University of Southampton my research leaned back towards this topic, and specifically the idea of using these models of games to generate whole new games.

Two of the Masters students I supervised over the summer were interested in this area, so I had a number of conversations with them about the issues around whole-game generation. One of the points that grabbed my interest was the idea of generating mechanics and systems (“rules”, in simpler terms), and how to then generate sensible levels, given the rules aren’t known up front. This was somewhat inspired by Jonathan Blow’s observation at AIIDE 2016 (skip to 40:20 for an example from VVVVVV) that a games mechanics are a language, and a game level is communicating something with that language: sometimes the level designer tells a story, sometimes they play a joke on you, sometimes they subvert your understanding of the (virtual) world. These techniques are quite subtle, and they are open challenges in artificial intelligence, so making levels as nuanced as a human would make them is a tough thing to do robotically. I hypothesise it is even harder, but hopefully even more interesting, to generate levels when the mechanics are not even known in advance!

Earlier this year, I happened to be watching some old GDC videos on YouTube, and came across the Tech Toolbox for Game Programmers series, and in particular the one from 2016. This series is a great chance for game developers that have built useful tools to showcase them, and hopefully save other developers some time in the future.

I do not know if the ordering was intentional, but Kate Compton‘s talk about her excellent Tracery tool (which I first heard about when I visited Stacey at UC Santa Cruz), was followed by a talk about Stephen “Increpare” Lavelle‘s PuzzleScript engine (which I had seen in passing a few years ago and thought was cool). It was only when I saw the two side-by-side in this video that I had an aha! moment.

Tracery is a grammar-based tool written in JavaScript, that lets you define rules for generating text. In the video, Kate points out that lots of things have text-based representations, and therefore what things people have generated with Tracery: there’s SVG graphics, there’s MIDI music, and perhaps most famously Twitterbots.

PuzzleScript is a language and engine for building top-down, 2D, block-based puzzle games (think Sokoban or check out the gallery if you want an idea). The language lets you define objects, collisions, rules, win conditions and levels, in quite a straightforward, textual syntax. There’s a browser-based editor, which compiles your script into a playable version. You can even save the code to a github gist, at the click of a button, to distribute for others to play!

Text-based puzzle game representation? Grammar-based text generator? What could we do with that? 🤔 Basically since that realisation I’ve been hankering for the opportunity to experiment with what rules I could get Tracery to generate in PuzzleScript, and whether that resulted in any interesting gameplay. I decided #PROCJAM 2017 would be that opportunity, so keep an eye out for a couple more posts about my musings and progress.

One Comment

Trackbacks & Pingbacks

  1. #PROCJAM PuzzleScript + Tracery Rules | Rikki Rants

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

<span>%d</span> bloggers like this: