Idea: A let's play of Inform's Standard Rules

For a while, I’ve wondered if it would be beneficial to walk through the Standard Rules, discussing it all the while. Mathbrush’s let’s play of Inform’s documentation is a great resource, and authors might benefit from seeing the whole of the Standard Rules discussed bit by bit.

This wouldn’t be a reference, but rather a conversation. I’d own the thread, type everything up, and make changes or additions as needed. However, there will definitely be parts I don’t understand very well, so the expertise of this community would be needed.

Anyway, I think it could be a lot of fun and, even better, help other authors. I’m trying to gauge interest: is anyone up for this? I’ll do most of the work, but the more the merrier!

10 Likes

I’ve never gone through the whole of the Standard Rules, and I still find pleasant little surprises in there. I’m in.

3 Likes

Likewise, I think that would be cool!

1 Like

It’s a good idea! But many parts of the Standard Rules are unfortunately not very readable.

The Standard Rules and the compiler are very tightly coupled—for example, the fourth kind defined is the only one that the compiler will accept connecting two rooms, since the compiler knows that the fourth kind definition in the Standard Rules is “door”. There’s nothing in the Standard Rules attaching this behavior to the “door” kind; the compiler just has special behavior for the fourth kind defined. (This is also not documented in any of the usual places. You just have to know.)

Other times, the Standard Rules basically just say “have the compiler insert its built-in implementation of this behavior”. For instance:

To silently try (S - action)
    (documented at ph_trysilently):
    (- {-try-action-silently:S} -).

Now, a whole lot of the Standard Rules is more readable than this—these are a few especially bad examples. So I think there’s a lot of value in going through, for instance, the sequence of action-processing rules. But you should always be prepared to glance at a section, say “here there be dragons, don’t look, don’t touch”, and move on to the next one.

3 Likes

Agreed, we aren’t going to get very far with some of these parts! But if, in such cases, some knowing individual (hint hint) could step in and say “this is what’s happening here” and leave it at that, we could move on knowing a little bit more :slight_smile:

2 Likes

I’ll do my best! Unfortunately many parts of this are “here there be dragons” even to me. @Zed knows more than I do, but I suspect the most arcane bits are known only to Graham.

For example…

…I just had to dig through the compiler source to figure out which kinds are recognized by their numbers. “Door” is (I think?) recognized by its number, but “room” is recognized by its name; it needs to be “room” even in French, while “door” can be translated to porte. “Container” is recognized by number, but (if I’m understanding this right) “supporter” is recognized by name.

I did discover a fun fact in the process, though. “Going” is recognized by name by the compiler, which gives it a special ability no other action has: “going from” and “going to” can apply to regions, not just rooms. Neat!

4 Likes

Sometimes it might be good to take a short dip into the Inter underlying one of these, if there’s something instructional and not too obscure there.

1 Like

Just a friendly warning: This is start of the path that leads one to become a Mad Scientist. (More members welcome any time!)

7 Likes

I suggest you ‘play’ through the source version, as a lot of the sense is found only in the comments, which I don’t think get included in the compiled version. And the Inform 11 version might improve some of the weird things from the past. (Though it is still being developed a little.)

1 Like

Yep, that sounds right to me! I think The ordering of the compiled version seems to make sense, though, so—just thinking through this—I’ll need to work out the sequencing.

You can also see these in HTML form. It wrecks I6 comments, but I7 should be fine.

2 Likes

Is there actually Inter underlying these…? Aren’t they hard-coded into the compiler?

The one that comes to mind for me is how activities connect between I6 and I7. There’s no explicit connection as is the case for rules, they’re connected by their ID numbers, which Inform assigns to the I7 part on creation. So the order that these activities are listed in is important.

1 Like

This can be different in Inform 11. The “X is accessible to Inter as Y” sentence means that coordinating source code ordering is no longer necessary. Though there could still be some remnant activity numerical IDs still in use.

1 Like

If the iceberg rule applies, then we have enough interest to move forward.

Since the text is, when compared to the documentation, very short, I think we can walk through the whole thing. We’ll use the published online source.

Having written a few (mostly) bug-free games, I would call myself “competent” rather than “expert.” This will be a let’s play by someone who hasn’t yet beaten the game, so to speak. I need a few days to think about my approach, and then we can get started!

I hope to see a lot of you there, so that we can have some fun conversations about Inform and its Standard Rules.

10 Likes