top expert

i am my own ghost

Let’s Make IF #17: I’m back.

last time, on Let’s Make IF…

It’s been a long time, hasn’t it? If you’ve played Repeat the Ending, you might guess that the holidays are not a favorite time for me. I had family stuff going on and other distracting junk that required my focus. I’d rather be writing IF (and writing about writing IF)! Fortunately, things are settling down around here, which means a welcome return to routine for me. Thanks for waiting it out!

The last post was a general project update, and the next to-do for me, authorship-wise, is Act II (I need to change these scene names to make them more descriptive). It’s a very short scene, but there is still a decent amount of content generation–not necessarily design work–required. As I mentioned last time, I won’t make detailed posts about writing text unless something interesting comes up.

what is needed for act ii.

Since it’s been a while, I’ll make up a to-do list with brief comments. As a reminder, the action that ends act i is examining the box (with some caveats). The pivot is assigning the “examined” property to the box, which can only happen during act i.

a thing can be examined or unexamined.
a thing is usually unexamined.

after examining something unexamined in the location:
if the noun is the box and act i is not happening:
continue the action;
otherwise:
now the noun is examined;
continue the action.

As a reminder, “after” rules will end processing (no “report” rules will fire) unless explicitly stated otherwise. With a big rule like “after examining something,” I’m not really interested in shutting down all reporting, even though it probably doesn’t matter. I don’t feel like thinking about the implications of such a wide-ranging rule when it isn’t part of my design. What is the output?

>x box
The box looked quite different in the light. It wasn't black. It was... it was like it was filled with black somehow. The box was full of darkness, and that darkness seemed to move like fog rolling over the ground. I was curious, as any self-respecting cat might be, but I was also suspicious of it. It had a sort of damp scent to it, an animal smell. I don't mean a cat, mind you. It must have been a very strange animal, because that was a very strange scent.

There was something dangerous about—or in—it, and I worried that D might get too close to it. I gave the box a good hissing, just to let him know. I thought I saw something in the darkness: a fang, maybe, or a claw. Perhaps an eye, too! I couldn't be sure. Looking into that artificial night was like looking at a cloud; you could see all kinds of things in it if you stared long enough.

D bent down beside the box. "Wow, Marbles, will you look at this little plaque on the side? It reads 'Frobozz Magic Gruequarium Company'!" He took a cautious step back. "You don't suppose there's a grue in there, do you?" He took another step away from what now seemed to be a giant, magical fishtank. Only without the fish."

Moving into act ii, the new understanding of the box (some kind of creature is in there!) is a pivot point. This new information should change Marbles’s perception of the game world. Back to that to-do list:

  • Write two new descriptions for every room (except for the spotlight booth, which still isn’t physically enterable).
  • Write new descriptions for visible things (there may be a few exceptions for uninteresting objects), two of them (local and remote) in many cases.
  • Implement whatever nouns come up during the process (this is inevitable, at least for me).
  • Create a new fascination entry for the box, which will describe D’s interactions with it while Marbles explores.
  • Make a hidden object discoverable. When Marbles tells D about it (*MEOW*), act ii will end.

At some point, not necessarily now:

  • Completely implement cat behavior per location/object/scene (lots of responses will remain constant across scenes).
  • Populate the table of “‘table of feline actions.”

business as (un)usual.

We’ve been adding text to tables for a while; nothing really new there. I do wonder if I’ve given players adequate motivation for reexamining things. This is especially important because it’s needed for progress. For instance, interacting with the seats in the auditorium has been a dead-end up until now, but in Act II the player must look under the seats. “Looking under” is built into Inform 7, but there isn’t a lot there. The action is just a sort of placeholder in case we’d like to do something with it. It has a built-in response message as part of a “report” rule, and that’s it. Since this case (looking under the seats) is the only time that “looking under” something will be productive, some care will be required.

Why? We don’t want to implement “look under” everywhere, for one thing. For another, we don’t want our generic catch-all (our replacement for the built-in “report” message) to discourage looking under things. Similarly, we do not want to encourage the player to try “look under” everywhere. That would be annoying and a waste of time for them. I’ll add that to the pile. Writing default responses is tricky. You want something that is always (with few exceptions) applicable, that will not put players on the wrong road, and will not encourage what is called “lawnmowering,” i.e., using the command on everything to see what applies.

I won’t be writing default respones until the base game is complete, but this is something I’ll have to watch closely. Meanwhile:

carry out looking under the chairs when the bag is undiscovered during act ii:
say "I knew that there was more to the chairs than met the eye, so I hunkered down and explored the area underneath them. I found a small, plastic bag lying under a seat! It had some human letters on it, but I didn't understand them.

Holding the bag with my teeth, I dragged it out into the aisleway.";
now the bag is in the auditorium;
now the bag is discovered.

Until Marbles looks under the seats, the bag is in that built-in Inform 7 location, “nowhere.” There’s no real benefit to simulating something being “under” something, and this kind of spatial relationship isn’t built into Inform. Instead, I just place the bag in the auditorium once it is “found” by the player. Is the discovered/undiscovered property needed? I’m not sure, yet. I initially imagined multiple things being found/unfound, and thought it might be a useful thing to track. I also don’t know if the bag will remain in the auditorium, which could complicate use of an “if the bag is in the auditorium” condition.

In reality, though, “if act ii has happened” would probably cover everything, and I may get rid of the property while finalizing the release. For now, though, let’s leave it. It isn’t hurting anything, even if it proves to be unnecessary.

From there, it’s just a matter of getting D’s attention. I already have a framework for that; no need to reinvent the wheel.

carry out meowing at the bag:
say "Since I couldn't manipulate the bag with my paws, I thought D should have a look at it.

'Hang on, Marbles! D called out, bounding down the stairs. 'What is it? Did you find something?' Having reached the auditorium, he knelt down beside me. I pawed at the plastic bag. 'Well I'll be!' D said, picking up the bag. 'Those eyes sure are spooky!'

[...]";
now D is in auditorium;
now the bag is discussed.

Note that I don’t use my movement rule to simulate D walking to the auditorium. Why? Since D will arrive in the same turn as Marble’s “meowing at” action (meowing is a “carry out” rule and D’s movement is an “every turn” rule), there’s some feedback that I would need to modify/suppress about D walking and arriving. What’s the point? I’ll just write about him moving in my text response, then teleport him over.

Simulation can be a bit of a trap. It often poses interesting problems for programmers to solve, but it doesn’t always add to the player’s experience. As always, do what is fun and interesting for you, but recognize that you usually have more than one option for solving implementation problems.

act ii ends when the bag is discussed.

That’s another act down! As a housekeeping question, I’ll need to decide what to do with the bag. Does D keep it? Throw it on the floor? It’s not really a high-stakes question, but it has to be somewhere (or nowhere, as the case might be).

Today’s source (10,972 words)

next.

I’ll finally start to tone down variations in room descriptions. Marbles has seen most of this space with the lights up now. However, the “grue-sensitive glasses” found in the bag will definitely change the appearance of one important item in the theater! I’ll also need to implement a new room: the spotlight booth above the main entrance. More soon!