The techy post, part 3 of 4

Friday, November 19, 2010

Tagged: glulx, zarf, z-machine, interactive fiction, history, if

The current state of the Inform and Glulx universe...

Present and Future

The next major change in the IF landscape was in 2006, when Graham Nelson released Inform 7, a brand-new high-level IF design system. I7 was (and is) still compatible with the Z-machine... but its very existence put a much greater strain on the system. A simple one-room Inform 6 game might be 64k; the same game in Inform 7 was over 128k, simply because of the more abstract and powerful library model. (In the most recent version of I7, such a game is 192k.)

The good news was, I7 was compatible with Glulx almost from the beginning. Nobody had any doubts about the fate of the Z-machine at that point.

(As it happens, I7 uses I6 as an internal compiler stage. The I7 compiler generates I6 code, which then I6 compiler then converts into either Z-code or Glulx game code. If that sounds horrific, look up the history of C++.)

The major change after that was Parchment, in 2008. This was an open-source Z-machine interpreter, just like dozens going back to the 1990s -- except Parchment was written in pure client-side Javascript. You could open an IF web page in an ordinary browser, and be playing the game immediately. In the web era, this is an absolute necessity.

(Parchment was not the first browser-based IF interpreter; but it was the first that was completely cross-browser and smooth enough to attract casual viewers. Earlier attempts included Gnusto -- a Mozilla plugin which was Parchment's ancestor -- and Matt Russotto's Zplet, a Java applet.)

I said "absolute necessity" and I meant it. So I started cranking away on a pure-Javascript Glulx interpreter -- the Glulx parallel to Parchment. Sticking to my incomprehensible naming scheme, I called this "Quixe".

Internally Quixe has the same modularity as other Glulx interpreters. There's a VM engine, and a Glk library (although this is a Javascript library rather than a C library). Plus the shim I mentioned earlier. In fact I found it useful to divide the Glk layer itself into two layers -- one which uses the original Glk API model, and one which uses a simpler, web-app-style API. The latter may someday be hooked up to server-side IF through an AJAX connection. I'm not saying that's a good idea; I'm just saying that if you ever want to do it, the library is there for you.

Truly it is said that the hacker whom the Gods would make mad, they first inspire to add one more layer of abstraction. Just one more. Then it'll be perfect.

I released Quixe in July of 2010.

So after all that, what am I proposing for my Kickstarter open-source projects? If you go back and look at my video, you should have a clearer picture of what all the bullet points mean. Or maybe not. Next post: the gory details.