So, my first attempt at writing IF started with a relatively obscure MS-DOS program called the Computer Novel Construction Set. This is actually an insanely cool program, a few minor annoyances aside. What I really liked about it was it’s unique windowing system.
Room descriptions go up top in their own bordered window. Player actions are displayed in a separate one, events in another, inventory listing in a thin one along the bottom, and “what you see” next to that. Command line below all of that. What I loved about that design was messages would stick. If something just happened, that text might stay on the screen for a while while you did other things.
The manual is superbly well-written. Everything was clearly explained. I never really felt lost until I tried doing things that weren’t supported. This little miracle program is ideal if you’re just wanting to create a VERY old school adventure, as you don’t write code. All the creation is handled through menus (also well designed).
There’s one glaring issue with it, though: there’s no kind of variable support. It has booleans, essentially, as states. You can switch states ON and OFF with player commands and events. You can also create or destroy objects. You can really do a ton of things with just those systems by chaining a series of events after a command is entered. But it’s unwieldy. To do anything complex you’d need to diagram a series of state switching. I had a lot of fun tinkering with it, but it wasn’t enough.
EDIT: Just to be clear: Everything I’ve just said above pertains to the MS-DOS construction set, not to Alan.
Alan was my next find, and what a find it was. I only looked at it briefly, because Inform was in my “to check out” list. I jumped right into Inform (7) and I was having a great time. Right up until I tried to make a simple scene start after moving rooms.
You see, Inform (7) is awesome. In a monolithic “you’ll never understand it all” way. But it’s also seductive and deceptive. The seduction begins after you read through some of the manual and examples. Inform wants you to believe that even your grandmother can program games–you just type sentences, like plain english. I couldn’t believe it would be that easy. Of course, nothing ever is–right?
Yes, this post might be getting longer than I intended. So be it. I don’t believe in this “TLDR” that all the cool kids use. RTFM was our mantra back in the day, and I won’t abandon it.
The seductive nature of I7 lures you into thinking you can program just like La Forge can on the Holodeck. “Computer, create an algorithm that simulates candles in this room. Put a bookshelf there. Put a desk here, and a chair there.” And the Enterprise computational system would translate that extremely high level syntax into low level magic. After probably… an hour of talking like that, I bet you could have the main simulation done. The Computer fills in the blanks with lots of assumptions. Super cool stuff, and I imagine that in some ideal future down the line, that’s exactly what programming will be like.
And Inform 7 wants to be that, which is why it’s so deceptive. Because the position of words still matters, in ways that aren’t easy to figure out from the compiler. And it doesn’t escape the need for semi-colons and periods, and even colons. Keeping track of that is a minefield all by itself. No, the biggest issue comes when you write something that should absolutely make sense. Something you cobbled together from examples in the cook book, etc. But you forgot a period. Or, you tried to add a value to something that can’t handle it.
Because everything is named after regular, english words. At first this seems incredibly intuitive. Right up until you run into the dreaded: “I can’t find a verb I can make sense out of.”
This little error message hit me where it hurts all the time when I tried to break away from rote copying of the example lines. There are other messages that are also cryptic in that they don’t really tell you that your actual problem was you used a colon instead of a semi-colon. Instead it just tells you it doesn’t like the way you used “when” because when should have been at the beginning of the sentence. What?
This “natural language” approach is a great idea that I think bears more development, and not just in the IF realm. But it just breaks down so easily if you have to take a half hour to track down one mistake. I’m sure everyone has run into these situations and knows exactly the kind of helpless frustration you experience when you frantically try moving words around, or start blocking off snippets of code to isolate it. Do these problems exist in other languages? They do. But the syntax in these languages isn’t nearly as murky.
So I went back to Alan and started writing in it. Holy hell, what an improvement (for me, anyway). You still have access to features like rooms within rooms, defining your own verbs, and so on. But the syntax is clear and clean. It’s rare that I can’t track down where a mistake is, because it forces you to be clear and succinct in the first place.
Now, don’t get me wrong, you have to write more lines and learn some more structure here than you do with Inform. Personally, I think that’s a strength. I’d rather be forced to write another block or two in Alan than pin down one misuse of “instead of entering the school” because actors can’t enter locations.
Was this a rant? I’m not sure. I’m just sharing a little love for Alan 3, because I don’t see a section for it on these boards. And that’s a shame. It’s a great system.