-
about 21 hours ago
Andrew Plotkin
Posted project update #38The Dreamhold for iOS
Post CommentIt is up on the App Store! Go take a look.
(If you have an iPhone or iPad or whatever, I mean. If you don't, you can still play Dreamhold on my web site or however you like. For old time's sake.)
I know most of you have already played Dreamhold -- it's a 2004 game, after all -- but it's been a fun game to revisit. This iOS release has a nifty map and some nifty (if cliche'd) trophy achievements, so maybe that will spark some competitive spirit or speedrun hijinks out there in Internet-land.
Unfortunately, I managed to ship the thing with a crashy bug. Several players have reported "Fizmo fatal error: Caught signal 11" messages. It isn't happening to everybody, and some people have gotten past it simply by quitting and restarting several times. (The problem seems to be showing up only on iPhone 4 and 4S, so far.)
I apologize for the bug, of course, and I hope to hunt it down this weekend.
Bugs aside, what does this mean for the greater world of interactive fiction?
First, this Z-code interpreter (an iOS port of Fizmo) is available on GitHub now. Do you have a Z-code game that you want to put in the App Store? Now you can. (I mean, when the bug is squashed.) Free or for money, it shouldn't be a problem either way.
(You'll have to be a registered iOS developer, though. Also, I haven't documented the build process in any useful way -- sorry. This will improve over time. For the present, just install the project and its submodules from GitHub, replace Game.z5, and fire up Xcode.)
For more details on the iOS interpreter code, see my longer blog post on the Gameshelf. I won't take up space here.
And Hadean Lands?
I turned Dreamhold over to the App Store review queue a week ago. Since then, I've been chewing through the pile of HL design documents that have been accumulating for the past oh-so-many months.
I now have a complete picture of the puzzle structure -- every ritual and special action, major and minor. It's... somewhat terrifying. Remember I said "53 major puzzles"? It's up to 72 now. There are 98 distinct spell components on the list.
Inform's parser isn't really optimized for carrying around 98 objects. I mean, you can't actually carry all 98 at once, because some of them are made from each other. But it's still way too many. Inform allows it, but I suspect the parsing will bog down on slower machines -- like phones.
But then, why should the player have to do all that inventory management at all? Expect a lot of attention to shortcuts and automatic object-fetching. "You run over to Herbarium and pick some rosemary..."
Anyhow, the next step will be typing all of these puzzles and components into PlotEx, to make sure I haven't completely broken the plot. (I'm sure the first thing I'll discover is that PlotEx isn't optimized for 98 objects either, and then there will be some more optimization. Whee!)
After that? My usual IF implementation strategy is "start with the first room, work forward until done." That is absolutely not going to work here. What will I do instead? Stay tuned...
-
on May 11
No, that will be exclusive to the iOS release. (The map-drawing code is iOS graphics code rather than Glulx VM graphics.) It's mostly there to compensate for the lack of paper and pencil. When I designed the game originally, I assumed that everybody loves to draw their own maps -- or if you don't, you ought to learn. :)
-
on April 27
I am happy that the projects you support are doing well. Yes, the app will support the most current version of iOS. That's easy. The hard part is to keep supporting the versions of iOS that were current when I started! (3.1.3, so it works on original iPhones.) I believe this works but it is not fully tested.
-
on April 19
Andrew Plotkin
Posted project update #37iOS Interpreter milestone
After only a couple extra weeks of work (and non-work -- oh, PAX, you great distraction) I am declaring my iOS IF interpreter ready for beta-testing.
Again, this is not Hadean Lands. The first game I will distribute this way will be The Dreamhold, a tutorial IF game. It will be a free download. (Really, The Dreamhold is already a free download -- you can play it on my web site or in iPhone Frotz. I will be packaging it as a standalone IF app with my new interpreter code.)
As I said, I'm doing this for buzz, and to get feedback on the UI design. But as a bonus, this release of The Dreamhold will contain a brand-new dynamic map. I figure that mobile IF players don't want to draw their own maps. (I mapped all the IF I played when I was a kid... stacks of scrap paper all over the computer room. When you're standing on the subway in rush hour, it's not so simple.) So the game will track your progress, and fill in a map for you as you play.
I hope testing won't run too long, and The Dreamhold will be out by the end of April. (I know, last update I said "early April". Turns out that was wrong.)
So, what else have I been working on? I do have some excuse other than hanging out with other indie developers at PAX.
A couple of weeks ago, I buckled down and wrote RemGlk, a JSON-based IF display library. I've been meaning to write this since 2008 -- it was supposed to be the flip side of GlkOte.
Here's the one-paragraph pitch: RemGlk attaches to an IF interpreter engine (written in C), and translates its output into Javascript data. (JSON, technically.) GlkOte is a Javascript IF display library: it takes IF output in Javascript form, and puts it up on the screen as windows and input lines and things. If you stick the interpreter and RemGlk onto your web server, and then hand GlkOte to the web browser, you've got a fully functional IF web app.
Now, I haven't actually built this web app. I wrote RemGlk to work with Floyd, a MUD bot we've got running on IFMud. Floyd runs our weekly ClubFloyd IF sessions, but he's never been able to present a complete IF interface. The status line would get lost, text styles wouldn't be visible, that sort of thing. Now (after a heroic integration effort by MUD host vimes), Floyd understands RemGlk's Javascript output, and all is much happier.
(Except for that annoying text buffer bug, which I promise I will fix as soon as Dreamhold is out the door.)
In other news, I've upgraded Meanwhile to support the new iPad and its stupidly high-resolution display. If you own the app, I'm sure you've already updated. (Really, take a look on your new iPad, or your best friend's new iPad, or any new iPad you can get your hands on. The display is nice. If you zoom Meanwhile all the way out... you can't quite read the tiny text across the entire story map. But you feel like you almost can.)
My contract-work board-game project has also shipped: Fealty for iOS. (App store link here.) Chris "Asmadi" Cieslik got to show it off at PAX, and he says it's selling nicely. If you like a small strategic territory-control game for iPhone and iPad, check it out. It's sweet.
(Except for that annoying Game Center invite bug... which I'm pretty sure is Game Center acting strange. At least, other iOS board-game app developers have complained about it. We are investigating and will have some sort of patch out soon. Sorry about the hassle.)
That, I believe, is all the announcement I've got this month. Hadean Lands, as ever, continues to progress in its own way.
Post Comment -
on March 2
Andrew Plotkin
Posted project update #36It 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.
http://gameshelf.jmac.org/Dreamhold-iOS.png
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.
Post Comment -
-
on February 29
-
on February 29
-
on February 27
-
on December 5
Andrew Plotkin
Posted project update #35One year of this project, and the ways of puzzle explorability
Tomorrow will be the oneth anniversary of the _Hadean Lands_ Kickstarter project. One year of this new lifestyle.
(Technically it's eleven months of this lifestyle, because I quit for Christmas. Also eleven months since I took possession of the donated money, due to processing delays and business schedules and thinking about taxes and all the other absurd things attendant on self-employment. I could also mark it as thirteen months and five days since I decided *for sure* to quit my industry job; thirteen months and *four* days since I reached my Kickstarter funding goal. But enough with the dreamy reminesce.)
Over the past month I have nailed down the outline for Hadean Lands. I know all the major puzzles that occur, and the order you hit them in. Or rather the possible *orders*, since there's a lot of variation. I'm using a traditional bushy-middle-act structure (many things to do but free order in which to do them -- think Myst). But there's a lot of puzzle interlocking going on too, beneath that high-level structure. Keeping track of this is why I wrote PlotEx, and you better believe it's been helpful. I can say *for sure* that the outline is consistent.
I haven't actually counted the major puzzles here, but I bet you want to know... okay, let's say 53. (The number is a little fuzzy, because you have to do certain things more than once, with variations. Yes, there will be shortcuts.)
The next milestone is sorting out the *minor* puzzles. These tasks aren't so much for challenge, but rather for pacing, and for setting up future puzzles. The locked grate in Adventure is the right analogy here. You get keys, you unlock the grate. It's not a big deal, but it spreads out the early exploration, gives a plot beat (underground now!) and gets the IF newcomer (we all *were*, then) used to the notion of using appropriate verbs.
Also, many of those major puzzles (30 of them) are alchemical rituals or procedures, which require ingredients. A one-ingredient ritual is no fun! I'll need a fair number of extra items just to fill out recipes and make the action sequences satisfying.
So for each ingredient X in a major puzzle, there will be a lot of "explore to find ingredient X", and a judicious proportion of "make ingredient X out of Y and Z". (Which means adding puzzles, or at least locations, for Y and Z. Don't worry, that recursion won't get more than one or two levels deep. They're *minor* puzzles after all.)
I could approach this by simply making up Y and Z items until all the slots on the chart are filled. But this would be boring. I mean for *you*, not just for me. (Okay, for me too.) One-use-per-item is a poor adventure game model.
Instead, I want all of the rituals to overlap. Y should be used in two different rituals; Z in three. Think back to my HL teaser: the untarnishing ritual starts with ginger oil, but you also have peppermint oil available. Shouldn't that lead into a different ritual? What if you start with ginger but use the binding word instead? These don't go anywhere in the teaser, but they will in the full game.
In essence, the space of ingredients and magic words forms a *map* -- and this abstract map should be explorable and interesting, just like the game's *physical* map. So this is what I've started working on now. Making up a lot of Y and Z items, but arranging them in a satisfying way. (While still obeying the major puzzle ordering constraints, of course.)
And that's this month in Hadean Lands.
(I should probably restate this, although it's not news: the estimated completion date on HL is "I don't know yet." This will continue to be true for quite some time. When I've gotten five of those 53 puzzles implemented, *then* I'll have a basis for estimating my progress rate.)
On the freelance side of my life, Fealty for iOS continues forward. It's playable single-player, but still all placeholder artwork, and the Game Center integration only half-works.
I am also doing a small commissioned IF work (!), which will appear on-or-around the beginning of January. Crazy, eh?
3 of 6View Previous Comments-
-
todd paoletti on February 29
can we get any sort of update or progress? I don't even have any iProducts but funded this to support IF. Starting to feel like some of the projects mentioned here:
-
Andrew Plotkin on February 29
Whoops, it has been three months since the "this month in..." post. Give me a couple of days and I'll post an update. (Before GDC, I promise.)
-
-
Post Comment -
-
on November 29

Is the automapping version of Dreamhold available for anything other than iOS?
No, that will be exclusive to the iOS release. (The map-drawing code is iOS graphics code rather than Glulx VM graphics.)
It's mostly there to compensate for the lack of paper and pencil. When I designed the game originally, I assumed that everybody loves to draw their own maps -- or if you don't, you ought to learn. :)
Well, I wish I was playing Hadean Lands.... Because Praser 5 is driving me crazy.