Back issues



Related links




Interview: Graham Nelson

Graham Nelson has intrigued thousands of text adventure fans with his enchanting game "Curses", among others. He is also well-known as the author of Inform, a freely distributed, highly portable development system for writing text adventures, and has been involved in advising others on making use of it.

How did you first become interested in adventure game programming, and how and when did you get started? What kind of computer do you use, and what programming language(s) have you used in the past?

I'm a rather junior pure mathematician at Oxford University, aged 27: I mention my age because I was a child when Crowther and Woods' original "Advent" was being circulated across in the world in the late 1970s. My next-door neighbor, a senior executive at Digital UK, occasionally took me to play at weekends, in a hugely untidy maze of a converted biscuit factory in Reading. I was mesmerized, about 10 being the peak age for imagination. Then in my early teens, when the home computer bubble was blowing, I had one of the first, an Acorn Atom, and used to write primitive adventures on that. (In about 10K of memory, which taught me a lot.) The breakthrough was realizing that one could represent locations with numbers, giving each object a location variable...well, I was young. I still use Acorn machines, which are technically superb: I now have an Acorn Archimedes A5000 (which contains the old Atom operating system the way human DNA still includes that of early grasses). I use two languages, the excellent Norcroft ANSI C compiler and Inform.

What was the chronology of events in your development of Inform and Curses? How long did the different parts of Curses' game development and programming processes take?

Firstly, I never intended to write Inform! I had played a few Infocom games in the late 1980s (running under CP/M on a ghastly Amstrad), and admired them: I was curious about the run-time format and in early 1993 found some fragmentary documents on the Internet. I wrote to Mark Howell asking if there was a compiler, and he said "Many people have had many dreams". So I tried to fake a toy game file, to print "Hello World" and stop. Each time, nothing happened, and I thought, ah, I shouldn't have missed out the property default table, and coded a bit more. Eventually I found it had been working all along--but didn't show anything on screen until it had the first full page of text. I inserted 30 new lines, and suddenly my toy said "hEllO woRlD". (An hour later I understood alphabet shifting rather better!) My first real program factorized the numbers 2 to 100 into prime factors, for which I improvised an assembler: Mark's excellent disassembler helped me to perfect it. By then "zass", as it was called, was a horrid tangle of exceptions so I sat down with plenty of paper and worked out the underlying rules. I wrote these into a much simpler assembler, added "if" statements, code blocks, loops and an expression evaluator, and the result was Inform 1.

The first large Inform program was the hardest one, the parser. I was determined on all the Infocom trappings: asking questions to sort out ambiguities, in particular. Adding everyday Adventure verbs (take, drop, inventory) was simple: finally I threw away my silly test game and began "Curses". I had a rough design in mind already, and in about a fortnight had the attics, the Unreal City and the garden fleshed out. I should really have planned more carefully: for example, the game's least fair puzzle (changing the torch battery) dates from then. Some friends amused themselves finding a bug every ten seconds: I took it away, kept at it for a month or so over Easter 1993 and gave it to Richard Tucker and Gareth Rees to test. They sent me back another hundred bugs, and I filled out the game with a few more puzzles (such as the robot mouse). At the end of April I archived "Curses" and Inform, and announced them on the newsgroups. For a fortnight nobody at all emailed me, or posted a follow-up. Doesn't anyone care, I thought? It turned out my newsreader was broken, and hadn't posted at all. Once the announcements were actually heard, there was a slow but gathering response: by the end of the first year, an avalanche.

The first public "Curses" (release 7) was a little over half the present size: the catacombs, Alexandria and the village were missing, for instance, and these were gradually added in later releases. (It's now finished. The very last addition was the maker's mark of my 18th century ancestor, William Snelson the Clockmaker, on the parish clock.) Extensions were possible because Inform was getting better, with the help of real programmers, especially Bob Newell and Dilip Sequeira. By the new year of 1994, it had grown up into Inform 4 and could produce games twice as large. The language was still difficult to write games in, though (I wince when I look at the original "Curses" source code). I decided on a makeover and did this by writing an Inform version of "Advent", working from David Baggett's excellent TADS edition: on the way I improved the cosmetics of Inform until it looked object-oriented and comprehensible. In the nine months since, I've kept the language stable (though the parser has vastly improved) and worked instead on proper documentation: I'm rather pleased with the new manuals. I see Inform now as a gauche young adult, having got past the stage of growing out of his shoes every few months.

