Phantom of the Arcade

 By Shamus Oct 31, 2008 20 comments

Susan Arendt, my editor at The Escapist, has authored Phantom of the Arcade. It’s an old-school text adventure for their Halloween event, and it was written using Inform.

The creators of Inform call it, “A Design System for Interactive Fiction Based on Natural Language”. I wrote about it two years ago after giving it a try, and I pegged it for what it is: A programming language. At the time I said that trying to pretend that Inform wasn’t a programming language was misleading and likely to lead to frustration, and I also said that it can’t work. I have been proven both right and wrong. I asked Susan about her experience using Inform and she had this to say:

Using Inform can be maddening. Things like spacing can break your code, and the error messages will point to something that you know works. Let me give you a perfect example of what it’s like to use Inform: I wrote a proof of concept game first, just to show the folks here what I was envisioning (many of them have never played a text adventure). There was a locked door in the proof of concept. I copied and pasted the exact code I used to create the door in the proof of concept game into the code for the Phantom game, and it didn’t work. Can’t tell you why, just plain wouldn’t work. That sort of thing happens frequently.

That said, there are many ways to work around your problems. So even if you can’t get something to work the way it should, you can usually find a different way to achieve the exact same result.

Frustrations with the compiler, gripes about the way it’s parsed, problems with formatting, developing workarounds… sure sounds like a programming language to me. It’s a programming language with inscrutable rules that lures non-coders in with promises that they’ll be able to make an interactive fiction game without needing to program.

Susan sounds like a lot of programmers I’ve known (including the one that I see in the mirror every morning) who complain about the eccentricities and shortcomings of their chosen language.

But I must also eat some crow:

I’ll likely be doing another game in the future, now that I have a fairly solid knowledge of the Inform basics. I definitely need to leave myself more room for playtesting, though…all sorts of things went wrong that I never saw coming.

[...]

I, too, expected Inform to be much easier to use. I never expected to feel like I was programming… but Inform is definitely a programming language, no question. That said, it’s a language that’s far easier for non-programmers to pick up.

It is is programming language, but it’s a programming language that’s accessible to non-programmers. It does work. Susan made a game, and is planning another. The world of gaming is enriched, which is always the result of getting better tools. I was harsh on Inform, but you can’t argue with success.

As a coder I find the Inform syntax to be too formless, too vague, too… analog for my tastes. But then, I’m not the target user. I’m the guy the language was specifically not designed for. All the other languages were made for people like me, and this one is aimed at everyone else.

And just so you don’t have to scroll all the way back up, here is another link to Phantom of the Arcade.


20A natural twenty.


  1. Kel'Thuzad says:

    Happy Halloween.

  2. krellen says:

    Susan sounds like a lot of programmers I’ve known (including the one that I see in the mirror every morning)

    You should really ask that guy to stop following you into the bathroom, Shamus.

  3. Frac says:

    You might like TADS (Text Adventure Development System). Out of development forever, but it’s a very object-oriented language.

    And any language that includes the error “ERROR 2001: I’m sorry, Dave. I’m afraid I can’t do that” is ok in my book.

    tads.org

  4. Factoid says:

    I find it maddening that people who work (likely as writers, editors, reviews) at The Escapist had never played a Text Adventure before.

  5. Drew says:

    Well that was a nice way to spend a lunch break. Thanks for the link!

  6. One thing that ironically makes Inform 7 harder to get into for experienced programmers is that it has an odd paradigm. It reminds me of Prolog; instead of telling the computer what to do, you describe the situation and let it figure itself out. The relational stuff you can do is cool and crazy powerful, reducing some things that would be tricky in a other languages to something simple. Pathfinding through rooms, for example, is built-in and smooth. On the other hand, some things that would be simple in other languages, like calculating the Fibonacci sequence, are tricky and require obscure language features.

    Of course, I’m not sure why you’d want to calculate Fibo numbers in a piece of IF…

  7. Shinjin says:

    Of course, I’m not sure why you’d want to calculate Fibo numbers in a piece of IF

    Suppose you were to create an xkcd themed game…

  8. Illiterate says:

    Shamus,

    Think of it as a gateway language.

    You know, they tried inform, got hooked, and that leads to lisp or perl, and from there it’s java, actionscript, and before you know it they’re in a dark basement shooting c++.

  9. Shamus says:

    Illiterate: I hadn’t thought of that. Perhaps this is better than trying to convince Susan to write the next one in assembler.

    I keep telling her how much faster it will run, but she’s still resistant to the idea for some reason. I dunno what her problem is.

  10. Jeremiah says:

    Thanks for the link. I beat it, but can only manage 85/95 points. Gah! I shall have to come back to it after lunch.

  11. Clint says:

    I’ll second the recommendation for TADS. While Inform tends to be more freeform, the structure of TADS tends to result in more fully-realized worlds with solid support for standardized object properties (examine object, look under object, standard interaction verbs, etc). I’ve never approached it from a development standpoint, but as an avid consumer of IF, I can say that most of my favorite games are TADS games.

    Clint

  12. Groboclown says:

    I’ve written several games in Inform, and I have to say that Inform really shines when you use the alternate core library, Platypus. It allows for a much more expressive world than the default one.

  13. vdgmprgrmr says:

    I conquered and destroyed Phantom of the Arcade. I beat it with 115/95 points…

    SPOILER-CHEAT-BUG-BAD-BELOW!!!

    If you get the ET cartridge and give it to the ghost you’re supposed to give it to, then go back, you can get the cartridge again, and repeat the process, and still get points every time.

    SPOILER-CHEAT-BUG-BAD-ABOVE!!!

    As for IF languages and such, I dunno. I usually just stick with C++.

  14. Aaron Nowack says:

    Inform was the first programming language I ever programmed in… of course that was an older version that didn’t try the natural language thing.

    Now I kind of want to try to track down that game I started back then and look at it… but I’ve probably lost it three or four computer moves ago.

  15. Miral says:

    @vdgmprgrmr:
    It’s an easy mistake to make in Inform, but it’s also an easy one to fix :) You can insert the clause “for the first time” in all sorts of places.

    But yes, Inform 7 is definitely a programming language (albeit one with a somewhat natural language syntax). But I quite like it, and I’m not really the target audience either (I’m a professional programmer and an IF dabbler).

  16. SteveDJ says:

    Sadly, I cannot get the game to run. I’ve tried in the browser (Java) and downloading the player and the game. All I get is “Story file read error”. Is this game still being worked on? Did I just catch it with a bad update? I’m using WinXP.

  17. Pinkhair says:

    I don’t really remember anyone officially associated with Inform cal lit anything but a programming language. I personally have found it incredibly intuitive compared to the other languages I’ve programmed in.

    Personally, I find it to be closer to stage directions than to a novel. It is instructions for the cast and crew to interpret at showtime, with explicit stage dressing and timing.

    As for the copy/paste door problem, I have the feeling that the original game with the working door might have been using one of Inform’s extensions(Locksmith perhaps) to handle the doors, and so when she copied the code for that particular door the new game didn’t have the extension installed(usually done in the first lines of the sourcecode, just like most library includes in other languages).

  18. mark says:

    Is it really easier to fight an angry compiler with words than to use a clearly coded language?

    High level languages don’t shit themselves when theres an extra space here and there…

  19. I’m laid off from work now. So i been reading blogs all day and found yours. I found a lot of good info here. Thank you!

Leave a Reply

Comments are moderated and may not be posted immediately. Required fields are marked *

*
*

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun.

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!