Monthly Archives: January 2013

My topic: analyzing and extending Frotz

Ah, Frotz. The most popular Z-machine and now glulx interpreter out there… Let’s back up for a while.

Z-machine

The first commercially available text-based adventure game was Zork I by Infocom in 1980. It was based on its almost-namesake Zork, that was made at MIT and only ran on big mainframes. For the commercial version, Infocom needed a very simple and versatile format. So they created the Z-machine format. Its only output was text, so interpreters for it could be made for pretty much any platform — and it was.

After Infocom

To my knowledge, the last commercial text-based adventure game was Eric the Unready. After that time, a new interpreter for Z-machine files ended up being necessary. A few appeared. The most popular ended up being Frotz, a command-line tool for Unix. Frotz was eventually ported to many systems, including Windows and more recently iOS.

Adventure games are not dead. Well, maybe not

Even though the number of people who play adventure games has shrunk and the number of people who play text-based adventure games or “Interactive Fiction” or simply IF is now tiny, a small community remains. New tools were made for creating new pieces of IF. Some were brand new, some compiled to the old Z-machine format. At the forefront of that latter category was the Inform programming language and its accompanying system, both created by Graham Nelson, a British poet and mathematician.

As the Z-machine had never been meant to be used by the public before, there was never a standard for it. Graham Nelson established one, aptly called the Z-machine standard in 1997. It has been updated since to version 1.1 in 2004. These standards are now used by most Z-machine interpreters.

A short note about Inform

Graham Nelson’s Inform language was very simple up to version 6. What made it a very powerful tool is that it came built-in with IF-specific rules. IF does require many rules to for the world of the story to behave in the way we as human players expect. These rules could be overwritten, but Inform did not require the programmer to write them. Example of rules could be that if an object is marked as being a container, it can contain other objects. However, an object cannot contain itself. This seems obvious to humans, but has to be coded in order to be in the world. Inform 7 goes much further and actually reads like English. It can still compile to the Z-machine format.

What I intend to do with all that

My independent study this semester will be the following:

  • analyze the Z-machine, using existing interpreters as well as Graham Nelson’s standards,
  • expose parts of the story inside the Z-machine and
  • display the information I gathered in the Windows interface in the Frotz for Windows interpreter.

I don’t know for sure how much of these I’ll be able to do, apart for the first one. But the Z-machine has such a reputation for being a very simple virtual machine that I hope I’ll be able to do all of them.

Deciding on a study topic for Silicon Valley

Creating Interactive Fiction with Inform 7 by Aaron Reed coverSo we have to create a blog for our Silicon Valley elective class. But I already have a blog! And I’ve even updated it. Sort of. Some times. I think.

No worries. I’ll try using a category for the elective-related posts. Let’s hope that will be acceptable.

I was hesitant about my topic for this class. I saw three possibilities. I knew I had to have samples of C++ code by the time this semester was over, but this didn’t seem to really match the purpose of this class. I don’t have much experience with C++, but I already know it fairly well. The point of the class it to learn things and teach them at he end of the semester. I can practice C++ and then teach it, but that does not feel right. And it wouldn’t really even be learning, it would really be practicing. If it’s code samples I’m after (and I am, I need them to get a job), I think I can manage that on my own.

Instead I’m going to do something with Inform 7. The previous article on this blog was about why I love Scala. This was written when I thought I’d be on a pitch project right now, coding in Scala, that why it had “part 1” in its name even though there never was a part 2. But it’s true I love Scala. I love Scala more than I can describe. But that’s nothing compared to how much I love Inform 7.

I’ve taught the very, very basics of Inform 7 when I was a teaching assistant (or T.A.) during the National High School Game Academy  But, to be fair, I’m a little lost about the details of Inform 7 myself. It’s big, powerful and detailed. It deserves my attention. One of our advisers said C++ was the one to go with because it gets jobs, but the other one said that Inform 7 would make me stand out. I’m much less sure I can write a decent piece of Inform 7 on my own time than a decent piece of C++. C++ you can crank out. Inform 7 must be slowly and lovingly carved out of a fine alloy of effort and imagination.

I’ll try to revive my old idea for an Inform 7 game, Go, Jill!, maybe with less focus on dialog and more on some of Inform 7’s specific features, like the persuasion system, which I think is very impressive. Scope will be an issue, but I’ll try to shrink and expand it as necessary. I’m pretty confident I can make it work.

You are in a maze of twisty little passages, all alike.

Not anymore I’m not!