Search Results for: zarf

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

Interactive and text-based game news, whoa, lots

Quite by coincidence, all the IF news of the month has piled up into a 48-hour narrative train wreck. No, that's a morbid metaphor. A 48-hour Volkswagen full of news clowns? I don't think it's getting any better. Skip the metaphor.

Coming in this post: My impressions of Emily Short's Versu! My impressions of Zoe Quinn's Depression Quest! My impression of Stephen Fry! (Not really that last.) First, some news about me.

Hoist Sail for the Heliopause and Home, my space-opera fairy tale, now joins Shade in the iOS App Store. As with Shade, I've added some illustrations for this iOS port. The art doesn't change the game, but it might make the important aspects of the ship's status easier to grasp.

If you're not familiar with Heliopause, it's a tiny little game that I wrote for @party a couple of years ago. It was inspired by my desire to stretch the traditional time-and-space scale of interactive fiction -- to deal with solar systems and centuries, rather than hand-held objects and minutes. It was also inspired by old pulp and New Wave sci-fi. (Count the literary references!)

Myrmidal is the queen of the bright worlds, and you've walked her million cities beneath her sky and beyond it. Myrmidal laughs and Myrmidal dances; they say no one weeps on Myrmidal, except for moments on the stage.

But even on Myrmidal the sun rises and sets, and the music grows tinny and harsh when you weary of dancing. Your best stories and your best lies draw the same fond laughter. This morning you decide to rise to the docks, and rouse your Horizon of Night from her sleep, and raise her sails. Somewhere are worlds you have never seen. And if your friends miss you at the dance, they can tell you so when you return.

(-- Heliopause, opening)

Related to this note, a new interview with me at Gamasutra, posted (and hosted) by Leigh Alexander. We talk about Shade, Heliopause, and how I think IF works on the small-and-touchy screen.

Over on the purely graphical end of the adventure-game spectrum, I'll note the release of Dagon, a framework for building first-person anamorphic-panning games. (This is the UI style of Myst 3, and of course many other games.)

Dagon is the framework build by Agustín Cordes for his upcoming game Asylum. You may remember the Asylum teaser demo from last summer; if not, it's worth a look. The Dagon scripts for the teaser are included with the download, so you can see how the system works.

Asylum is currently in the middle of a Kickstarter push -- they're 75% of the way to their (ambitious) goal. Kudos to Agustín for pushing out the open-source framework before the game's funding is assured. I hope it helps him hit the mark.

Next on the news list: Emily Short's secret project, which she and Richard Evans have been working on since before they got themselves acquired by Linden Labs.

Versu is an engine for choice-based, conversation-focussed narrative fiction. It is currently available as an iPad app; support for more platforms is planned. What you get right now is a free download with a tutorial, a short adaptation of a scene from Pride and Prejudice, and a longer ("30-45 minute") Gothic-ish story. For $5, you can buy an additional story about a polite family dinner party that turns to... well, I shouldn't spoil it, should I?

I started to write about this thing, but it grew into a full-on review. So I am cutting that loose to be its own post. Up next on the Gameshelf!

But first, the last of today's releases: Depression Quest, a choice-based indie release by Zoe Quinn, Patrick Lindsey, and Isaac Schankler.

You are a normal person, with a normal job, and a normal girlfriend, and a -- perhaps normal -- lousy feedback loop between your thoughts, your habits, and your biochemistry. Which is to say: depression. You play through a few months of your life, with simple illustrations and a placid, sombre soundtrack. Your decisions all suck.

This is the sort of bleed-on-the-page writing (and game design) which would be mawkishly simplistic if it weren't real, but it is real. You can smell that, even if you don't have depressive tendencies yourself. (I do, as anyone could tell you who knows my preference for writing code in a room with the shades drawn. All week.) If you don't believe that some people are like this, you need to play the game, and pay attention.

Depression Quest is built on Twine. It's exactly the sort of simple graph-based plot that Versu isn't. (Whoops! You haven't read the Versu post yet. Context ordering failure! Well, we'll get back to it.) Look: DQ isn't about its gameplay. The mechanics are simplistic and limiting, and that's the point, right? To underscore the point, half the options are blocked off in any given scene. This has been done before (Rameses is famous in the IF community), but it still works.

Several months ago I played Papo & Yo, which is a similarly honest game. Anna Anthropy's Dys4ia is also coming up in many people's comparisons. Notice how different all of those games are?

