Announcing Choba, an experimental interactive storytelling engine

Over the last few weeks I have taken the interactive fiction engine inside Mainframe, the IF game Liz England and I made for Procjam last year, and have rewritten it in JavaScript. I’ve called it Choba, short for CHOice BAsed, and I’ve put it on GitHub and npm. It’s open source, just like Mainframe.

I’ve also backported it into Mainframe itself, so if you play it now, you’re no longer seeing a Python program running on Heroku, but a JavaScript program running inside your browser. (Doing just that has already been worth it. It means I no longer have to pay Heroku, it makes the game much easier to deploy, and I’ve already learned a lot starting a new JavaScript project.)

As you can see from the project’s readme file, I have future plans for this engine. Writing an actual parser, porting it to desktop and mobile, experimenting with different game types, better tools, and new procedural generation / narrative AI techniques: these are all things that have come a step closer.

I don’t recommend it for general use yet, but I do welcome feedback, and if you want to build a game with it, let me know how I can help.

More thoughts on tagging

I did some more thinking after yesterday’s blog post on tagging, and had an interesting discussion with Mike Cook and Chris Martens about how they approach similar problems. So here are some more thoughts on the subject.

Continue Reading »

Procedural content generation in Mainframe

The procedural content generation in Mainframe uses a very simple mechanism, which is both more powerful and trickier to implement and use than I expected at the outset. That mechanism is tagging. You tag bits of content, and then somewhere else you say you want something with a given set of tags.

One of my theses about interactive storytelling is that selecting, adapting, and combining bits of authored content is an approach that is powerful, underexplored, and pragmatic, in that it offers a smooth learning curve from simple and known to, I hope, complex and new. Mainframe is, among other things, an experiment with this approach.

Tagging is one of the more interesting ways to select content. I first saw it used in 2008 as the interface between the AI and the audio system in LMNO. Back then I was mostly impressed by how it reduced the production dependency between AI and audio.

In 2010 and 2011, I worked on an unreleased Diablo-like that used tagging to procedurally generate levels. I did a lot of work on the level design and tool chain. At GDC in 2012, I saw Elan Ruskin’s talk about the dynamic dialog system used at Valve, which used an advanced tagging approach to allow writers to create dialogues. In 2012, we used tagging to select texts in a mobile game. I remember vividly how the actual tagging logic consisted of one line of code, but it took three of us a day to write that line. (It was a LINQ expression in C#, if you’re curious.)

The system in Mainframe is really simple. The core logic is this function:

Continue Reading »

Repetition and procedural content generation

Last night I innocently tweeted:

And then I watched a movie (Pi! still great) and 90 minutes later I checked Twitter and suddenly I had 50 replies.

My tweet was a bit gnomic and lacked context, as tweets often do. I wasn’t talking about repetitiveness: I was talking about how PCG is used by game designers, beyond “hey look we can create a billion dungeons / planets”. Not that there’s anything wrong with that, but I am interested in using it in other ways.

In Mainframe, the IF game Liz England and I made for Procjam, one of my basic tenets was that we should design the game around repetition, because we were using procedural content generation (PCG). When you play it, you will quickly find the element of the game that repeats. Whether it feels repetitive is a different question, although we don’t claim it is not.

This tenet was something I intuitively picked as a design heuristic, but afterwards I started wondering how core it actually is. Is it essence or accident?

I had a lot of fascinating discussions about this last night, and I’ve thought about it some more, and I now think that using PCG as a game designer will always involve repetition in some way. (Again, I am not talking about repetitiveness. This is not about procedural content generation being “bad”.)

Continue Reading »

Mainframe, the procgen horror IF game Liz England and I made

Last year I wanted to do something for PROCJAM, Mike Cook’s “make something that makes something” one week game jam, but circumstances conspired against me. This year, I collaborated with Liz England, and we made a horror interactive fiction game called Mainframe. It’s about a spaceship and its mainframe and something is wrong and it needs help.

Making it was a great experience. I learned a lot, and I’m going to be talking about it more.

The texts, assets, and source code can be found on GitHub.

The conflict between game design and AI programming

A few days ago, Julian Togelius tweeted this:

I replied that I have an interest in AI, and I agree with the quote. Julian didn’t reply, but I was still motivated to write this small blog post. (Thanks Alex :))

