Solved the base-level headaches I was having yesterday. Huge sigh of relief. I now have a free IDE called Eclipse running a C++ compiler and a bunch of open-source graphic widgets called Qt.
So why on Earth would I want to get serious about learning computer programming? Glad you asked.
I’ve written several computer-based interactive stories. I find it a fascinating medium … but there’s no money in it. Software of this type is, with very few exceptions, downloadable for free. Since I’d like to have a little money coming in, it’s very natural to wonder how I might be able to sell an interactive novel, either direct to customers or to a real publisher.
The tools for actually writing the stories (namely Inform 7 and TADS 3) are amazingly sophisticated and powerful. But they don’t create free-standing software. They create a story file that has to be loaded into and run within a program called an interpreter (‘terp’ for short). And the appearance and features of the available interpreters have lagged far behind the story development software. Though a few bells and whistles have been added over the years, the existing terps are basically thin wrappers around the kind of dumb text-only computer display that was common in the ’70s. That display was modeled on an obsolete communications device called a teletype. So here we are, in 2008, playing interactive fiction games on a glorified teletype.
Almost none of the features that computer users take for granted these days — attractive graphics, multi-windowed displays, toolbars, dialog boxes — are available to the game author. That’s not a problem if you only want to write a game that others can download and play for free. If you want to interest a publisher, or even ask people to download the game for $25 and then rave about it to their friends, it’s arguable that you need to go further.
Inform programmers can write for a platform called Glulx, which can do multiple windows in a primitive way, by splitting the main window of the interpreter. I’ve never felt that this looked professional, and I don’t think I’m alone in thinking that. It’s better than a teletype, but it still looks like hobbyist software to me.
What would I like to see in a truly modern IF interpreter?
First, it should support VMs (virtual machines) that can run games written in Inform 6, Inform 7, TADS 2, and TADS 3 at the very least. Support for other languages would be terrific. The VM should be able to communicate behind the scenes (bidirectionally) with the terp using commands that could be embedded in the game. There are several reasons why I regard this feature as essential.
The author should be able to change the appearance of the main window. If I’m writing a story in a Medieval setting and want the text to look like a scroll, complete with decorative capitals that look as if they were inked by monks, I should be able to do that. If my story is set in a wrecked space station, I should be able to make the borders of the window look like a circuit board that has been half-melted in a fire. Okay, I’ll have to find or hire an illustrator; that’s just a detail.
The game should be able to open and manage multiple windows. If the author wants to put the player character’s inventory (the list of objects being carried) in a separate window as a convenient reminder to the player, that should be allowed. How about a dynamically updated map that shows the locations the player has visited? How about a notepad in which the player can write ideas of things to try? How about putting the hint menu in a separate window, so that the player can read it without leaving the main flow of the story? How about letting the reader bookmark memorable passages and return to them to read them again with one click of a bookmark button? All of these ideas and many others should be within the author’s grasp.
I can envision lots of other ways to enhance the experience of an interactive story for a paying customer — music and sound effects, illustrations, and so on. My ideas might not be the same as some other author’s. So probably what’s needed is not a single one-size-fits-all interpreter, which if powerful enough to do everything would be so unwieldy to develop that it would probably never see the light of day. What’s needed is probably an open-source interpreter developed with open-source tools, so that ambitious authors can customize it in whatever way they may desire.
Okay, you might have to learn a little about programming. But if you already know enough programming to write an interactive story, you shouldn’t faint at the idea of learning a little C or C++. And ideally, this sort of interpreter would come with its own tutorials showing how to get started. (I might even write the tutorials myself.)
Also, the IF community has a very active tradition of people writing extensions. Extensions extend the capabilities of your game: You can, for instance, download and use Adaptive Hints by Eric Eve, which will enable you to manage your game’s hints intelligently without having to work out precisely what sort of code you would need to write in order to do that. We can confidently expect that people would write extensions for a 21st century terp. Need to manage the top-level menus? Download an extension, define a few new menu items, and you’re good to go.
There are people who don’t want this level of involvement in the presentation. Some people just want to write a text game in the grand tradition. A new interpreter shouldn’t force them to do anything they don’t want to do.
There are also people who feel pretty strongly that the user, not the author, should be in charge of the look and feel of the game. In the case of blind or visually impaired users, it’s clear that certain software enhancements would undermine their experience or actively prevent them from playing the game. The smart author, no matter how fancy their presentation may be, will keep those users in mind and allow the extra features to be turned off. But should all authors be required to present their stories in an amateurish-looking, lowest-common-denominator, teletype window, because nothing else exists? That’s the situation at present, and I can’t see it as healthy.
At the moment, this new piece of software is just a dream. But it would be soooo cool….