I hope nobody thinks that this is "dreary games about life sucking". (We've got the regular game industry for that, right? From Space Invaders to Missile Command, and then an infinity of games about war?) No: this is people communicating their lives, and choosing the interactive medias to do it. We must have this if anything called "game design" is to have a lasting impact. That is all.

I'm not sure how much more I want to say about Depression Quest. It is a free browser-based game. The author is accepting pay-what-you-want donations, of which a portion go to iFred, a education and research organization. (I had trouble with the donation button, so I dropped money directly on iFred. Zoe, if we ever meet up in real life, I owe you a beverage.)

Rather than waft more of my own sentiments around, I will just quote from the game's introduction:

Depression Quest is a game that deals with living with depression in a very literal way. This game is not meant to be a fun or lighthearted experience. If you are currently suffering from the illness and are easily triggered, please be aware that this game uses stark depictions of people in very dark places. If you are suicidal, please stop playing this game and visit this link to talk to someone. [...]

It goes without saying that because of the very nature of depression, it is experienced differently by every person who suffers from it. We aren't trying to say that this is the "best" or "most accurate" representation, merely that this is an amalgamation of the experiences of the developers and several people close to them. Many of the following encounters deal with issues such as therapy, medication, handling a love life, and reaching out to support networks. In reality, less than half of depression sufferers actually seek treatment, for reasons such as lack of money, perceived personal failing, or public stigma. [...]

We've written it this way so that we can focus specifically on the illness, which becomes more and more difficult to deal with as the person who has it is less and less well-off.

(-- Depression Quest, opening)

Tagged , , , , , , , , , | Leave a 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

Pocket Storm on sale today

(If I was sensible I would have posted this last night...)

I just kicked Pocket Storm 1.1 out to the App Store, and to help spread the news, I'm lowering the price to one dollar -- today only. Call it Thunderstorm Friday! (In real life it's just drizzling out there in Boston, but with technology, we can do better.)

I got the download size down below Apple's 50-meg limit, so you can install the app over 3G now. There are a handful of other small improvements. (The fade-out timer behaves more sensibly now; you can use headphone controls on PS; and I plugged in the necessary vacuum tubes for the new iPhone 5 display size.) But app size is the important change. Apparently people make impulse purchases -- who knew?

And, as before, I am donating 10% of Pocket Storm revenues to Freesound.org, because of the awesome service they provide to indie game designers and other artists. In particular, they provide CC-licensed thunderstorm noises to me! Thus far Pocket Storm has not been a huge moneymaker, but I am hoping that over time, people support it.

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

BostonFIG followup

I was at the Boston Festival of Independent Games and it was pretty darn awesome.

(Photo credit to BostonIndies.)

I had Shade and Meanwhile sitting out on iPads, and people played both of them! It wasn't literally eight straight hours of IF demoing -- there were gaps -- but it's not like people ignored the IF in favor of the interactive comic, either. Several people played a significant fraction of Shade. One dedicated player ran through the whole thing. (With some nudges from me. The ending requires a certain degree of relaxed experimentation and persistence, which isn't easy to maintain in a crowded demo room.)

(Yes, I wrote down a bunch of synonyms and action phrasings that I forgot to implement back in 2000. I will add them to the game when the iOS version comes out. User testing!)

Naturally I had a stack of IF cards to hand out to Shade players. I also got to show off the XYZZY Award I won for it, way back. And the puzzle-key I designed for the MakerBot promo game. (In the photo, the puzzle-key is sitting on top of the XYZZY. Sorry, I would have arranged that better if I'd known. Also I'd have been looking at the camera.)

Meanwhile was also popular, of course. It demos very well -- hand it to someone, and they'll get the idea instantly.

(I also had Pocket Storm running on an iPod. You can see the headphones in the photo, but nobody picked them up. Oh well. The good news is, I now know that an iPod can run PS for eight hours without recharging, even with the screen set to stay lit.)

I did not get much chance to look around the rest of the show, because I was standing and demoing for eight hours. That laptop in front of me? Didn't open it once. I thought I would be able to work on some HL code during slack time in the show. Ha ha.

But I could see some very nifty first-person 3D exploration games running across the room, and hear the shrieks of Conway's Inferno. (All my puzzle friends noted Conway's Inferno as a clear puzzle hit; I agree. When the iOS version ships, buy it.) And I got a few minutes to chat with Jason Scott before he showed his movie. I hear Peter Molyneux dropped by, but if I saw him, I didn't know it.

