Category Archives: Zarfplan
I will keep this short, because I just noticed that I have to run to the Boston IF meetup soon, and I want to get this post out before then. (A late-night blog post would wind up dated "April 1", and do any of us need that additional cognitive stress? I think not.)
In the past month I have completed thirteen rooms, with all the objects, descriptions, recipes, and messages that appear therein. As usual, some of these rooms are fairly bare (corridors) and others are crowded with stuff.
I have also completed the tutorial -- which took nearly two weeks on its own. The tutorial is intended to hold your hand through the first room. That's basically the content of the teaser game. It requires more code than you might expect. It's done, though.
I have mapped out the "environmental spell component" that I mentioned last month, and started coding it up. That's not a huge task; it was just a corner of planning that I kept sweeping around, and now I've gotten to it.
I suppose you want the room count, don't you. I will give it to you. When? Now, I should think. You look forward to it, do you? I think you do. ...Nine rooms, I got done this month. All clues, all descriptions, all scenery, all actions handled. I can play through those nine rooms and it is a solid, playable IF game.
This is most of what I call "chapter 0" in my notes. After another couple of puzzles, the player transitions to "chapter 1". That's where most of the game opens up, at least a little bit.
But how many rooms are there in this game? I hear you cry. Okay, that's a fair question. There are 82. So you might conclude that I am 11% done with this thing and have eight months of work remaining. And that's... not a completely terrible estimate.
I don't mean that it's my estimate. Or that it's accurate. Rather, I guess, that the possible errors fall in both directions. So I can't say it's definitely too long or too short.
(I have that song stuck in my head, sorry about that.)
It is the end of January; it's been six weeks since my last update. Merry 2014! The holidays are over and I ate a lot of cookies. You've probably forgotten what my voice sounds like. Welcome back. Or welcome me back, I'm not sure which way it runs.
January was a weird month for Hadean Lands development. I said it would be "story bits". What does that mean?
Way back when I was sketching out this storyline, I outlined a set of characters who would appear throughout the game. I sketched out their roles, and how they would relate to each other and to you. One appears at the very end of the teaser, if you recall back that far:
You can see a figure caught behind the fracture. You peer closer in the gloom... That's Lieutenant Anderes, apparently frozen mid-step. What's she doing down here? And why is she carrying a crumpled alchemical recipe?
Yes, it's early. No, it's not the Ides of December yet. That's tomorrow. Good thought, though.
I said that I wanted to place the final rooms and cabinets. That's now complete. With all the locks, navigation, and goal-traversal that they required.
I also decided to implement a lot of bits of paper. You'll recall that over the past two months, I chose locations for all the "magic words and recipes" to be found in the game. (Physical objects were basically all nailed down by November.) This information would appear on sheets of paper that you'd collect as the game went on. The first such sheet appears in the HL teaser.
So I decided, what the hey, I'll implement all of those objects. Not their text -- I mostly haven't gotten to scenery descriptions yet. But I wanted to create the objects, place them in the game, and assign their effects: what rituals and formulae do you learn from reading each one? This is all scutwork; I have all this information in my notes, I just have to crank through them. It'll maybe take me one day. And then that'll be done.
I am happy to report that all the items are placed. Every line in my recipe chart has a "found in" notation! ...I'm telling this out of order.
The first half of the month, I caught up on the implementation that I planned last month. That is, I created the ten new rooms (plus some cabinets) that all of October's placements required. And the navigation between them. And the locks on their doors, where appropriate. And the goal-tracking to open the locks.
In the second half of November, I decided all the placements for the latter half of the game. (Two "chapters", but as I said, the chapter numbers do not reflect either game pacing or numbers of objects.) The map grew another couple of rooms, and several more locked cabinets, but I have not yet implemented these.
You might think that the first half of the month was difficult coding work, and the second half was lazily scribbling in locations on a chart. Ha. No. Code is easy. Decisions are difficult.
Every decision is wading into a hazy cloud of "this will probably be okay" and throwing away 99% of it. Most of the possibilities that I discard are fine. Some look fine, but will trip me up later. I have to make sure that the one I keep doesn't trip me up. And then I have to make sure that I like the pacing -- where it shows up in the player's run-through. Or rather, the range in which it might show up. Too soon? Too much confusion early on? Might the player run into the hard-but-correct solution to a puzzle before the easy-red-herring solution? That would be embarrassing.
And then I do it again, and again. I've been doing it all day. My brain hurts.
(Yeah, I'm writing this on the evening of Dec 1st. Procrastination struck after Thanksgiving. I caught up.)
So, okay. I have (nearly) hit a serious milestone, and I am declaring a (sort of) vacation month. My brain needs to stop hurting for a while.
In December I will implement those last rooms and cabinets, so that I can say I've actually placed everything in the game. But I'm not going to work on HL otherwise. I will do holiday things. I will bake a lot of cookies. I may play the latest Bioshock.
I have a sneaky idea for another iOS text game, which I might try to crank out by the end of the year...
Not goodbye forever, or even for the rest of the year. But it's Halloween; it's been damp and grey all day; and I just returned from the annual Somerville Anti-Morris Dance. Feels like putting the sun to bed.
I spent the first half of October dealing with the remaining major puzzles -- the ones outside the starship. Naturally, this was more work than I expected (it's always more work than you expected) but I got it hammered out.
Then, on to the map! This was more than just adding rooms -- it's about positioning objects and clues.
I've long had a list of important puzzle elements, and a sense of where they appear in the storyline: these in chapter one, those in chapter two, that one behind locked door X, and so on. But most of them weren't actually present on the map. So for the past week, I've been going through the storyline, chapter by chapter, and marking down locations for absolutely everything.
Gasp. Late, but triumphant. It's October 2, but I've just finished the last major puzzle item... if, okay, I fudge a little on "major".
All the horrible details with lead weights have been resolved. A puzzle with elemental fire which I completely forgot about until this week: implemented. And I've beaten out nearly all the quirks of map navigation which I was worried about. (There were a lot of quirks. Really it's the majority of what I've done this month.) (Because I was procrastinating on the lead weights, that's why. Every time I looked at the lead weights, I'd say "Hey, how about I polish off another map route instead?" And I'd do that! It's the good kind of procrastination.)
So yeah, all the major puzzles, except the "outside the starship" ones which, okay, I haven't gotten to yet.
You can count that as a miss, but it was a lot of map quirks. Anyhow, I get to declare a new milestone. End of October: outside-ship puzzles, and add all the little detail rooms. That is, all the locations which are currently globbed on my map as "player reaches here chapter 2". There's no puzzle involved in reaching these locations, which is why I've glossed over them until now; they're for realism (what does an alchemical starship require?) and pacing (is the player's rate of exploration smooth? Are objects too bunched up?) Not really hard work; but annoying work, because I have to make decisions and think about the high-level game structure. It's a big structure.
Other IF notes for the month:
The annual IFComp has begun! 36 short text games. That's way more than last year. The growth is primarily in the choice-based sector; the Twine community has more links to us old-school IF folks these days, and apparently they are paying more attention to IFComp. Anyhow, anybody can vote, so try some games.
A nifty article appeared on teaching English composition with IF; specifically, with my game The Dreamhold.
And finally, I'll be showing off Seltani at a demo night of the Conference on Artificial Intelligence and Interactive Digital Entertainment. That sounds daunting, but I'm not part of the conference per se; it'll just be a bunch of game developers and academic folks hanging out, demoing projects, and talking about them.
That, I guess, is all the news for September. See you Halloween-ish.
(No, "eidolons" has no significance in this post except that it sounds good.)
The holiday weekend is over, so it's September by anybody's definition. Where are we?
I got one of the lead-weight puzzles hammered into shape. (Not a pun, it's not a hammering puzzle.) I implemented the alchemical effects that deal with the lead weight -- and some other lead objects lying around, of course, because you gotta acknowledge consistency. I put in some common verbs ("free", "release", "unfasten") which I've been meaning to do for months. I dealt with several irritating map-navigation cases.
Not done: the other major lead-weight puzzle; the puzzle elements outside the starship; more map quirks. Since that's roughly equivalent in scope to what I did this month -- and half of what I described as "remaining major puzzle items" last month -- I'm happy to say that September should cover them.
Once again this is a short update, but you get a September milestone out of it, at least.
My non-HL milestone for the month was presenting Seltani at a Myst fan convention (at the beginning of August) and then to the rest of the Internet. You can read the introductory talk on my web site, if you haven't already. Try it out! Ages are being added nigh-daily, at this point.
I haven't been working on Seltani intensively -- that was May and June -- but I've been bumping the features and bug fixes forward, with the help of the first wave of dedicated users. (Thanks, users!) I will continue to push on it in combination with all my other crazy projects, because I believe in it.
And I will see you all at the end of the month.
The weather has been awfully nice around here. Not the ridiculous 95-degree weather, not the equally ridiculous wave of 50-degree drench that followed it -- but strong sunlight and rainclouds, silhouetted against each other in layers. The full Spiral celestial archipelago, for those of you who remember Michael Scott Rohan.
Sorry, slightly euphoric.
HL got cranked firmly along this month, so you can go home and reassure the cats that June was just a temporary aberration. Number of puzzles implemented... I think the correct count is five, although things are getting complicated and it felt like more work than that.
The situation I dealt with (just to give you the idea) is "getting outside the starship". This is a minor complex of puzzles in its own right, with two different external areas, three access points, two magic items, different possibilities at different stages of the game -- you get the idea. As I said a couple of months back, I am implementing everything twice and the specter of untested plot combinations looms over me like, like a specter. Spectrally. It's somewhat exhausting.
But now you can get outside the starship, in all possible ways and by all possible means. Unless I decide to implement that sixth red-herring option. That'll be extra work.
Otherwise -- taking breaks from the airlocks -- I made some progress on the iOS board game that I've also been putting off. And I pushed the Seltani project a ways forward, although I managed to keep my hands off it for the latter half of the month. (I do well juggling two big projects at once. Three, not so well.)
What remains on the puzzle list is... hm. Surprisingly few major items. Several ways to mess around with lead weights. Some hijinks outside the starship which I will not detail. A lot of irritating map-navigation cases. (You acquire shortcuts as the game goes on, which complicates the automatic "go to X" code.)
I won't claim I'm getting near the end of mechanical implementation, because there's an inevitable shedload of minor game reactions and interactions too minor to be called puzzles. (Unless I'm in a mood for academic discourse. But that's not this post.) But I can hope to have those major items done in August. That would be good news.
So, short update for the month, but encouraging, I hope.
Reminder: Sept 14-15 is IF meetup weekend here in Boston.
Up front, here: what I did in June was not work on Hadean Lands. The secret project ate my soul and my life.
This will happen sometimes. I spent a bunch of 2011 working on Meanwhile and other early iOS projects. In 2012 and 2013 I have made steady progress on HL but not daily steady progress, and this is because I am balancing the usual large number of things. In June I got obsessed and the balance went sideways. In July I will drag it back.
(I could make myself look better by pointing out that this idea clobbered me in February, and I managed to put off starting it until May. Okay, that doesn't make me look good, exactly...)
Shall I leave the post with that? No, that would be tacky. If I'm going to foist you off with this "secret project" excuse, I should pull back the curtain and give you a look. Behold -- (shwoooosshh) Project Seltani.
Yes, I'm late. Sorry -- it's still the weekend, isn't it?
Six puzzle barriers, and the map traversal code that goes along with them. As I said back in... when was I working on ritual shortcut code? November? Anyway, a lot of this game has turned out to be "Implement a thing! Now implement it again, in the more-convenient shortcut which is available once the player knows how to do it!"
Then, in some cases, you implement it a third and fourth time, for when the player discovers an alternate solution and starts using that.
I am moderately terrified of bugs -- any mismatch in the implementations is going to cause plot holes. In normal programming, you'd have a single implementation underneath and call it from two (or four) places, but sadly that approach doesn't make sense here. So I do acres of testing and sweat a lot.
(The latter only slightly because the temperature in Boston zoomed up to 90 this weekend. Cold front tomorrow, which should help, if the accompanying thunderstorms don't knock over my power.)
I'm afraid I don't have any other exciting news for May. I spent a lot of time on Secret Project STW-5, which is just the coolest thing in the world but not ready for any kind of public display yet. (It is IF of a sort, but not parser-based.) I am hopeful that I can start limited alpha-testing in the next couple of weeks, so I may have more to say about it next month.
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.
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.
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.)
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.
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.)
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.
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.
(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.
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.)