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:
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, 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.
Top 64 Videogames
Lists of 'best games ever' are dumb and annoying. But like a self-loathing hipster I made one anyway.
A programming project where I set out to make a Minecraft-style world so I can experiment with Octree data.
Silent Hill Origins
Here is a long look at a game that tries to live up to a big legacy and fails hilariously.
Quakecon 2011 Keynote Annotated
An interesting but technically dense talk about gaming technology. I translate it for the non-coders.
Pixel City Dev Blog
An attempt to make a good looking cityscape with nothing but simple tricks and a few rectangles of light.
20 thoughts on “Phantom of the Arcade”
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.
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.
I find it maddening that people who work (likely as writers, editors, reviews) at The Escapist had never played a Text Adventure before.
Well that was a nice way to spend a lunch break. Thanks for the link!
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…
Suppose you were to create an xkcd themed game…
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++.
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.
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.
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.
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.
I conquered and destroyed Phantom of the Arcade. I beat it with 115/95 points…
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.
As for IF languages and such, I dunno. I usually just stick with C++.
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.
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).
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.
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).
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…
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!
Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun. Your email address will not be published. Required fields are marked*
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!
You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>