You've chosen to distribute Inform, as well as your games, free of charge. What was your line of reasoning in making this altruistic decision?

At the time the newsgroups had a rather elegiac "all the good games were written years ago" tone, and I hope "Curses" has contributed to a change in that attitude. I wanted to revive the "dead format" of the Infocom game, and persuading people is easier when they don't have to pay to listen to you. In the early Renaissance, Italian artists would wander round Roman ruins and say, well, we can build arches too...and I'm as vain as those artists. There are other kinds of profit.

Have you seen any interesting games that others have created using Inform?

Yes, but mostly ports from earlier systems, fragments and work in progress (I know about a dozen authors working seriously, and I do my best to help them with technical snags): Inform 5 is still rather new. I do recommend Jon Drukman's witty "Busted", since you ask.

Over the past few months, questions about Curses (and pleas for hints) have virtually precluded all other discussion on the interactive fiction newsgroups. What comments/questions do you hear most frequently? Any extremely odd complaints?

Remember that "Curses", being free, is circulated much more widely than shareware games (it has reached tens of thousands of players, the approximate sales level of a typical Infocom game at their height), so it gets more than its fair share of attention. It's frequently over-praised now, and I've enjoyed watching a generation of "angry young men" critics beginning to say, well what's so good?

The most frequent complaint is that it's hard. True: it's a hard game to win (though surprising numbers of people do, and I tried to put much of the best material in the late middle game, to reward persistence). Also, many people ask me how to use the secret debugging commands, apparently under the impression that I'll tell them.

In retrospect, what would you have done differently in designing Curses?

I like the eclectic feel of the game, the wide range of puzzles: so I'd keep that, even though it looks incoherent in places (especially to people who miss the better-hidden clues). I might make it a little smaller: as it is, there was a draft which had a good 20 or so extra rooms, but my play-tester Michael Kinyon and I never felt happy about them and I removed two entire regions. (Redrafting heavily after testing, incidentally, is much to be recommended: testing isn't just about bug-fixes.) What I would pay much more attention to are the few points where the player can inadvertently make a career decision. Most players end up back-tracking, though some actually enjoy this.

Please describe the demonstration files that showcase Inform's features.

First, "Advent", a simple game to implement but still a good one to play. Then there's "Toyshop", a dense little area filled with peculiar objects: examples for expert Informers. "Balances"--which I wrote in one and a half evenings, and isn't meant to be a serious work of art!--is a pastiche of the much-loved "Enchanter" trilogy, partly (I admit) for fun but mostly to demonstrate really awkward "parser" puzzles, such as lottery tickets numbered from 1 to 10,000, and indistinguishable objects which one can write names on. There are also some smaller examples, and a port of Scott Adams' "Adventureland".

There has been heated discussion on the IF newsgroups about the difficulty level and fairness of some of the puzzles in Balances and Curses. How do you respond to charges that some of your puzzles violate tenets of your own "Bill of Player's Rights"?

Guilty. But in mitigation I do mostly play fair, and am at least properly contrite about the few low blows in "Curses". I try to make puzzles range all the way from easy to hard (most are never complained about), and to leave many open at once. A deliberate choice on my part was for the player to continue to find new possibilities in the early Attic rooms far into the game: I think this builds atmosphere, though it means there's no neat division of the prologue from the middle game. Besides, players very widely disagree (especially with me) about what's hard and what's easy: and in a way, "I won, but it was a fight" is the best compliment a game can receive.

What plans do you have for future games? Is a Curses sequel a possibility?

I have been working on a more serious game, called "Jigsaw", for about 18 months (off and on), but don't hold your breath: it'll be a while arriving. The time has mainly gone on getting Inform into a decent shape for public use. I suppose the plot of "Curses" makes a sequel conceivable (when compared with, say, the plot of "Hamlet") but none is planned.

Who are your favorite authors? And what are your favorite computer games?

I greatly admire the poetry of Philip Larkin and Primo Levi, writers who have absolutely nothing in common but their initials. Besides them, Auden, Eliot, Donne, Browning, Elizabeth Bishop: more predictable choices. For plays, Tom Stoppard, Christopher Hampton, David Hare. My favorite novel, I admit it, is John Christopher's trilogy "The White Mountains", "The City of Gold and Lead" and "The Pool of Fire": notionally for (older) children, but infinitely more sophisticated than, say, Tolkien. His prose is not flawless but his plot, characterization and atmosphere are.