I did not win one of the show awards, which were voted by the crowds. (Didn't expect to.) You can see Shade got a string of yellow dots -- votes for "best narrative" -- although, to be fair, I think a couple of people were voting for Meanwhile. I don't see the winner list posted, but I know that the Best Narrative trophy went to Resonance, so congrats to Wadjet Eye.

Conclusion: this festival was a big success. It was an excellent way for crazy small-time developers like me to show off games, talk to people, and generally demonstrate our existence. Many people tried my games; more people watched the documentaries. I pushed the PR-IF link on anybody who expressed an interest in IF, so I expect we'll have a packed meeting in October. (Not yet scheduled, sorry.)

The show will happen again; it will be bigger next year. If you're a game maker in the New England area, and you're not big enough to set up a gigantic booth at PAX or GDC, you want to be at BostonFIG in 2013. I will be.

Posted in Boston | Tagged , , , , , , , | 2 Comments

Zarf at BostonFIG

I am happy to announce that I will be showing off Shade for iOS at the Boston Festival of Independent Games, at MIT next weekend. I will also have Meanwhile, Pocket Storm, Fealty, and the rest of my iOS portfolio ready to demo.

(BostonFIG: Saturday, September 22, 10 am to 10 pm, MIT buildings 34 and 26. Free and open to the public.)

More IF stuff at FIG: Jason Scott will be a keynote speaker, and he will be showing Get Lamp at some point. Plus there's this whole showcase of other indie games. It'll be cool.

What, you ask? Shade for iOS? It's still in development -- don't go running off to the App Store to find it. As with Dreamhold, I'm planning to leave the game file unchanged from its circa-2000 release, but I will add in-game feelies of some sort. Only not a map. A map of Shade wouldn't be very interesting.

Posted in Boston | Tagged , , , , , , | 2 Comments

Pocket Storm

I am delighted to announce Pocket Storm -- a generative audio environment for your iPhone, iPad, or iPod touch. Pocket Storm is my first Boodler project for iOS.

It starts with a calm summer night. Soon you'll hear thunder in the distance, then wind and a spatter of rain. After half an hour you'll be in the thick of the storm. By the end of the hour it will have faded into the night again. Then the cycle begins again.

The Pocket Storm is not like other environmental audio apps. Every thunderstorm is different! Wind, rain, thunder -- even chirping crickets -- every sound is chosen from a library, with subtle variations of pitch and timing. The Pocket Storm weaves these elements into a tapestry of sound which will never repeat.

Here's my Pocket Storm web page; or snarf it straight from the App Store.

Boodler is an open-source soundscape project which I invented years ago. Boodler is designed for any kind of complex audio environment -- weather, traffic, alien worlds -- but I've never developed it as it really deserves. The Pocket Storm is my first attempt to bring Boodler to a consumer audience.

Rather than trying to sell a complete "Boodler for iPhone" app, I'm taking the approach of do one thing, very well. So Pocket Storm is a one-hour thunderstorm, which plays as background audio. Or you can stream it to AirPlay. You can set the timing as desired, or adjust the weather manually. There's also a timer option, if you want to go to sleep to it.

Audio samples from Pocket Storm, at different stages, are posted on the web site.

Owen Williams created the first Boodler thunderstorm soundscape, more than a decade ago. My app doesn't use his code, though, nor the old Boodler sound samples. I've built an all-new thunderstorm -- or rather, a set of thunderstorm variations -- using sounds from the Freesound.org project.

The sound libraries that I've compiled for Pocket Storm are now posted on the Boodler web site. (They're all Creative Commons Attribution, Sampling Plus, and Zero licenses.) The agents (source code) that assemble the sounds are not currently available; as usual, I'm trying to find a balance between open-source work and secret sauce. But you are, of course, welcome to compose your own Boodler thunderstorms from these sounds, or use Owen's original.

(Speaking of which: a percentage of the App Store revenue from Pocket Storm will be donated to the Freesound project.)

Posted in Zarfplan | Tagged , , , , , , | 4 Comments

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

Key Features: a new (small) Zarf IF game

A new (tiny) IF work -- Key Features! This was commissioned by MakerBot Inc. in honor of their upcoming product announcement, which will be at CES on Monday.

MakerBot is a nifty 3D printer company, and that's what's neat about this game: you can literally print out the feelies as real-life objects as you play! If you have a 3D printer. (If not, you can still look at the model renderings to see what they'd look like. The links will appear as you play.)

You can play Key Features online or download the game file. (Use your browser's "download" option to do that, as the game file may come across as text.)

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