If I keep harping on this, it’s because I’m happy. I want to share the excitement. Inform 6 is just ever so much nicer to use than Inform 7! I can’t even begin to tell you.

If you just wandered in from the music industry, you will have no idea what I’m talking about. This is about writing interactive fiction.

Inform 6 is, I suppose, old-school. It lacks the depth and complexity of TADS 3, and it lacks the cute veneer of Inform 7’s “natural language” syntax. There’s no integrated development environment, either. On the other hand, it is a full-featured development system for IF. It’s not a bogged-down “for dummies” system like Adrift or AGT.

Last night I found a terrific freeware text editor for Windows called Notpad++. This is an important piece of the puzzle. Notepad++ has a standard multi-tabbed interface (which Inform 7’s IDE doesn’t have, because Inform 7 won’t let you separate your source code into multiple files), plus user-configurable syntax coloring, auto-indent, brace matching, code folding, and bookmarks … and those are just the features I’ve found in my first day of using it.

There’s a raft of 3rd-party extensions for I6 on the IF archive, with which you can do things like build hint menus, parse the names of your in-game objects using adjectives that are separate from the nouns, handle objects like doors and locks more gracefully, and so on. There’s good tutorial material, from Roger Firth and others. To be sure, there are a lot more extensions for I7, but I’m not jealous. The nice thing about I6 is that it’s not difficult to build your own widgets, if you need to.

This afternoon I went through the list of unfixed bugs in the 6.11 library and did some tinkering with parserm.h and verblibm.h. I’d never want to try that sort of thing with the Standard Rules in I7, because the Standard Rules are a lot harder to understand — to say nothing of the template layer, which is the foundation on which the Standard Rules are built.

Once you pop the hood, Inform 7 is for experts only. It’s extremely complex. Inform 6 is a stroll in the park by comparison. And of course, I6 doesn’t limit you in any way as an author, because I7 compiles to I6 code as an intermediate step. So, by definition, Inform 6 can do absolutely anything Inform 7 can do. It’s just as powerful.

So, if all that complexity doesn’t actually gain you an ounce of power, what’s it good for? As far as I can see, it does two things. First, it’s the girders and plumbing for the “natural language” programming paradigm, which a lot of people seem to be attracted to. Second, it allows I7’s syntax (the stuff the author uses while writing) to be based on a concept of rules and rulebooks. Rule-based programming is quite different from more traditional or more mainstream object-oriented and procedural programming.

I happen to like object-oriented and procedural programming. It meshes well with the way I think. And I find the “natural language” paradigm more enigmatic than helpful. The syntax of Inform 6 is simple, consistent, and clear. The syntax of Inform 7 is fuzzy, inconsistent, and somewhat opaque.

Plus, from what I’ve read, I6 produces leaner code, which will quite likely run faster on a browser-based Javascript interpreter.

Old-school? Though this be madness, yet there’s method in it.

Advertisements

5 thoughts on “Getting Back to Basics

  1. It’s great to hear you be so happy with Inform 6. 🙂

    Myself, I absolutely love Inform 7, and wouldn’t want to go back to Inform 6. Writing Inform 7 code just feels more natural to me, and since I understand the power of rulebooks I really _love_ them.

    However, if you are not alone in your preference, and I’m sure you’re not alone, wouldn’t it be possible to get someone to adapt the Inform 7 interface to Inform 6? I would suspect that stuff like the Skein, the Map, and possibly the Index as well are generated from the Inform 6 code, not the Inform 7 code.

    1. Thanks for the comment, Victor. I’d love to see an IDE for I6, but it would be a lot of work, and I’m guessing there is probably almost no demand for it. In Windows, the Notepad++ text editor gives you very nice syntax coloring. Launching the compiler by double-clicking a batch file is easy, as is launching the interpreter by double-clicking the game file. Keeping the DM4 and Roger Firth’s guide open in Adobe Reader — again, very easy.

      The main stumbling block is having a test skein that will replay a long series of commands. It’s not too difficult to write a testing function that will move everything around as needed, in order to start the game at some point after the beginning — but that’s not quite the same thing as rerunning a thread in the skein.

      I believe some interpreters can load and play a transcript file, but I haven’t looked into that yet.

      An index would be nice too … but on the other hand, I know what’s in my game. I don’t need to consult the index for that. And I can find the library’s verbs by looking in Grammar.h. Again, that’s not difficult.

      1. Actually, you can use the Inform IDE for I6 projects — it’s an option in the “new project” dialogue. (This is at least true for OSX, since I tried it just now.) The Index and Documentation tabs aren’t much use, obviously, but you get the benefit of the Skein, syntax coloring, and the shiny Go button. There’s also an I6-specific “Debug” button which presumably makes more sense to Actual Programmers than it does to me.

  2. I love Inform 6 and will probably do all my IF work in that language. The biggest difference I see between I7 & I6 is that I6 is a programming language, an object-orientated language, and controlling room descriptions with 10 Boolean flags won’t slow your game down. If you think like a programmer this language should work for you. I7 is its own beast, I’m sure it works for a lot of people, but it’s not the type of programming I’m interested in doing.

    You couldn’t have picked a better language Jim 🙂

  3. Just for kicks, I tried creating an I6 game in the Mac version of the IDE. It does indeed have real syntax coloring for I6 keywords, and it appears (untested) that you can add I6 extensions from the Settings pane. The skein seems to be there. This is all good.

    However: It’s usual to organize an I6 project as a bunch of separate files, which are joined to the main .inf file using Include statements. So I tried dragging one of my existing source files into the Source folder in the bundle that the IDE had created, and then Included it. Not only would the game not compile, the IDE summarily deleted my added folder from the Source folder.

    The idea of trying to create an entire I6 game in a single source file is not something I would care to contemplate. Possibly the other files could be added as extensions … but (a) you wouldn’t be able to edit them as easily in the IDE, and (b) there are many situations in which source files have to be Included at specific points in the .inf file. Verb modify statements, for instance, have to go near the end. It sort of looks like the IDE won’t let you control the point at which the Include happens, which would be a death-dealing deal-breaker.

    In any event, I feel disinclined to try scoping it all out. I’ll just use a text editor and a batch file.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s