Search Results for: zarfplan

Zarfplan: April progress

Short update this time. Puzzle barriers implemented this month: seven. (Some, again, with multiple solutions.) Also another substantial chunk of the automatic move-around-the-map code. That has been going in slowly because it's so integrated with the puzzles -- going from one area to another usually requires a puzzle solution or two.

As I said in February, this is a weird development process, because I am implementing both the puzzles and the mechanism to bypass the puzzles. So it feels like there's no more game here then there was in January. I can start the thing up, type "ZAP-OMNI" (to mark all the puzzles as understood), then type "GO TO ANTECHAMBER" -- that's the second-hardest room to reach in the game. Zwoop. 41 lines of automated activity, and I'm in the Antechamber.

To be clear, "ZAP-OMNI" is a debug command; it won't be available in the final version of the game. (And I'm skipping over a couple other debug commands I used, to compensate for links in the Antechamber chain that I have not yet implemented.) But "GO TO ANTECHAMBER" will work, just like that, once you have solved all the puzzles in the way. The point of the game is to make those tools available to the player.

So what makes this interesting gameplay? Like I said: puzzles with multiple solutions... and solutions that apply to multiple puzzles. It's no good getting into a room if you've used up the items you needed to have when you got there.

Beyond a certain point in the story, you need to start managing your automated solutions, making sure they all mesh together. That's going to be the real game. And I have now implemented enough of the map to start seeing these effects. Select certain combinations of solutions, and type "GO TO ANTECHAMBER", and the game says (very approximately): "Sorry, you got to the last door and you're stuck, because you've used up the rod of metal X getting that far. Also, when you swam through the flooded tunnel, the Y got soggy and the Z dissolved. Tough beans."

So we go.

Other news: My Unicode Parser for Inform 7, which I mentioned last month, is now available. I also helped get the Inform 6 web site back on line. It's been neglected since I7 came out; then, a few months ago, a server fell over and nobody's had the spare cycles to fix it. The site is still not particularly up to date, but it should now be stable, at least.

My Secret Project for April is not done, but it has reached the major implementation milestone that I was aiming for. I now flip over to the Secret Project for May, aka Secret Project STW-5, which begins... as soon as I upload this post.

Posted in Zarfplan | Tagged , , , | 3 Comments

Zarfplan: March is a five-letter word

The taxes got done, anyhow.

If we are counting puzzle barriers, I finished... five this month. I'm counting one door twice, because walking out of that room is a different puzzle than walking into the room. Actually walking into the room is one puzzle with two solutions, but that's getting too fiddly to worry about, so let's call it five.