I don’t, in fact, know the context of the slide in question, or Julian’s position. But it strongly reminded me of a problem I have encountered a number of times in my career: the conflict between game design and AI programming.

Continue Reading »

Why I’m not publishing the slides to my dark side of game development talk

I’ve had a couple of requests for the slides of my talk on the dark side of game development which I gave last year at ENJMIN, and last week at the Northern Game Summit in Kajaani.

After some thought, I’ve decided not to publish them. The actual slides are very spare, often showing just a single image or a few words, so they’re not very helpful. I don’t have detailed presenter notes (as I found to my dismay when I started rehearsing it again about two weeks ago).

One of the images is a portrait of a personal friend, and I feel weird enough using his photo as it is. Some of those words are “stress” and “depression” and “sexism” and “homophobia”.

Because I talked about sexism and mentioned some of the female friends who helped me with that section, I want to reduce the contact surface in case Internet idiots come across the slides.

This is a very personal talk, and I feel that only the actual performance – all the words I said, the way I said them, and the questions I answered afterwards – comes close to saying what I meant to say. This talk only works when I fully believe everything I say, it’s not a dry technical talk at all. Writing slides with full presenter notes that say the same thing would be very hard, perhaps impossible.

And both times the talk wasn’t recorded. Sorry!

If you want to get an impression of what I talked about, the resource post may be helpful.

Resources for my talk on the dark side of game development

Here are some resources to go with my talk about the dark side of game development that I gave at Northern Game Summit on October 1st 2015.

Talking to people

Effective Networking in the Game Industry – Darius Kazemi


Impostor syndrome

Kill The Goddamn Vulture – Richard Dansky

Your body language shapes who you are – Amy Cuddy (especially 16 minutes in)

Sexism, racism, homophobia, transphobia

1ReasonToBe panel (GDC 2013) – Leigh Alexander, Mattie Brice, Robin Hunicke, Kim McAuliffe, Brenda Romero, Elizabeth Sampat

Straight White Male: The Lowest Difficulty Setting There Is – John Scalzi

But WHAT CAN BE DONE: Dos and Don’ts To Combat Online Sexism – Leigh Alexander

Geek Feminism wiki

Misogyny, Racism and Homophobia: Where Do Video Games Stand? (GDC 2014) – Manveer Heir

Stress & Depression

The Belly of the Whale: Living a Creative Life in the Game Industry (GDC 2010) – Bob Bates

General tips for students

From Student To Designer – Liz England

100 things every game student should know – Kaye Elling


Again, many thanks to these ladies for their help with this talk.

The RSS feed of this site has changed

Following on from the previous post, here is the new URL to the RSS feed for this website:

Again, sorry for the inconvenience.


Update: Well, this is awkward. This post showed up in both the old and the new feed, even though I turned off the old feed on the WordPress side. I don’t even know how this is technically possible. Undead accounts, leeching content from beyond…

Still. Better change your RSS feed URLs just to be sure.

Update 2: So that old Google account was not dead after all. Why am I not surprised. I managed to regain access to it, logged into FeedBurner, and deactivated the feeds there with permanent redirection to the proper URLs.

Read this if you subscribe to the RSS feed of this site

The short story: I am going to change the address of the RSS feeds for this site. And I am going to do it today, and then I will create another blog post saying that I’m done. This blog post will also contain the new URLs.

If you do not see this second blog post on May 4th 2015, then you’re still subscribed to the old feed, and if you want to continue to read my blog, you will have to go to the site and get the new feed URLs. Which I cannot publish here for esoteric reasons explained below.

I apologize for the inconvenience. Also, if you subscribed to this blog by email through FeedBurner – and I have no way of knowing if anyone is doing this – then I apologize even more, because that will stop working entirely.

(Update: Changed “right away” to “today” because I am dependent on when RSS services like FeedHQ etc. query the current feed. So, eh, I’ll do it tonight at some point.)

Continue Reading »