In my view the best adventure games are "Spellbreaker" and "Trinity", coming up for its tenth anniversary. The modern computer games market depresses me: I think it's become like American TV. Nowadays, an "adventure game" means something like "The Seventh Guest", on two CD-ROMs, about 20,000 times as much code as the original "Advent" and about a tenth as clever or interesting. "Alone In The Dark" is better, admittedly. I had a serious "Tetris" problem at one time. Shoot-em-up games are all very well, but I prefer them abstract--old-fashioned as I am, I find reviews like "I saw tortured POW's, floating (dead) comrades...Great stuff!" (a genuine example) rather disturbing.

I've heard a lot about how portable Inform is to various systems because it works with so many interpreters. Would you elaborate?

The compiler itself will indeed run on most sensible computers (such as PCs and Macs) but the games it produces will run on practically anything, from personal organizers to mainframes. An "interpreter" is a program which will play an Infocom game file, whether bought from Activision (who currently sell the Infocom back catalogue at very low prices) or compiled by Inform. There are public-domain interpreters for virtually every machine (and it requires little effort to move them to new ones). So there's only one "Curses" program, and it runs identically on dozens of very different machines.

What is your view on future directions for interactive fiction?

I don't really believe in "directions" in art; the rope twists as you follow it, that's all. The "interactive fiction" format hasn't changed in any fundamental way since the early 1970s, in the same way that the format of the novel hasn't since 1700. (Don't believe the cyberpunks--the majority of authors aren't going to move over to hypertext just because the technology now exists, any more than they did to pop-up books, comics or television.) If pushed, though, I'd say that the next stage will be reached when it it's no longer true that about 75% of the best games were written in 1980e're on the way to that.

What other work/projects currently occupy your time? What do you do in your spare time?

This is what I do in my spare time! I'm a differential geometer and work on low-dimensional gauge theory and topology, at least when I'm not teaching. I've spent the week interviewing would-be students: as I sit typing this at 1 a.m., I'm listening to Bach's "The Art of Fugue". I write a small amount of poetry, rather slowly, but publish little.

In the Inform manual, you wrote "the author of a text adventure has to be schizophrenic in a way that the author of a novel does not." What are the most critical issues faced by the programmer in combining storytelling with game design?

The single biggest is to stop the player from getting stuck and getting bored; always think like the player as well as the designer. This means keeping many trails open at once, inevitably requiring a fairly "parallel" plot. This plot should be discovered rather than announced, so show, don't tell. Finally, don't forget to throw in distractions and sub-plots. This makes an unconventional story: long on situations which have to be faced sooner or later, short on chains of consequence and changes of heart or attitude.

From the player's perspective, finishing a good text adventure game can be a little sad in the same way that finishing a novel means leaving behind your favorite characters. What advice can you give for creating memorable game environments?

Atmosphere is enormously important and requires fine crafting. Once a genre has been adopted, stick fairly closely to it. If you're setting a game during the Cuban Missile Crisis, look through a library: find out what people were wearing, what other issues were in the news, how houses were furnished, what cars were being driven. Especially include things which now seem foreign: say, a puzzle which involves dialing somebody's name on a phone whose dial has letters as well as numbers (long since phased out, in Britain anyway). And, as I said before, I like to employ a form of repetition, in which the same elements recur but in different and unexpected ways: rather than being discarded as soon as they are understood or passed over.

What are the most valuable things you've learned about designing parsers for your games? To what lengths must a programmer go in anticipating the actions players will attempt?

Extremities, I'm afraid. There is no substitute for extensive play-testing. About one-third of the code in a good game will be devoted to blind alleys and responses to wrong guesses by players. I like to code up some ideas of my play-testers as alternative solutions: if they make sense and don't unbalance the plot, why not? As I recall there are now six different ways to open the medicine bottle in "Curses".

Writing a really general parser is a major but different undertaking, by far the hardest points being sensitivity to context and resolution of ambiguity. I suppose my main lesson has been not to take shortcuts. Less flippantly, that it is better to write a parser which understands too much (i.e. understands some strangely worded requests which it ought to reject) than one which understands too little (because it has too narrow a grammar).

[right arrow]Go to the next page in this issue
[left arrow]Flip back to the previous page
[up arrow]Go to the XYZZYnews home page
This site is maintained by Eileen Mullin
Legal information