I consider that under par. But number two involved quite a lot of environmental coding -- yet another effect that can be applied to nearly any object in the game. (I don't mean it does something interesting to every object in the game. Trying to stay focussed here! But I still had to write a rulebook and deal with the most obvious special cases.)

I also spent some time cleaning up the verb set, and polishing parser error messages. You may recall in the teaser -- well, you probably don't recall, but I was pretty proud of this: if you type "SEARCH WORKBENCH CAREFULLY", the game replies:

I understood the command "search workbench" (that is, search the workbench); but not the word "carefully" at the end.

The Inform default error is not that specific. I had to do some hacking to get the words to quote correctly. This month I redid the hack and applied it to the current build. (It didn't transfer over exactly, because the teaser was written with an older release of Inform 7.) So, that kind of parser polishing.

That was pretty much Hadean Lands in March.

In other news... I guess there was PAX East. I was invited to take part in a panel on indie games storytelling -- that was fun. (I don't think it was recorded, though; sorry.) Then there was GDC, but I didn't go to GDC this year. Maybe next year. San Francisco is fun, but expensive, and I didn't want to blow a week of work time.

I also spent a weekend working on a long-term project: allowing Inform 7 to parse commands in other alphabets. It's just a tiny piece of that project, really. I added full Unicode support to the Glulx virtual machine in 2006. In 2010 I added a necessary bit of code to the Inform 6 compiler, allowing it to compile a Unicode-aware dictionary. In 2011 Xun Gong contributed a patch to permit Inform 6 source code in UTF-8. What I'm working on now is upgrading the Inform 7 parser library to use the Unicode-aware dictionary, and accept player commands containing any Unicode text.

(This is a nuisance, because the Inform 7 parser is mostly the same as the Inform 6 parser, which was the Inform 5 parser, which was way back in the 90s and presumed without thinking that a letter fits in one 8-bit byte. So now I'm fixing up byte arrays into long-word arrays everywhere. Boring, not too hard, but not done yet.)

(No, I'm not using UTF-8 arrays. Don't get me started. Never do text manipulation in UTF-8. It only wastes your time and annoys the warthog.)

This is not the last piece of the puzzle. We'll still need the Inform 7 compiler to understand Unicode vocabulary terms. (Right now it assumes that its parser is not capable of that, so it rejects such vocabulary out of hand.) And finally we'll need full non-English parser libraries! We have such things for some European languages that use the Latin alphabet. In fact right now somebody is working through a Japanese IF parser that uses Romaji. But these ought to be expanded to other alphabets, and I, as an utter monolinguat, cannot help much with that problem.

So I don't expect I7 to support non-English IF very soon. But I have my piece to finish, and every step on this road is good.

I have a Secret Project for April, and a completely different Secret Project for May. The May project will be my reward for finishing the April project. One secret project at a time, I promise -- I can only split my time so many ways.

Happy Spring, unless you're a Southerner. Happy April 1, which is not yet started as I write this. Good luck with the silly Internet foolery tomorrow.

Posted in Zarfplan | Tagged , , , , | Leave a comment

Zarfplan: February is short

It feels short, anyway. By more of a factor than exists in reality. Stupid February.

A lot happened this month, but you read my post two weeks ago. The most interesting of course is that Heliopause is now up on the iOS App Store. But I will also repeat my plug for Versu, Emily Short's dialogue-AI project at Linden Labs. (Also on iOS, but coming for other platforms, um, not sure when.)

Also there was this extremely nifty interview with me posted at Gamasutra.

New stuff: earlier this month, I finally connected the goal-seeking part of Hadean Lands up with the map and the map puzzles. It was a very strange feeling: I started the game, typed "DOWN", and the game instantly solved the entire teaser for me. (You will recall in the old HL teaser that the primary puzzle is opening a trap-door. So now the game picks up the necessary ingredients, performs the ritual, applies it to the trap-door, opens it, and goes down.)

Of course this is in a debug environment. I actually had to type "ZAP-OMNI" first, which is the debug command to set every ritual as "known and practiced". In the final version, you'll have to, y'know, solve the puzzle yourself. The point is that the mechanism all works.

(You may also recall that teaser starts out in darkness, and the first puzzle is turning on the lights. I think I'm going to drop that stage. It doesn't really fit into the magical structure that I've developed. Also, the darkness didn't quite follow standard Inform darkness rules, so I had to write an unwieldy amount of code to make it all work right. Also, waking up in the dark? It's been done.)

(I tried to link to an online-playable version of Hitchhiker's there, but the one at the BBC has broken and the one at douglasadams.com is a Java applet. I hope you've all deactivated Java in your browers, it's hitting like two security holes a month recently. Anyway. Sad times for HHGG.)

So, beyond the sheer nervous shock of seeing several months of code actually sit up and work for the first time, HL is moving along okay. I have now implemented, let me count, ten goal barriers. Not all of these are really puzzles -- even an unlocked door counts as a goal barrier, because I have to create an "open the door" goal. Of course, that's a very simple goal to implement -- no requirements, no failures, one step. I got the unlocked ones out of the way weeks ago.

What I am finding is that I can't just implement a locked door or a puzzle with zero description. (Back in December, I thought this would be my plan.) To automate a puzzle's mechanics, I need to implement the puzzle's mechanics; but for this I need to implement the manual solution, with verbs and everything; and for that I need to actually write out the response messages. And the failure response messages for trying the wrong thing. And the descriptions of everything, so that I know the response messages make sense.

So I only have ten puzzles, or "puzzles", out of (very roughly) thirty-five on the map. But they're much nicer than I thought anything in the game environment would be at this stage. Locked doors, stuck doors, locked things-which-are-not-doors. And when I get to the end of the map, I will actually have completed a large chunk of the hard part of this thing.

...Which is not to say I will have anything playable. There will still be all the room descriptions, plus the story elements which are not puzzle-based, not to mention a long hard polishing pass to make all of this out-of-order text flow together. But moving along: yes it is.

Coming up in March: more of the map. Also, doing my taxes. Also, I hope, the release of a secret part-of-a-project which I have not yet revealed, because it is secret. (IF-related! But not a game, nor even programming; it's documentation work.)

See you.

Posted in Zarfplan | Tagged , , , , | 1 Comment

Zarfplan: January of a new year

First news: Shade is up for iOS! I started this port back in the fall, as a demo for the Boston Festival of Indie Games, but it dropped off my radar. This month I shoveled the snow off of it... not that we've had much snow up here... and got it out the door.

Then I got swamped by the Mystery Hunt. This was supposed to be a weekend event. It wound up running into Monday morning. The usual rules of long weekends apply: every extra day feels like the event has doubled in length... exhausting. And I wasn't even one of the people staying overnight. (Any of the nights.)

Anyhow, my team didn't win Hunt. We did respectably, though, and had a good time -- despite the gruelingness of it all. (Not everybody did, but that's another whole long argument. Tune in next year to see how it went.)

After that: Hadean Lands! And other projects. But not ones I can talk about yet. So I'll talk about HL.

Last month I alluded to design problems with duplicated objects in the game. (That is, what happens if you try to create two doses of some compound, when the game is only set up for one.) Conclusion: I punt on this. The game will flat-out refuse to let you do it. If you try, it mysteriously fails.

You might think this is the cheap way out -- but it will work, and I can fit it into the overall mystery of the game. Trust me, every game design involves taking the cheap way out of some problems. You pick your battles, and this one is not mine.

(My motto at this point is: "This game already had enough scope creep in 2011, never mind 2012. The screws are officially on.")

Yes, there was a spot where the plot required two doses of a particular compound. Not any more. Now there's compound X and compound X-prime, with different names, and you can substitute one for the other. Implemented, ritual variation tested, problem solved.

Otherwise, I have slowly been stitching the map together. It now has many doors, and some of them are locked (or otherwise impassable). Some of these doors have keys (or other door-passing items). The puzzle-blockage pattern is no by means complete, but it's filling in.

As it happens, I didn't spend today on doors; I spent it on little bits of paper. I already had a mechanism for learning rituals, and recalling what you've learned, but it wasn't hooked into actual game objects -- the pieces of paper which you pick up and read. (You may recall one such from the teaser.) Now that's all put together.

(Except for the part where you get vindictive and set the paper on fire. You never need to do this, but hey, I'm not going to stop you... Should just be a few minutes of work.)

(In fact... there. I just did it. Behold the power of this fully operational environmental rulebook system.)

Okay, enough showing off. Plans for February: continue stringing together doors, door-goals, and paths through the goal-planning system.

I will also do another iOS release of one of my old games. Where Dreamhold had a dynamic map, and Shade had a rendering of the game's "to do" list, Heliopause will have a nifty display of your starship and its magnetic sails. Here, have a parting screenshot:

Posted in Zarfplan | Tagged , , , , | Leave a comment

Zarfplan: December (looking back from 2013)

I say "looking back from 2013" because it's not December any more; yes, this post is late. I can offer a (small) excuse: I knew I was going to announce a (small) game on Jan 1, and I wanted to delay the post to include it.

This turned out to be a good move, because quite a few other IF items popped up around the end of the year.

First, the new game! Bigger Than You Think is not a traditional IF game; it's choice-based. Although it's not quite a traditional CYOA game either. You are presented with keywords, and you can either type them or click on them. I don't think that a click-or-type interface is really different from simple hyperlink CYOA -- nearly everyone winds up clicking, because it's easier. But the choices aren't handled in quite the normal CYOA form. I won't spoil it further; it's a short game, go take a look.

I created this piece for the annual Yuletide fanfic exchange. It's fanfic in a rather impressionist style, mind you, because the source work is a comic: Click and Drag, the really big xkcd comic from a few months ago. How does that work? Go find out.

(Inform hackers may be interested in the source code, which I have also released. It's not pretty source code, I'm afraid. I did a lot of I6 hacking to set up the hyperlink interface. Then I didn't take the time to split it out into a clean I7 extension.)

On the other side of the fence, Hadean Lands now has a map, as expected. (Not quite as of New Year's Eve; I was working on it Tuesday and Wednesday as well.) The game objects are scattered around the map, and I am mostly satisfied with how they're placed.

Puzzle barriers are not yet in place, however. December turned into the usual holiday lunacy, and I didn't get that far with making the map work. All the doors are currently unlocked. This is great for walking around and getting the feel of the place -- finally! -- but not so great for puzzle-structure progress.

Then, today, I ran into one of those snags that makes one say "dammit". (Or such other word as appropriate to upbringing, disinhibition, and/or proximity to frangible glassware.)


See, in this game you can make things. Say, a gonk potion. But then maybe you try to make another gonk potion. I have only implemented one gonk-potion object, so this is a problem. Right now I have a bunch of comments in my code saying "TODO: check if you already have one", and the reason they're still TODO comments is that I don't really like any of the solutions.

In some cases, you can't make more than one gonk potion because there's only one batch of gonk ingredients. Great -- but that leaves all the other cases. (Indeed, some puzzles revolve around finding a second batch of gonk-foo.)

I could have the game flat-out refuse. "You already have a perfectly good gonk potion!" Well, sure, but it's pretty embarrassing to refuse when the player has just gone through this elaborate gonk ritual and is tipping in the last ingredient. Besides, what if the player really wants two gonk potions? The plot is set up so that you don't ever really need two of the same thing at the same time... but the player doesn't know that.

I could add a second gonk-potion object -- but then what if the player makes three? Besides, the Inform parser isn't terrific at handling multiple identical objects. It can do it, but I'd rather not subject the player to that in an already-object-heavy game. For added fun, as I mentioned last month, the game supports "CREATE GONK POTION" even when the thing is nowhere in sight. If there were two of them waiting off-stage... "Which do you want to create, the gonk potion or the gonk potion?"

There are ways around this, but what this game does not need is another layer of abstraction strapped on. So I need to come up with something clever. And I need to come up with it soon, because today I looked at my notes and realized the plot does need two gonk potions to exist at the same time. In one specific case. Dammit.

I would say "That's the plan for January!" but January is also going to be holiday lunacy, it looks like. (Also, it's already 6% over.) I've got a couple of non-game-related things I need to update this month, and then we run into the MIT Mystery Hunt -- the event of the year for any puzzle-person in the Boston area. (Or, really, the US.) I don't do the Hunt every year; I skipped it last year, for reasons of personal sanity. This year, I'm in. Can't apologize for that.

So, the HL plan for January is to make as much progress as I can on the map's puzzle structure. And think about the plurality problem. I will report back at the end of the month.


In other recent IF news...

Emily Short has released Counterfeit Monkey, a gigantic IF game with a word-puzzle theme. I have played just the first few minutes of it, so all I can tell you is this: you start the game with a full-alphabet letter-remover.

SPAG, the online magazine of interactive fiction, is back from hiatus with a new web site, a new editor, and a new issue. Dannii Willis (known to the community for Parchment and other IF services) has refocused the zine and pulled together a sterling set of interviews and articles.

Activision has re-released their Lost Treasures of Infocom collection for iOS. (Zork 1 is playable for free, the rest of the games are a $10 in-app purchase.) I could devote a good half-post to its good and bad points, but this isn't the place. Let's just say: lotta playable games, complete with maps, invisiclues, and scans of the docs and feelies.


I feel like I should do a retrospective of my work in 2012, but you've been reading the posts, right? I released two short new games, wrote a whole lot of code, updated several libraries, got my iOS IF framework up to speed, and shipped Pocket Storm. Made a lot of cookies and didn't exercise enough. There, retrospected.

In 2013, I need to... well. Keep working on Hadean Lands. That's easy.

I need to get Shade and Heliopause back off the shelf, and ship them as iOS apps. If I have a business plan as an indie developer (which you might reasonably doubt), it is to get a bunch of quirky apps out and see if any of them are successful. IF apps are on that list. So is the set of word puzzles I've been keeping in my pocket for the past year or so. And maybe another Boodler-based audio project. Or the nano-clockwork puzzle idea?

We shall see.

Happy already-begun year, everybody.

Posted in Zarfplan | Tagged , , , | 2 Comments

Zarfplan: And that was November

Plan for the month: get all the shortcutting code finished, before the end of the month. Result: it's 11:59 pm on November 30th. Drat! But it is finished. Pretty much finished.

Sometimes code is painful. Sometimes code don't want to be written. That is to say, sometimes you just don't wanna write it. I am no more immune to this than the next hacker. Maybe the next hacker has a better strategy, but I try to get some progress made every day, and not think about the looming mass of progress I haven't made. Eventually the looming mass shrinks, and that's what's happened this month.

Why was this painful? Just an annoying collection of cases, all of which have to be handled differently, with guards against infinite loops and other such game-creating failures. See, there are shortcuts for going places, finding objects, and creating objects. Sometimes finding an object means creating it; sometimes it means going to where it is. And then there's the distinction between checking if a goal is possible, and actually carrying out the goal. None of this is conceptually difficult, but I have to get the code structure right, which means some false starts and then rewriting once I have a clearer idea of all the requirements.

The "pretty much finished" qualifier is because I haven't polished the output of this module yet. I type "CREATE IONIZER", and the game replies:

You open the beta-door.
You make your way to the Maze-Alpha.
You take the phaser.
You shot the alien!
You make your way to the Maze-Delta.
You take the ion widget.
You tinker together an ionizer.

This is perfectly readable but it's inelegant. I'd rather display this in paragraph form, skipping the less-important details:

"You open the beta-door, shoot the alien, take the
ion widget, and tinker together an ionizer."

Stitching together sentence fragments in I7 is moderately tedious. The mutable-string operations you expect in a modern language are possible in I7, but inefficient. (The leaden weight of Inform's history, which dates back to Infocom's Z-machine, which had no dynamic allocation at all). So I prefer to avoid that and instead muck around with a lot of state variables: have we just had a period or a comma? Hokay, capital letter time. Tedious. Not difficult. I'll get it set up eventually.

All of that business with the ionizer and the phaser is a test case, of course. The system works for the actual game objects too, and I have a bunch of those implemented. But since none of the game locations exist, I can't finish those shortcut rules yet.

Thus, the goal for December: create the map. Scary! Of course I've had a map drawn out for months, but it's slightly abstracted. (I may wind up splitting some rooms to improve the pacing, for example.) And a lot of the less-critical game objects are vaguely labelled "in quarters" or "in one of the labs" -- these are things which are easy to find, but the exact location is a matter of pacing, not puzzle gating. So I haven't nailed them down yet.

December will be a month of nailing. Hopefully by New Year's Eve, I will have an actual game structure to walk around -- rooms, locked doors, and puzzle barriers. There won't be any descriptions or game text; that will take much longer. But, even walking around the house-of-cards will be exciting.

I have another secret IF-ish project which should appear December as well. It's very small, but hopefully will amuse some people. More news when it's less secret.

Posted in Zarfplan | Tagged , , , | Leave a comment

Zarfplan: October, more or less

Plan for the month: create a major new subsystem, supporting shortcut actions! Outcome: ...part of it. Sorry. This month was a "missed expectations".

What threw me off track was -- well, in part, I admit, The Fool and his Money. It came out last week, after ten years of development, and it's a heck of a game. (See my review from a couple of days ago.)

But that game was released on the 25th, so no, it didn't devour the entire month. The larger time-sucker was a series of improvements and bug fixes to the Inform 6 compiler. This is the IF development language that I started out using. (Well, really I started out using BASIC, and then got serious with Inform 5. But Inform 6 is an evolutionary improvement on Inform 5 -- it's still "the same language", whereas Inform 7 is a whole new deal.)

I6 has been largely superseded by I7, and development on it has mostly ceased, although it's still invisibly present in the I7 toolset. (The I6 compiler is I7's low-level code generator.) Nonetheless, some people still use I6 in its own right. It so happens that a couple of months ago, David Griffith picked up the thread of I6 development, and has been working on a new I6 release -- the first since 2004.

David's work required some new I6 compiler features. I've handled most of the (sporadic) I6 code work in the past few years, so I was in the best position to pick up those requests. While I was in there, I grabbed a bunch of other code cleanup I'd been meaning to do. There went the first two weeks of October.

These updates will primarily benefit I6 authors; most of them will not affect I7 authors. One exception: I added an optimization to reduce the game file size by omitting unused functions. Right off the bat this knocks 6% off the size of Hadean Lands. (The I7 compiler inserts some features that I'm not using, and is also imperfectly efficient about building support code for the classes in my code. Turns out that these total about 6% -- more for smaller I7 games.)

So, okay, this is not a crucial milestone in HL development, but it was important and I didn't want to roadblock David's work. So now it is done.

Returning to HL, I got through a chunk of the shortcut-action feature. The game can now track all the objects you find, and answer questions of the form "Where the heck did I leave X?" Not as trivial as it sounds: the answer might be "You transfigured it into Y, then hammered that into a Z, and then threw it into a furnace, so tough luck, buddy." If you type "RECALL X", the game will actually tell you all of that.

(Okay, it won't say "tough luck". That would be unkind.)

This sort of tracking is necessary, because you might type "CREATE FOO POTION" -- this being after you've learned how to make the Foo Potion and gone through the ritual at least once. So now the game is willing to do all the work for you... but it knows you need an X. Where the heck did you leave that? If X is in another room, you have to be able to get there; but if you've thrown X in a furnace, the game will have to explain why the Foo Potion is now a problem for you.

This is a fairly standard recursive-dependency problem, and it's not going to kill me. I just have to crank through it, and I have now cranked as far as "Where is X?" Cranking will continue.

I've started the next bit, the "walk to room Q (where X is)". But just like an hour ago, and only so that I can get up tomorrow morning in an already-rolling mood, rather than "Ungh, gurk, must start a major new feature, maybe after lunch." Always leave a sentence unfinished before bedtime, sort of thing.

I shall endeavor to get all the shortcutting code finished in November, and hopefully before the end of the month, so I can post a more encouraging update then. Merry Halloween.

As you are well aware, tomorrow is the second anniversary of the Hadean Lands kickstarter going live. I continue grateful to you all. While admittedly distracted by The Fool and his Money, I have taken some lessons from it. One: don't announce a release date that you can't make good on. Two: the game is finishable. No matter what anybody says. I'm really sure that it won't take me ten years.

Posted in Zarfplan | Tagged , , , | Leave a comment

Zarfplan: September work

A month not of dramatic improvement, but of improvement regardless.

Jumping in a pool now works. Jumping into various other infelicitous environments -- details elided for spoiler reasons -- all work. You can draw metal rods into wire, and pound wire back into metal rods. There are now four different ways you can set things on fire, with different responses. Some of these behaviors support puzzles; others are just to keep the world believably fluid. (If an object is described as "dusty", and then you jump into the pool, it should stop being dusty.)

Why four different ways to set things on fire? Basically, I wrote up one set of responses for the sort of "burn X with Y" action where you hold a match to X. If you hold a match to a candle, the candle catches fire. But then I set up the retort, a glass vessel with a bunsen burner underneath. That's a different situation -- if you heat a candle in there, the candle melts. Maybe now you have a quantity of wax to play with. If you stick the candle into a kiln, it vanishes completely, poof, gone. (I'll leave the fourth as a surprise.)

All of this is a parcel of work, or four parcels, but fortunately I don't have that many cases of heat-responsive substances. (I can ignore rocks and steel tools, for example.) Each rulebook only has to cover ten or twelve cases.

Then, as I work, I think of cases that run into each other -- for example, as I was writing this post, I realized that I have one object which gets damp in water but then dries off in the kiln. I added a rule to cover that. (Most dampenable objects just incinerate in the kiln, so there's no need for a special case there.)

All game design is exponential explosion -- but if you can keep the exponent down around -0.3 or -0.4, the series sums to a finite value and the process eventually ends.

(Or, I should say, the process eventually gets into alpha-testing. That will be another whole ball of melted wax. I know I'm missing things, but the important ones will turn up over time.)

Non-HL news: I released Pocket Storm! A meditative, procedurally-generated thunderstorm for your iPhone. (Based, as you might expect, on the Boodler sound engine.) I was also an exhibitor at the Boston Festival of Indie Games, where I stood and demoed Shade and Meanwhile for eight hours straight. Whew. (See blog post.)

On the technical side: this month I got the iOS Glulx interpreter polished up. Previously I had the iOS Z-machine interpreter working -- that's what I used to release Dreamhold. However, Hadean Lands will be well beyond the Z-machine's capabilities. (It already is, in fact.) Most of the iOS porting work needed for the Glulx interpreter was either easy or identical to the Z-machine work... but the last few percent was a bear, of course. The bear is now placidly licking honey from its paws.You can see the result (if you're into iOS source code) on GitHub.

This brings up a question, though. The same week I posted that source code, Apple released the iPhone 5. It also updated its development environment to support it -- but the oldest iOS devices are now not supported. (The original iPhone, iPhone 3G, and the first and second-gen iPod touch.) I believe it's still possible to build an app that's universal across all iOS devices, but it requires some finicky command-line work across two different sets of dev tools.

Does anybody care? When I launched this Kickstarter thing, the iPhone 4 was brand-new and plenty of people were still on older models. (I still had an original iPhone.) I intended to support all models; the interpreter code I've posted does support all models. (Albeit letterboxed on the iPhone 5.)

Obviously, time has passed. You don't need me to remind you of that. If I release the game with minimum specs of "iPhone 3GS and iOS 4.3", will that leave you out in the cold? Let me know. I am willing to do the extra work for back-support, but only if it benefits real people.

(Let's not get into the "Apple hates everybody" rat-hole. There are blogs for that. The situation is what it is, I have to decide how to exist in it.)

For October, I intend to design a major new subsystem for HL: shortcut actions. Enacting a detailed alchemical ritual is fun -- the first time. The second time, it's grinding; you'd really rather just type "create potion of foo". So I will support that! ...As long as you have access to all the ingredients. ...Some of which require other rituals to create. And -- this is the hard part -- without accidentally introducing any new solutions.

Yeah, headache. See you in a month.

Posted in Zarfplan | Tagged , , , | 1 Comment

Zarfplan: On through August

Last time I said, "I can confidently say I'll finish the alchemical ritual code in August." Which I did! Barely. (I just finished the last unit test, at 8:30 pm on the 31st.)

I now have 34 alchemical rituals working. And 265 unit tests, which demonstrate that they're working. I'm feeling a little dizzy, honestly.

You'll recall I said something about "burning bits of wood and an alchemical retort" being the last bits of infrastructure. Well, inevitably, those were a nightmare. Burning things is one of the archetypical Hard Things To Do In IF. The other two are mixing liquids, and rope. Well, I implemented all the liquid-mixing back in July... and this game is not going to contain any rope.

(There's a silk cord, but you can't tie it to things.)

Long story short: I now have a setting-things-on-fire engine, to go along with the liquid-mixing engine and the ritual state machine. This is where I get very grateful for Inform 7 and its rulebook architecture.

Quick example (you want a quick example, don't you?): the general command is "BURN X WITH Y". (There are many synonyms, of course.) So I set up a rulebook, and start filling it in with both general and specific rules.

  • burn (hardwood) with (burning softwood): The fire isn't hot enough for the hardwood to catch.
  • burn (softwood) with (burning magnesium): The wood burns away instantly.
  • burn (burning magnesium) with (burning softwood): The wood burns away instantly.
  • burn (wood) with (anything burning): The wood catches fire.
  • burn (anything burning) with (anything burning): "That's already on fire."
  • burn (anything) with (anything burning): "Randomly settings things on fire won't help."

These are not straight out of the game -- I don't really have magnesium -- but they give you the idea. It doesn't matter that some of these rules overlap; I7 arranges them from most specific to most general, and finds the first one that covers the situation. This means that I can start with some broad cases, and then add details until I'm satisfied. I don't need to plan the whole matrix from the beginning.

Which is good, because there's no way to think of all this stuff from the beginning. That case of "BURN FLAMING MAGNESIUM WITH BURNING SOFTWOOD"? I didn't realize until I tried it that it needed its own case. Sure, I could have let the "already on fire" case cover it -- but that wouldn't be satisfying.

(Then I built the retort, which has a sort of bunsen-burner arrangement, and realized that requires a whole new set of mechanisms. That took four days right there.)

Anyway, that's the war stories for August. What's up for September: a lot of little mechanisms and transformations which are needed for puzzle-solving, even though they're not rituals in their own right. For example, drawing a gold bead out into gold wire. Or jumping into a pool, and finding that all your possessions get soaked. (I'd say this is the easy stuff, but, well, liquids and fire. They're always extra work. Stay tuned for more war stories.)

In non-IF news: keep an eye out for another secret iPhone project! It should hit the App Store next week. This is an audio project, and if you're a long-time follower of my work, you might be able to guess which audio project.

Posted in Zarfplan | Tagged , , , | Leave a comment

Zarfplan: On through July

At the beginning of July, I had three rituals implemented in my game engine. I now have seventeen. Plus their unit tests (130 tests in total!) That's pretty much my July, as far as Hadean Lands goes.

I had hoped to finish all thirty-odd of the game's alchemical rituals. But it turns out that the ritual engine isn't as separable from the rest of the game as I'd thought. For example, some of the recipes include mixing chemicals -- pouring one substance into a beaker of another substance. Well, that means I need a chemical-mixing engine, distinct from the ritual engine. (The player might go pouring acid into water, or vice versa, in any situation.)

So I had to spend some time setting that up. And then some rituals create potions, so I need to implement potion-drinking; some rituals create lenses, so I need to implement a "peering through" action; and so on. All of this infrastructure is still base cases -- none of the potions do anything yet -- but IF infrastructure is always harder than the specific cases that will make use of it.

Given the rate of progress, I can confidently say I'll finish the alchemical ritual code in August. (The remaining bits of ritual infrastructure are: burning bits of wood, and an alchemical retort. The glassware kind, not a smart remark.)

In other news, I released a Dreamhold bug-fix update, and have made excellent progress on the secret project. Hopefully that'll show up in August as well.

More July news: we had an IF meetup at NoShowConf, a new game-dev conference here in Boston. In the course of that weekend, I unexpectedly wound up sitting in a panel discussion next to Jim Munroe (IF guy and filmmaker) and Randall Munroe (xkcd guy, no relation to previous). You can find a link to audio of that discussion in this blog post. The rest of NoShowConf is also streamable online. None of the presentations were specifically about IF, but various IF-known people were among the presenters. I intend to plan IF events at next year's NoShowConf, so stay tuned.

Posted in Zarfplan | Tagged , , , , | Leave a comment

Zarfplan: Progress report about progress

If I want to call this the "June report", I'd better get it posted in the next couple of hours... That is, if you're in the US. Everyone else can blame the leap-second.

Last month, I was saying I had a complete picture of the puzzle structure. I can now add to that:

  • An update of PlotEx which can handle the puzzle structure. (I wasn't kidding about it needing optimization, woo boy.)
  • A map! (Not complete in detail -- I may split up some rooms and shift closets around -- but complete in structure.)
  • A rough list of where everything in the game belongs on the map. (Again, not yet fixed in terms of what goes in what closet.)
  • The basic Inform code for the ritual engine.
  • The first three rituals.
  • A unit-testing script for testing new rituals as I implement them.
  • A Secret Project.

The ritual engine has been the fun part. Of course I've already implemented a version of this, for the Hadean Lands teaser that I posted with the original Kickstarter project. But that was built to handle just one ritual (ignoring the starting "lamp" puzzle, which is a one-off set of actions). Generalizing it to support the giant branching ritual tree I've got in my notes -- that's what we call fun. But I've got three rituals in there now, and they all work, so I must have gotten it right.

To make sure I've gotten it right, I built a little unit-testing script. (One can eyeball code for three rituals, but in the course of the next umpty-um rituals, mistakes will be made. I can smell 'em coming.) It's just a bit of Python hooked up to an interpreter -- I wrote the whole thing this afternoon. But for every ritual, I can now write down a list of commands and the expected outcomes (following the engine's state machine). Plus, I can write down a list for every way to do a ritual wrong, and all of those expected outcomes. (Interesting, informative failures are key to interesting IF.)

(For I7 experts: yes, this is similar in nature to the I7 Skein facility. However, I've never had good luck with the skein -- whenever I try to use it, the IDE eats my data. So I wrote my own thing. Yes, it is a personal failing. But my script is nicely tuned for HL, and more compact, and it's also easier to check into Git, so there.)

And the secret project? I won't lie -- it's not IF-related. It was a wild idea that popped up early in the month, when WWDC was coming up and everybody was agog with rumors about an SDK for AppleTV apps. It was a good idea. More importantly, I could have finished it fast, submitted it, and been one of the first apps in its category in the new AppleTV App Store.

As a developer, I have to pay attention to those sorts of opportunities. I am obligated to finish HL, but I am also obligated to keep an eye out for other paths to success. So I spent a few days on the Secret Project, and no apologies.

Well, WWDC went by and those rumors -- turned out to be rumors. Tim Cook didn't say a word about AppleTV apps. No SDK, no AppleTV App Store. So the Secret Project is back on the shelf, and I've been back on HL.

I do intend to finish the Secret Project, for iPhone. It's still a good idea! But in the iOS App Store it will be about the hundredth app in its category, and there's no advantage to finishing it right now. That makes it lower priority than the IF work. Maybe by the end of the summer, I'll get it done.

I should also mention another Secret Project, on which I spent no time at all, because it wasn't mine. Jason McIntosh has just released an iOS version of The Warbler's Nest, his short award-winning IF work from 2010. Jason is the first IF author to pick up my IosFizmo framework. (The first one who isn't, you know, me.) If you haven't played The Warbler's Nest, and you have an iPhone/iPod/iPad, drop a buck on it. Jason's cat needs kibble.

Posted in Zarfplan | Tagged , , , , , | Leave a comment

The Dreamhold for iOS

It 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.)

(The Dreamhold cover art is based on a photograph by Trey Ratcliff: The Festival of Lights in Lyon (CC by-nc-sa).)

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. (EDIT-ADD: I have submitted a bug fix, as of May 27th. It is awaiting App Store review.) (June 4th: Bug fix is available; grab the 1.0.1 update.)

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.)

Some answers for the IF author contemplating an App Store release:

  • Can I customize the display style?

Yes. I put in hooks for game-specific fonts and color schemes.

  • What about that awesome map?

The map is Dreamhold-specific, so it's not included in the interpreter release. The same goes for the Game Center achievements. I think I'm going to keep those as private extensions. (I'm pretending to do this for a living, so I have to have some kind of, whaddayacall, "value add".)

If you're good at iOS coding, you are of course free to write your own interpreter customizations. The source is under a BSD-style license.

  • Is this a fully functional Z-code interpreter?

Urm, mostly. It only handles V5 and V8 at this time. (The V3 status line code might work, but is untested.) Timed input works, but the color opcodes do not. There are undoubtedly some bugs -- I know the status line height can go wonky at startup in some games. (Fortunately not Dreamhold! I know what's going on with this bug, I just haven't gotten around to it yet.)

  • What about Glulx? (Hadean Lands will be a Glulx game, after all.)

I have most of the Glulx interpreter working (see iosglulxe), but it's missing one key feature -- the ability to launch the game where you left off. This is critical for iOS, obviously. Follow my GitHub progress to see when that's ready.

  • Can anybody use this? What if someone goes and posts all of your IF on the App Store?

The App Store has a lot of cloning and shovelware floating by. This is a sad fact of the app world. It is possible that somebody could take this opportunity to flood the world with games using my name -- or, for that matter, start uploading the entire IF Archive.

I hope that doesn't happen, though. I would like to build up a small selection of Zarf IF games on the App Store, both free and for-money, with nice game-specific bonus features. That would be good for the Zarfhome label.

(I have nothing against iOS Frotz, which is awesome -- it's not an app that features particular games. Flooding the App Store search results with a bunch of cloned IF is entirely different.)

(Note: if you are this sort of shovelware bozo, and you're posting other people's games from the Archive for free, you're a bozo. If you do it for money, or put ads on, you're a bozo who is probably violating a bunch of software licenses. All my games say "Do not distribute commercially without permission," for example. Don't go there.)

Well, we'll see what happens, right? Enough of that mess.

  • 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...

A couple of other IF-related links from the past month:

The Bundle in a Box charity promotion is offering seven Windows adventure games in a pay-what-you-choose bundle. This includes six graphical adventures (by Jonas Kyratzes, Wadjet Eye Games, and Size Five Games) and one text game: Peter Nepstad's 1893: A World's Fair Mystery. Proceeds support indie developers and charitable causes.

Is it time for a text game revival? (Gamasutra article by Leigh Alexander.) Runs through several sorts of text-based games, from Infocom's heyday to modern e-literature, the Kickstarter revival of many old fan favorites, Emily Short's new project at Linden Labs, and so on. Includes the splash banner for Hadean Lands, so I'm in favor.

Interactive Fiction Communities: From Preservation through Promotion and Beyond (Article by Nick Montfort and Emily Short.) Introduction to IF (which I'm sure you don't need) but also a history of the genre and the community, in some detail. Worth reading if you haven't been immersed in the stuff for the past few decades.

Posted in Zarfplan | Tagged , , , , , | 5 Comments

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.

Posted in Zarfplan | Tagged , , , , , | Leave a comment

Meanwhile update -- and a one-day sale

I've just released an update to Meanwhile. Is this exciting? I hope it is, because this release contains new high-definition artwork. Digitally remastered from Jason Shiga's original files!

(I've always wanted to say "digitally remastered". One has fewer and fewer opportunities these days.)

On iPhone 4 (or other retina-scale displays, such as the newer iPod touch) you will see a sharper, clearer Meanwhile. You can also zoom in farther than before, a full 2x, to see this art in all its detail.

Older devices (such as iPad 1 and 2) cannot display the sharper artwork at normal zoom. But you can still zoom in to 2x to see the high-resolution art.

To celebrate this, I am offering Meanwhile for a impulse-buy-delighting $0.99 -- for today only. Jason and I think that the app is its own best advertisement -- everyone who plays with it is immediately in love with the design. So, we want more people to play with it. Pass the word around to your friends.

Posted in Zarfplan | Tagged , , , , , , | Leave a comment

One 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?

Posted in Zarfplan | Tagged , , , , , , | 1 Comment

Meanwhile for iOS is available

Last week, I wrote:

In other news -- or rather, the news I started with: Meanwhile has been sent off to App Store review. If nothing goes wrong, it will be available Tuesday, November 8th...

Nothing went wrong, and so Meanwhile is available, right now, in your local iOS App Store.

Full press release is below the cut.

And Hadean Lands? It's on my "make progress every day" list now. I should have the puzzle structure completely outlined by the end of this week. That's a small step, but comforting to me.


Zarfhome Software is pleased to announce the release of "Meanwhile for iOS". Jason Shiga's acclaimed interactive comic is now a truly interactive app for iPad, iPhone, and iPod touch.

On the way home from the ice cream store, little Jimmy discovers a mad scientist's wonderland: an experimental mind-reading helmet, a time machine, and a doomsday device that can annihilate the human race. Which one would you like to test out first?

Jason Shiga's graphic novel redefined the "choose your own adventure" format by combining artwork, story, and pathways into a looping, branching narrative structure -- a story in which your choices are surrounded by the cloud of possibilities you didn't choose. Now he has redesigned "Meanwhile" for the infinite canvas that iOS provides. The entire story is woven together on a single, enormous page. You can follow the pathways, or zoom out to view the entire structure at will.

"Meanwhile" is set in a mad scientist's laboratory, but it is grounded in probability and the Many-Worlds theory of quantum mechanics. To decipher the full story, a reader will need a grasp of logic and an eye to the playful possibilities of changing history. (Or, indeed, an ear! "Meanwhile" is fully playable through VoiceOver, making it one of the few graphic novels accessible to the visually impaired.)

Zarfhome Software is Andrew Plotkin's new studio for interactive fiction, narrative experiment, and things you haven't seen before. Zarfhome was launched last year with an astonishingly successful Kickstarter effort, and is now pursuing several projects, including "Hadean Lands".

Posted in Zarfplan | Tagged , , , , , , | 3 Comments

Halloween and progress report

A week ago I tweeted: "With Meanwhile stable, my Next Damn Project Slot is open as of Monday. And that means Hadean Lands (aka the Previous Damn Project)."

Perhaps you read that with a detached, urbanely ironic skepticism. Or not. Maybe Twitter can't tolerate that much irony. Who knows. Anyhow, last Monday, I opened up my HL design notes file. I brushed the dust and dinosaur vertebrae off it and read through. Here's what I quickly realized:

  • There are way too many ideas in this file. My notion of what should go into this game was, let's say, overambitious.
  • However, the ideas that are coalesced into puzzles and plot are fine. (Except for that thing about airlocks. That isn't going to fly.)
  • Thus, I must throw out 80% of the unattached ideas, and use the rest to fill in the gaps in what I've got. And then I'll have a design.
  • True, there are a lot of gaps. But there are plenty of ideas to fill them.
  • Geez, this is a complicated puzzle structure. No wonder I bogged down before, trying to fill in the gaps.
  • To the bat-cave!

Er, that last should read: I need a complexity management tool! So I quickly wrote one: PlotEx, a Python script for exploring puzzle plot constraints.

This is not an IF creation tool, specifically. It just lets you express your puzzle constraints in a simple way: what needs to happen before what, what requires what tools, and so on. Then it computes all the consequences of the scenario; it shows you what states can and cannot be reached. You can try variations like "what if the player never solves that puzzle?" or "what if the player has an extra invisibility potion?" Basically, it tells you whether your game is solvable, or whether parts of it are solvable too soon.

I've written a whole big article about PlotEx, plus documentation, so I won't go into further detail here. Bonus example: the plot logic of Enchanter rendered in PlotEx. Take a look if you think it might be useful to you.

Has it been useful to me? Heck yes. I have now filled in many gaps, and I have a much better idea of what elements I can put where without breaking HL. Furthermore, I can keep testing this; I can write unit tests for the game logic, effectively.

Of course, you might say I would have made more progress if I hadn't written up a whole big article plus documentation. Maybe. But this is how us geeks work.

More soon.

In other news -- or rather, the news I started with: Meanwhile has been sent off to App Store review. If nothing goes wrong, it will be available Tuesday, November 8th (slightly earlier in Eastern climes!)

Happy Hallows, or whatever you do. (I watched the Anti-Morris.)

Posted in Zarfplan | Tagged , , , , , | Leave a comment

The part where I tell you about Meanwhile

Two months ago (gad!) I said:

After I ship Hideout, I will be concentrating on [Secret Project] M37, because it too is just about finished. (And the paperwork is just about settled...) Even though M37 isn't IF either, I promise you will be excited and you will understand why I made time for it this past spring.

My Secret Hideout shipped last month, and the secret project remained secret. Because sometimes it really does take a month for the last contract details and then another month to get all the paper signed. So it flows. But now it is October, and I can finally say...

Meanwhile for iOS will be released this fall. It is a collaboration between Jason Shiga (the author of Meanwhile) and myself. And it will be awesome.

(Footnote: these are production screenshots. There will be some changes before release, particularly in the buttons.)

Okay, I can't promise you will be excited. I'm sure some of you are saying, "What the heck, this is a comic book. You are not a comic book guy. You are an IF guy."

I can only reply: I picked up Meanwhile at PAX East in 2010. (My blogging cohort Jmac posted about it at the time.) I immediately fell in love with it -- a thoughtful, beautifully-designed take on the Choose-Your-Own-Adventure genre. When I got my iPad, I immediately said "That. I have to do that. In people's hands. Interactively. It will happen."

But these are generalities. What is Meanwhile?

On the way home from the ice cream store, little Jimmy discovers a mad scientist’s wonderland: an experimental mind-reading helmet, a time machine, and a doomsday device that can annihilate the human race. Which one would you like to test out first?

This is of course a great story hook. But look deeper.

The basic idea of a branching narrative is context-free -- if two branches come back together, the book can't remember how you got there. Some CYOAs ask you to keep track of items or stats, but it's a hack and a nuisance. Basically, the CYOA model is poor at stories where you focus on a problem, explore it, and try many approaches. CYOA stories really want to, well, branch out and take you to new situations. (See Sam Ashwell's ongoing posts about classic CYOA books.)

(IF, of course, is for precisely this -- you explore a problem and try many solutions, most of which will fail.)

Now look in particular at Meanwhile, at what Shiga has done with the CYOA concept. Each story element is about context. The helmet lets you loop back through a character's memories and see what's happened from a different point of view. The time machine lets you loop back through events and change them. And the doomsday machine -- well, something has to kick off the plot.

So you have this problem -- the destruction of all humanity -- and multiple ways to approach it. It wedges experimentation into a CYOA model. Since it's ultimately an intellectual problem, story branches can merge together; your history is what you've learned, not what you've done.

This is already cooler than 90% of the CYOA books I've seen. But because it's a branching comic, Shiga has a whole range of artistic tools that the old books never considered. Two story branches can be laid out in parallel on the page. You can't jump tracks, but you are aware of one path as you follow the other. Panels can be juxtaposed and contrasted. You can see storylines as you flip pages. Again: context. Even on your first run through the story -- which will almost certainly end badly -- you get a notion of your goals, your options, and the chances that you missed.

All of that works on the printed page. What does it gain from the dynamic, interactive form? Fluidity, I'd say. You aren't bogged down with the mechanics of page-flipping and line-tracing. You can zip forwards at a natural reading speed, and then back up easily, without the accumulation of finger-bookmarks that CYOA books invite.

Also, you can zoom all the way out.

So that's why I had to do Meanwhile for iOS.


Beyond the enthusiastic handwaving, I should probably answer some obvious questions about this.

The book is organized in pages, but this app uses a giant square layout. Did I rearrange it?

No, Jason Shiga did. I originally prototyped this as a page-turning app, following the book layout. When I pitched it to Jason, he said he loved the idea, but did I think maybe it might work better as a single giant scrolling page? Like in this photo?

I said, heck yes.

Is the artwork and story identical to the book?

Almost identical. A couple of panels have been updated.

All the secret stuff is there. But the secret codes are different. If that's what you're asking. Heh.

Why "Secret Project M37"?

The book has 37 full-page spreads of artwork. I originally prototyped this as a page-turning app, see... no, I've already told that story.

Does it work on the smaller iPhone screen?

Sure does. You can see less of the surroundings, so there's less context -- it's not as cool. But the experience comes through.

(Again, screenshot does not final button design.)

The web site says "Voiceover enabled". Is this really a comic book readable by the visually impaired?

Sure is. If you turn on the iOS text-to-voice mode, it will read out each panel as you reach it, and then read the choices for the next panel. You can navigate the whole thing with standard Voiceover gestures.

(Fortunately, this is a very talky comic, so I didn't have to describe a lot of action!)

Could this interface work for other comics?

Maybe. Are there any other comics out there like Meanwhile?

This interface took a lot of tuning to get right. I didn't just slap yellow squares onto Meanwhile. (There's a blog post in that design story, eventually.) So the code is very specific to this book. But I am interested in other interactive storytelling projects, and maybe this code will be adapted to something else someday.

How long will it be before Meanwhile ships?

As I've said, the delays in this project have an up side: the thing is practically finished now. There will be final design decisions, and beta-testing, and of course Apple takes a week to approve apps. But I anticipate getting this thing into the go-pipeline in early November.

And Hadean Lands?

I realize it's frustrating that my last word on the subject was in August, and was "no change until the current project is done". And then I've been silent about the current project.

But the silence is over, the project is almost over, and it will be IF time again soon.

What does that mean? Well, several things. The past year has made clear to me that I need to have several project-trains moving at the same time; and (to jump metaphorical tracks out of the frying pan) I need fingers in several pies at once.

I started out 2011 thinking that Hadean Lands had to be my big money-making breakout. That was, in truth, kind of a paralyzing notion. But it was also kind of illusory. Here I am; I've finished one project, nearly finished another, and I also have some iPad contract work lined up. (Not story-related; it's a board game port.) None of these projects now has to be The One That Succeeds And Pays My Rent Forever. But they all could be. (Okay, not My Secret Hideout, probably.)

Thus, I retreat from a promise: I will not be working on IF full-time for the rest of this year, or next year. I apologize for that. But I will be working on IF again, and that includes Hadean Lands.

The iOS interpreter engine is in better shape than the HL game design. So it is likely that I will ship some of my old IF as iOS apps before HL goes out the door. I'll start with The Dreamhold, probably -- as a free app. (I'm not going to charge money for a game that's been free since 2004. Plus, it's already included in iPhone Frotz. Plus, one goal is to stress-test the iOS interpreter code. Gonna get a lot more coverage with free apps than with cashy ones.)

So, you'll see me release other work -- and other IF work -- before Hadean Lands is done. I regret that but I don't apologize; that's the way my life is going to work, if it works at all.

What I can tell you is this: by the time Meanwhile ships, Hadean Lands will be my "work on this every day" project. That doesn't mean it will be my first priority on any given day, but there will be steady progress. Sometimes I get wrapped up on a project and crunch on it for weeks; Meanwhile was like that. But the steady progress works whether I'm obsessed or not.

(What's my current "work on this every day" project? I do have one. Shall I say, River-and-Swamp design work? But it's not a high-priority project; it will probably be shelved next week, until either the board game or at least one IF project reaches fruition.)

In the long term, I hope to offer you an ever-growing tally of interesting projects across the game and narrative domain. And I hope that, in aggregate, they pay my rent.

All for now.

Posted in Zarfplan | Tagged , , , , , , , | 2 Comments

My Secret Hideout: available now

I am delighted to say that My Secret Hideout -- first mentioned here a couple of weeks ago -- is available right now on the App Store. Runs on iPad and iPad 2 (iOS 4.2 or later).

Really, it's been available for most of a day -- in some time zones. You may not know this, but Apple treats its App Store as a separate store for each country (or a bunch of countries, anyhow). Apps appear in a given store at midnight in that store's time zone. So from my point of view, My Secret Hideout was released to the New Zealand App Store at 8 AM on Monday. It's been cruising across the hemispheres all day, and it just hit the US a few minutes ago. (Maybe up to an hour. Don't worry, you can get it even if you live in California.)

The down side is, I don't have any sales reports yet, so I don't know how it's doing. But the up side is that I don't have to figure out tax compliance in 90 countries.

I'm glad I don't have to organize everything, is what I'm saying.

No; strike that. What I'm saying is:

My Secret Hideout is a wacky, creative thing set in a treehouse. It’s not like any app you’ve seen before. Buy it! Play around with it!

My Secret Hideout has no goal, no score, no trophies. Explore it, or play with it, until you find a result you like. Will your treehouse be simple or complex? Can you guide it? What will you discover inside?

That's the blurb. There's the link. Go for it.

And as always, please rate the app if you try it out. Ratings are what keep the sales going, and income is what keeps me going. (I mean, yes, the hacking and the laughs are what keep me going -- but also the income.)

Thank you for your continued generosity. More project news soon.

Posted in Zarfplan | Tagged , , , , | 3 Comments

A preview of My Secret Hideout (plus catching up)

Introducing My Secret Hideout -- my first iPad app release. Coming soon!

I already mentioned this on Twitter and then (welcome to the new world) my Google+ stream. But you folks signed up for news, and news I owe you. So here's a little more detail.

My Secret Hideout is an interactive text toy for the iPad. You build a little tree on the right half of the screen. As you do, the left half displays a description of your secret treehouse fort. Every change you make to the tree causes the text to evolve. The larger your tree, the larger your treehouse gets.

(If this screenshot doesn't work for you, scroll down -- I've copied the sample text at the bottom of this post.)

This is not a game. It's not really a construction kit either. You don't decide what rooms and elements go into your treehouse; you can only make changes and watch the variations. But I think that has its own charm. It's a toy, and a toy should be discovered through play. Just like IF, really -- there is no menu of treehouse elements, so you will keep finding new ones as you explore.

I also think that the tree is a pretty good toy on its own. Dragging around the leaves is fun! The tree reacts as you play with it; it's subtle animation, but it adds a lot of bounce and snap and physicality to the interface. I spent a lot of time making sure that was satisfying.

My Secret Hideout is just about finished. I need to add another couple of room options, and polish the usual list of UI edges which nobody but me will ever care about. I've said that I intend to ship it -- at least into Apple's hands, for approval -- by Labor Day (Sept 5). I'm still good with that deadline.


This thing has a wacky history. The concept started out as "The Folding Book of Fairy Tales". Imagine a picture book, but rather than turning pages, you fold them, bringing together different elements and forming new shapes. Wacky, eh? I have no idea where that goes. I would like to get back to that someday.

Well, I didn't have a picture book ready to go, but I started writing some paper-folding code. You Twitter followers saw me starting to rant and mutter about origami a couple of months ago. I got that working pretty well, too. Then I pulled out this idea of a fantasy world of procedurally-generated text. I put them together, and presto:

That worked nicely. But I wasn't satisfied with it. Playing with paper-folding is fun, but it feels destructive -- or rather, it feels bounded. You fold the paper, and it gets smaller and smaller, until you have this little angular spitball that won't fold any more. (Memory limits, you know, even with infinitely thin paper.) I don't have a full origami simulator, so it's not like you can make a crane. And it just didn't seem to fit the treehouse theme.

So I tossed all that paper-folding code off to the side. (I will definitely do something with it someday, even if it's not the Folding Book of Fairy Tales.) I started over with this tree-building toy... and that worked much better.

Will I develop this further? Maybe. If My Secret Hideout turns into a hit, I'll be happy to expand it to My Secret Underwater Hideout and My Secret Cave Hideout and My Secret Hideout in Space. (In-app purchase would be great for that, if it weren't for the patent situation. We'll see how that goes.)


Now the elephant-in-the-treehouse question. My Secret Hideout is obviously not a text adventure. (Although I've brought some of my text-adventure skills to bear on the descriptions.) Where is Hadean Lands in all of this?

For that answer, let's go back to February, when I started prototyping what I am still referring to as Secret Project M37. I was pounding away on HL design documents and iOS interpreter code. But I knew that would be a long process of pounding, and I wanted a relatively fast project that I could crank out and start making some money. (And iOS dev credibility.)

I created a prototype for M37. It looked good. I got excited and worked on it for a couple of months (while still working on IF code).

Then M37 got bogged down in one of those annoying delays. As a software developer I want to imagine that any problem can be solved by sitting down and hacking all night -- but that's false. This wasn't a technical issue, it wasn't anybody being incompetent, it was just paperwork that was slow. (I won't go into the whole story, because it doesn't matter.)

So that was frustrating. If I were a perfect person, I would have used the delay to push Hadean Lands forward. But I got stuck on the idea of "fast project, crank out, make some money". So I pulled out the origami idea and the procedural text idea and threw together My Secret Hideout.

I started that at the beginning of June. So it's looking like a "fast project" for me is three months -- except that, remember, I wrote a whole origami library and then took it out. So really two months. (And now I have an origami library in reserve.) That's pretty good; that gives me confidence that I can keep an iOS dev cycle going.

After I ship Hideout, I will be concentrating on M37, because it too is just about finished. (And the paperwork is just about settled...) Even though M37 isn't IF either, I promise you will be excited and you will understand why I made time for it this past spring.

Once both of those are out the door, it will be IF time again. I realize that you all have extended your faith to me, and I've been less stringently focused on Hadean Lands than I could have been. I beg your further indulgence. It will all come together.


Here's the text from the sample screenshot, in non-screenshot form:

My secret hideout is a cluster of sturdy rooms hung around a majestic oak. The walls are roughly cut but fit tightly. The well-lit living chamber is restful and quiet.

Behind that is a room with leftover paint cans scattered everywhere.

To the left, past a secret arch, is my library. Maps are piled everywhere. A plate of cheese sits on a side table, and the smell of old paper permeates the place.

The entire construction is powered by raincatchers that funnel water down through the branches past tiny turbines.

And just for kicks, here's a second one:

My secret hideout is a meshwork of tree branches, low in an elm. The walls flutter gently in the wind; vines weave through them. The uneven sleeping chamber is restful and quiet.

The treehouse is easily defensible. A ladder of heavy boards runs down the tree. I can also parachute out if necessary.

Posted in Zarfplan | Tagged , , , , , | Leave a comment