Rule-based programming in interactive fiction

This past weekend I gave a talk on Inform 7 at Penguicon, an SF-and-open-source convention in Michigan.

The slides and the text (modulo the umms) are now up on my web site:

Rule-Based Programming in Interactive Fiction

This is not an Inform 7 tutorial. (You can find those on the Inform 7 web site.) Nor do I discuss I7's natural-language syntax. Rather, I try to explain the underlying programming model, and why it exists. I then go on to talk about my crazy ideas for a completely rule-based language, which is not Inform 7, but might be a future mutation of it.

The talk went nicely, in case you were wondering. About eight or ten people showed up, which is pretty good for a programming lecture at 10 AM on a Sunday.

And while I'm at it, let me recommend Penguicon as a darn good time. I've never been to a convention at which Sarah Monette and Elizabeth Bear argued about fantasy, John Scalzi lectured on people skills, while -- in a room party upstairs -- some guys tried to get Debian running on a DEC AlphaStation 200. I've also never been to a convention where I got to be in a panel discussion with Jane McGonigal, the ARG guru.

All these things were awesome! Except the Debian install -- they seemed to be having trouble with that. Mostly because the hotel's wifi network was utterly, utterly crushed.

This entry was posted in Zarf on Games  and tagged  , , , , . Bookmark the permalink.

7 Responses to Rule-based programming in interactive fiction

  1. Denis Moskowitz says:

    Sounds like a great time, and your slides are fascinating. (Loved the CYOA too.)

    What was the panel you were on?

  2. cultoftheturtle.com says:

    Your rule based system reminds me greatly of functional programming languages, particularly haskell. It might be worth looking into, as they have a solution to the decision about which rule takes precedence already, although a pure functional language has it's own challenges, since variables can't change value;)

    Which, I know seems crazy but does work. I often wonder how it'd work for games, myself.

    Joe Tortuga

  3. Alan De Smet says:

    What are you using to generate your slides? They're sharp looking, and I'm guessing you have some sort of automated system to generate the plain-text versions of the slides, which is a nice touch.

    (Oh, and your CAPTCHA system disappears entirely if Javascript is disabled. A little "You need Javascript to post here" would be nice to let us NoScript fans know to turn it on here.)

  4. wordsonplay.wordpress.com says:

    I'm glad that at last someone is talking about the underlying formalism of Inform 7. Too much hullaballoo about the syntax has long obscured the more interesting question of the semantics.

  5. Andrew Plotkin says:

    Joe Tortuga: Hm. I'm familiar enough with functional programming (although not Haskell in particular). What rule-precedence solution are you thinking of?

    The closest parallel I know of in the functional realm is ML (it wasn't OCAML yet when I learned it). That lets you define functions with rules, effectively, using pattern-based dispatch. But the precedence is just the order you define, or so I recall.

    Alan De Smet: Uh... yes... I totally have an automated system to generate the plain-text versions. *Igor!* Get up here this instant!

    The slides were done in Keynote (from Mac iWork '09). It is a custom template, so I can take full credit for how they look. The text is slightly fuzzier than it should be, though, because I dumped them out as PNGs and then scaled them down with pnmscale. (I should have tried a couple of different scale algorithms, to find one that looks better on text.)

    The plain text was the result of twenty minutes of intensive copy-and-paste. And quote-unsmartening, and fixing line breaks... Sometimes you just have to do the work. (The IF community contains many more sight-impaired users than the average web site. Right? Right.)

    As for the captchas, I know, it's annoying. I think this is the default behavior of Movable Type blogs if you turn on captchas. Jmac is in charge of the site install, so I'll pass your comment over to him (if he hasn't seen it already).

    My other Penguicon panel was: "Jane McGonigal and Andrew Plotkin, of Alternate Reality Games and Interactive Fiction respectively, discuss designing a play world that balances interactivity and structure. What kind of world are you trying to build in IFs and ARGs? How is it different from the real world? What are the qualities of that world in terms of how it works, what it feels like, what it offers you... and how do you make the world inhabitable and interactive?"

    It wound up being very dynamic... which is to say chaotic... which is to say, we pretty much bounced from topic to topic without paying much attention to the official description. I don't think anybody was recording it, though.

    PS: blurry photo of me with Jane McGonigal! http://phodroid.com/09/05/brf8kg Yes, I am wearing my "I am not a werewolf" t-shirt.

  6. Andrew Plotkin says:

    wordsonplay: thanks! I'm hoping that Graham writes more about I7 as well, once he gets all the source code posted. (Which *is* happening, slowly.) He's a big fan of literate programming, so there should be a lot of internal documentation.

  7. Alan De Smet says:

    Thanks for the info. For the talks I give I also try to create good stand alone versions. And like yourself, I spend a distressing amount of time doing cut and paste. I was hoping someone else had found an easier way that I could pinch to save time. :-)

    The slides were fascinating. I've found Inform 7 to be fascinating since the first release, but your presentation gave me a another point of view into the sort of thinking that went into Inform 7, even if I7 isn't quite as pure as what you propose. And I'm always a fan of Orc and Pie.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>