Adventures in Interactive Fiction

Success is North of Failure

Frogs and Fuschias

Today marks the third day of effort on the game (titled, by the way, “The Things We Don’t” or TTWD), but the first day of real progress and achievement. First, some facts that I think are significant for putting this whole exercise in context:

I am not a programmer. The extent of my programming abilities lies in designing Access databases (which, I should say, I am pretty damn good at) and very basic HTML coding. I am using Inform7 because its natural language approach appeals to me – my first half hearted attempt was with Inform6, and I soon realized that unless I was going to be happy with a one room game that consisted of a look command and possibly a door that opened, I was never going to get anywhere.

I am a flake. I am what I call ODD, a blend of OCD and ADD. I get incredibly, hopelessly, horrendously obsessed with some new interest, then throw it all over my shoulder when I lose interest a few days later. It’s one of my more endearing features. I am also easily distracted, which explains why this part is so long when I really just want to get to the good stuff…

The Good Stuff

So in the first few days, I laid out the map of the house where the game takes place. Easy, even for me. I flitted between the I7 window and Firefox, reading bits on IF Theory here, laying out rooms there, reading reviews of games I’ll never play everywhere. This was not, surprisingly, a sign of yet another half-hearted attempt, but of an actual dedication to getting things right this time.

Last night, I laid out a basic flowchart of the way I want the game to progress, the paths to game end, and various notes and musings on things I wanted to happen along the way. It took a lot longer than I thought it would. No sooner would I plot out the perfect pathway through the game than some new idea would pop into my head, sending me back to the drawing board. Note to self: I need bigger paper. And a pencil. With an eraser.

So today, I set about putting things in action.

You know those little frogs that people put their keys in and cleverly hide in their flower gardens where no burglar would ever find them? I decided I had to have one of those. I tried not to be too cliche, and hid it in a hanging plant instead. At first, this seemed to be a fairly straightforward process. Put a key in a frog, stick the frog in the fuschia. Running through likely scenarios in my head, I realized a few things:

  • The frog couldn’t be immediately visible, or else there was no point in sticking it in the fuschia.
  • There should be clues hinting at the possibility of something hidden in the fuschia.
  • I didn’t want the player to have to carry around the frog for the rest of the game, but also didn’t want to refuse to let the player to take it before the key had been found
  • The frog’s description referred to a recess, so I needed to cover the possibility that someone would search the recess instead of searching the frog.

These seem, at face value, like fairly basic problems. Well, for anyone with even a brain cell more than I have, they probably are very basic and easy to solve. For me, they’re a day’s worth of effort.

First attempts at hiding the frog actually went well. I set it up so that frog only moved to the fuschia when the player searched the fuschia. Easy as pie.

Then I crafted the description to encourage the player to examine the fuschia more closely. I even managed to allow the player feel some hard thing in the plant (provided the frog had not been found) and adapted the plant’s description to include the frog after it had been found. Took a bit more doing, but still, I got it done.

The real challenge came in keeping the frog out of the inventory. If the key had been found, I wanted the frog to be returned to the fuschia, and future efforts to take the frog to be thwarted. Returning the frog was easy enough, but stopping the player from taking it again was harder than I expected.

First, I couldn’t stop it from taking the frog.

Then, I stopped it from taking the frog, but the game said I had taken it anyway.

Then the game stopped saying it had taken it, but actually did take it.

Then it didn’t say it took it, and didn’t take it, but… didn’t say anything at all.

Let me just say, much hair pulling ensued. As soon as I thought I had figured it out, the friggin frog would stick its tongue out at me and promptly hop into my inventory, or give the wrong response, or both. I was perilously close to just throwing my hands in the air and letting the player walk around with the $@%! thing, but I pressed on.

Finally I figured out, which anyone with even a minute’s more experience than me probably has already, that the problem lay in the order in which I constructed my Instead statement. A tinker here, a tinker there, and voila – a frog that obediently returned to the fuschia after offering up its hidden treasure; stayed there once it returned; and correctly reported all of this to the player as it happened. I took time out for a happy dance, a cup of coffee and a much needed cigarette.

As I smoked my cigarette (and answered email, did some work, chatted with clients, etc.) it occurred to me that someone might try searching the “recess” that was mentioned in the frog’s description. I wanted the game to treat “search recess” as “search frog”, allowing players to do whatever was natural to them. Once again, this seemed like it would be pretty straightforward – surely I could just say “Instead of searching recess: search frog.” But no. Life is not that kind. I tried different variations on the theme, searched the documentation, did some therapeutic swearing, and threatened to throw some of my favorite possessions out the window.

Finally, I decided on one last possible course of action: I just copied the code for searching the frog into an instead statement for searching the recess, and compiled the game. I was sure I’d see an error message telling me that I was nuts and was clearly better suited for writing games in AGT, but to my surprise, it compiled. To my even greater surprise, it appears to have worked!

And that marked the end of my first real day of serious writing. It was a definite battle, but in the end, I am really proud of what I managed to achieved, and I learned a buttload in the process.

Advertisements

March 27, 2008 - Posted by | Game Progress | , , , , ,

3 Comments »

  1. Note to self because it just occurred to me and I’ll forget otherwise; I need to fix the frog’s coding so that it only gets returned to the fuschia if the player is actually in the fuschia’s location. (D’oh!)

    Comment by Jules | April 8, 2008 | Reply

  2. Hi,
    Your habbit of becoming obsessed with something new only to lose interest in it in a few days reminds me of myself. It frustrates me a little when I deal with this, though: I always find myself needing to move on to something else, and it drives me nuts because on the whole it isn’t worth the trip. I was perfectly happy where I was–or put another way where I was wasn’t wrong or anything, I just got, I don’t know, bored.
    Anyhow, I wish you the best of luck with this game. I’m looking forward to reading future blog entries. I need to really knuckle down and try to write something myself sometime…
    Best,
    Zack.

    Comment by Zack Kline | April 14, 2008 | Reply

  3. Believe me, it frustrates the hell out of me, too. Mainly because (current activity excepted), my passions tend to be a little expensive. I’ll buy whatever it is I need to do it all properly, hang the expense, fully aware that I’m likely to get bored with it before very long. And so I have a spare room full of various tools and gadgets, books and devices, odds and ends all geared towards something I’ve long lost interest in.

    I say it’s endearing, but I have to confess that I’ve yet to find someone who actually finds it so!

    Thanks for the comment and the well wishes!

    Comment by Jules | April 14, 2008 | Reply


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: