Inform 7 Tips: I7 posts every Monday – Friday: mastodon.gamedev.place/@inform7tips

I started an inform7tips twitter account a couple of weeks ago, with aspirations of posting some sort of I7-related link or tidbit daily Monday-Friday. And then pretty much didn’t tell anyone, which, surprisingly, has resulted in almost no one knowing about it.

Follow if you feel like it. Things that might get posted include: specific games written in I7, I7-related projects, particular extensions, intfiction threads or posts, tweet-length bits of code…

Update: as of 2022-10-28, it moved to:

An Inform 7 tips RSS feed is available.

8 Likes

Could be pretty helpful, I hope you are able to maintain it in the future and that it can pick up an audience from here!

Though, I will say as one minor thing. Something that inform, in my opinion, could really use is a concise, simple, comprehensive, and easily navigable documentation. The built-in documentation leaves quite a lot out and the rest are scattered across various sites (or archives) or within the minds of the very knowledgeable user-base.
One of the examples that comes to mind are the ‘Use MAX_ACTIONS of x’ and similar values for larger games. Something that, as far as I can tell, isn’t in the built-in documentation and a rather tricky thing to find a fully list of (Currently, I’m admittedly actually looking for whatever variable controls the max number of ‘Understand Possibilities’ so that I can compile what I’m working on - if such a thing even exists).

Another thing would be what I had made a topic about previously concerning saving/restoring and commands that can execute upon doing each - small little things like that and other tricks that are not really talked about in the guide that comes with inform.

3 Likes

Chapter 2.14.

I don’t mean to erase your complaint, but the documentation that exists is quite comprehensive. Finding what you need is a hard problem; we acknowledge that!

4 Likes

…also:

The reason the documentation is scattered across so many sites is that so many people have said “What I7 needs is a concise, simple, comprehensive documentation site!”

It’s an xkcd-927 problem.

2 Likes

Hey, I apologise if I came off as potentially offending.

Inform7 is a great program, and one that I use quite frequently - as do many others.

However, again, I feel the documentation is a bit hard to parse at times. Part of that could simply be me, I don’t have much coding experience and the like - I’ve bumbled my way through inform for the past couple of years through trial and error, help from the wonderful community, various pieces of documentation, and even random chance. There are also quite a bit of neat things that don’t seem to be fully explored or explained in the documentation, or at least I haven’t seen them there - though to be fair its mainly things that push the limits of what a text-based engine could be reasonable expected to do.

Chapter 2.14, at least on my end (I’m using a version of inform that is quite old, so perhaps my documentation is outdated) doesn’t have a list of all limits - or if it does I can’t see it. It lists one as an example and then a temporary workaround, but not a comprehensive list of all the limits.

It does say to check the console, having a list could prevent that outright - as well as things that might not be displayed in the console (again, at least for me I’m not seeing anything about a way to avoid the ‘Understand Possibilities’ limitation).

Agreed, but I think addressing this will remain above the pay grade of a 280-characters-at-a-time medium. I have been trying to ameliorate that situation at least a little with the Inform 7 Documentation and Resources post (which I maintain in a completely unofficial and 100% self-appointed capacity).

I do have a bunch of different projects in motion to produce different kinds of references (an aspiration complicated by still being a newbie with plenty to learn myself). After a couple of months of neglect I’ve returned to working on my extension tester in hope of replacing the Friends of I7 Extensions Github page with something that makes plain which extensions don’t compile with 6M62.

You’re the person who originated this Memory Limit post, I see, so I take it you’ve tried cranking up MAX_DICT_ENTRIES as mentioned in @McTavish’s list of settings quoted there ? Or if you’re familiar with compiling C, you could try the current development version of Inform 6 which uses dynamic allocation and thus obsoletes more I6 memory settings than anyone who isn’t an I6-compiler-developer is likely to have heard of, only a subset of which an I7 coder had any chance of having heard of, and that by directly reading the Standard Rules. Enormous thank you to Zarf for that improvement to the I6 compiler, by the way!

At any rate, I’m going to add Ade’s settings post to the I7 Documentations and Resources wiki now, and mention the new I6 in that regard.

3 Likes

(My personal experience)
So the Inform Documentation is not concise nor simple, but it is comprehensive and easily navigable if you learn it’s quirks.

I read or skimmed most of the chapters over a period and discovered lots of “stick a pin in that for later” concepts. I had best success searching the documentation (and recipe book) within the Inform IDE. It also helps if you catch some phrases in the documentation to remember as a bookmark. Any time I would forget how to specify conjugation of an assertion verb, I remember the example in §13.9. Defining new assertion verbs used the example “to sport” so I’d search for “sports a tory rosette” “The verb to sport (he sports, they sport, he sported, it is sported) implies the knowledge relation.

Searching also works online - enough of the documentation is available that you can google search “inform 7 sports a tory rosette” and it shows up.

Even if you don’t want to slog through the entire documentation just for fun, I would suggest spending some time at least browsing the recipe book. It’s shorter, more entertaining, and gets a lot of concepts across via example. And you can click/experiment if you’re reading it in the IDE.

1 Like

That’s fair enough, I didn’t mean to imply you’d single-handedly go full in on it - mostly just voicing that I think it’d be neat to have a more centralized single documentation. I know very well that going through hundreds of disparate threads, documentations, pdfs, posts, and the like could be rather overwhelming to the point where one person is unlikely to be able to do such very easily - especially with how crazy things are in life sometimes.

