Thursday, March 1, 2012
It is the (mostly technical) progress report
I commented on Monday that I would get an update posted "in a couple of days". That wasn't procrastination; I wanted to be able to say I'd hit an interesting milestone before I headed off to a week of GDC. Didn't happen! Sorry. So, here's the somewhat-less-than-a-mile marker of progress I've got.
First, the game: the game is progressing. That is all I have to say about it. (Yes, there will be more detailed reports before the "It's done" report. But not right now.)
First and a half: Let's assume that if I had a release date to announce, I'd announce it, okay? (I wish I didn't have to explain that every time.)
But here is what I can say, because this is the open-source part: I have made great progress this month on the technical end of the project. That is to say, the iOS port of the IF interpreter.
I started writing this a full year ago, and I got the basics of an IF interface working: the status window, the story window, text input, scrolling. But I put it aside in the spring -- I wanted to get Secret Hideout and Meanwhile out the door. Now that HL is in progress, I decided to make sure the interface was up to snuff.
Turns out I made some mistakes back then; it was, after all, nearly my first iOS project. (Alas, poor KLD.) So the past couple of weeks have been spent ripping out inadequate code and hammering on it. If you follow my twitter feed, you'll have gotten some hints of this. Text scrolling is no longer stupid. The "more" flag works. The threading model is no longer a disaster waiting to happen. Also, I have a nice preferences menu for fonts and colors.
The biggest chunk of work remaining is to save and restore properly. The IF system that I'm using goes back to Infocom's design, which saved and restored the game only when the player typed "save" and "restore". There was no notion of the modern app world, which barely acknowledges that programs start and stop at all -- an app is expected to have your data ready the moment you look at it. This is possible in IF (iOS Frotz does it), but I've never integrated the feature into my own IF toolset. That'll be the big job for after GDC.
Anyhow, here's an interpreter snapshot, running my 2004 game The Dreamhold. Not fancy, but think ebook reader -- you want the UI to get out of the way of the text, not to distract from it. It still needs some icon work, mind you, and the menus are ugly. Not done yet; but greatly improved.
(IF mavens will note that The Dreamhold is a Z-code game, whereas Hadean Lands will be Glulx. True! The interpreter you see here is based on Fizmo, a Z-code interpreter. But nearly all of the interface code will be shared with the iOS Glulx app. The text windows, input, scrolling, menus, and so on are exactly the same.)
Now, this interpreter will certainly be finished before the game. (Sorry!) My plan is to release The Dreamhold as a free iOS app. I'm aiming to do that in early April, although that's not a firm date. I want to get the interpreter out there, both for real-life testing and for some eyeballs (in the "never heard of IF but what's this free app?" camp).
After that? Well, once the interpreter is done, it will be easy for me to release the rest of my existing IF catalog. They might be free apps, or I might charge a few dollars. Of course these games are available for free now, in iOS Frotz! So I'm not going to put the screws on. Maybe I'll add a little bonus content. You know the drill. Not life-changing work, but if it makes some money, it'll aid the cause.
Furthermore, anybody will be able to release an IF game using the same interpreter. Everything I've got is posted on my Github page. (The IF interface library is iosglk; the interpreters are iosfizmo and iosglulxe. Yes, iosglulxe is a couple of weeks behind.)
And Hadean Lands will follow, eventually, on a date to be announced.