Sunday, March 31, 2013

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.

Friday, March 1, 2013

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