And yes, I’ve originated several threads (or, at least three) that I’m sure are answered elsewhere - however in each case I wasn’t able to find an easy answer on my own or the answers I found didn’t solve the issues I had. Even with the memory limit one I only asked after I had noticed that turning up values I already knew existed wasn’t helping, I’d like to think I wasn’t too out there with the other threads I’ve made as well. I always feel pretty bad asking for help, as it feels like it is expected to know everything currently written everywhere - especially with how long I’ve been using inform and even more so with something that seems like it should be more obvious (such as the thing with the figures/images) - so I only make threads when completely puzzled.

I think including the memory limit stuff more on its own, as well as a comprehensive list of them (if the one in that documentation you linked and in the thread are all of them [which incidentally means that unless I’m mis-typing none of them control the mythic 'Understand possibilities]) would be pretty good. And especially stuff for folks that, like myself, lack much coding experience outside of inform. I know there are a lot of pretty neat things that you can do with a lot of third party or external things that seem to stream-line a lot of stuff I’ve either not been able to do at all or had massive problems finding work-arounds for.

A pretty interesting way to remember where things are. Though I will also admit, like a lot of other similar difficult folks I’m not exactly using inform to make a basic puzzle game. I’m surprised it doesn’t cry when I press go - I don’t think any of the numerous projects I’ve made for it have been anywhere close to its intended purpose (or what I understand to be its intended purpose). A lot of the information that I’d find valuable might not be quite as helpful, and therefore not needing to be as front and center, to people looking to make different things.

I will say though, the ‘recipe’ book is indeed pretty good. Looking through the examples provided in the entirety of the documentation helped me a lot when I first got into inform!

Are we siblings? I am also that horrible person who learns a new thing and immediately goes “okay, what ELSE can I make this do that it wasn’t intended for…”

1 Like

Its possible! That mentality has led to a lot of the smaller projects I’ve used inform for. I’ll come across something that seems mechanically neat and put it in the thought cabinet for a bit before happening across some neat thing I could use it for.

1 Like

Okay, get out of my head!! :upside_down_face:

It’s not all of them; if you look at the Inform 6 release notes I linked to, there are more. Looking at the Inform 6 6.35 source, MAX_LINESPACE looks like the best candidate; it defaults to 16000. MAX_VERBSPACE could be relevant too, depending on whether you have too many understand lines because you have too many verbs or just too many different ways to parse your verbs. It defaults to 4096. Seems worth a shot to double those and see what happens…

I wish more people asked more questions more often. In my half-year now of being a regular here (during which time I’ve spent a lot of time reading archives), I’ve never seen anyone get criticized or patronized for asking a question. I’ve asked a couple I felt silly about in hindsight… but only because of foolish pride on my part; I received really helpful answers that didn’t imply they were silly questions. This is the most consistently nice online tech community I’ve encountered, and I’ve been at it since before there was a web.

I7 is a great big sprawling, expansive, complicated language built on a complicated tech stack with 40 years of history. As you say, there’s a lot of knowledge that’s very hard to find outside the minds of the user-base.

(Now I’m thinking maybe there should be some “how and when to ask questions” advice, maybe in the About the I7 Category sticky post. Hmm.)

1 Like

Hehe, glad you got that reference.

I used those too, none of them seem to control the number of ‘Understand possibilities’ a verb can have. Though there are definitely some of these I haven’t seen before that look rather useful. Still, appreciate the link, I think I might’ve finally broken inform.

As for asking questions. You’re quite correct, Everyone where seems exceptionally friendly and helpful, no matter how esoteric the problem. I wish I had discovered it earlier than I did, though I’m sure my thread count would’ve been rather high (re-reading the ‘Memory Limit’ thread has dredged up memories, such as the infamous ‘You are a lair’ error message among many other frustrations). That actually brings up another point, its kind of odd but an idea of something to include in that or on the twitter.

I know inform has a lot of weird quirks concerning its built-in actions, objects, ‘figures’, and the like that it absolutely does not like being challenged or messed with (such as attempting to define an action already in the engine or redefine an object or number as something else). Such things have caused a lot of headache for me in the past. I am vaguely aware there are numerous ways to do work-arounds for things like that (since I came up with my own I don’t know a whole lot off the top of my head), however I am not sure if there is a list of the more involved ones or a list of how to handle the more vague error messages that arise from admittedly niche situations.

1 Like

On the bright side, as of 6M62, “That, sir, is a damnable lie.” and “And I am the King of Siam.” received explanatory follow-up sentences.

Inform 7 has finished.
  >--> '1 is a number' (source text, line 13): Grateful as I generally am for
    your guidance, I think perhaps I could manage without this sentence.
  >--> '12 is a rulebook' (source text, line 14): That, sir, is a damnable lie.
    '12' is a number.
  >--> '"X" is a number' (source text, line 15): And I am the King of Siam.
    '"X"' is some text.
3 Likes

I may have missed a question that was posted earlier. Have you run into an Inform 6 error related to too many understand possibilities? If so, what was the error message?

Much less cryptic for sure! Glad to hear that they were clarified.

Its in I7, “this command verb now has too many Understand possibilities, that is, there are too many ‘Understand “whatever …” as …’ which share the same initial word ‘whatever’. The best way to get around this is to try to consolidate some of those lines together, perhaps by using slashes to combine alternative wordings, or by defining new grammar tokens [in square brackets].”

This is it, for context there are about 30 or so different actions that use “End Turn” as what triggers them, in various circumstances via the ‘Understand “End Turn” as x action when y condition is fulfilled’ deal. There are other similar things for other actions as well that its spitting out errors for, not all of them would be terribly easy to consolidate without making the code into a mess - so as silly as it would be to have broken inform I am hoping that isn’t the case!

1 Like