@inform7tips twitter account

I think you’re out of luck until the next release of Inform 7. There’s something called MAX_LINES_PER_VERB in Inform 6 (before 6.36). It’s set to 32. It’s more constant than the other constants; one would have to modify the source to change it… except that that won’t help either, 'cause it looks like ni decides to spare inform6 from going to the effort of balking at this value being exceeded by independently enforcing it itself.

Would it be so messy to consolidate some and then split them in Before rules? So instead of (untested code):

Understand "end turn" as fooing when foo is true.
Understand "end turn" as barring when bar is true.
[...]

You could have

To endturn is a verb.
endturning is an action applying to nothing.
Understand "end turn" as endturning.
Before endturning when foo is true, instead try fooing.
Before endturning when bar is true, instead try barring.
Instead of endturning: [something to do if none of the before rules caught it]

(Possibly you could even get away with less granularity than distinct actions but without knowing what you’re up to, I couldn’t say.)

3 Likes

Yeah. If you don’t see an I6 error message saying “The memory setting MAX_XXX (which is N at present) has been exceeded”, then there is no memory setting that will help you.

Thanks! That’s a lot less messy than what I had in mind. I was going to just make a long list of actions that called on actions that called on actions with conditions on each to ensure it selected the correct one - which would’ve been tedious and left quite a lot of room for mistyping or missing something.

As for what I’m doing, just a very basic combat system. I am not really adept enough at coding to use the extensions that help, and some of them don’t let me do everything I want anyhow - so the work-around I’ve made is rather convoluted. Basically every ‘opponent’ has a unique action for being beaten, being victorious, and performing their turn (which is accomplished by the player passing or ending their turn, for simplicity). Needless to say, its still going to require quite a bit of copy-pasting and editing, but a lot easier than having to make several new actions to call on other actions…at least as long as this before/instead itself doesn’t have a hard limit.

Speaking of the ‘Next Release of Inform7’, I’ve heard it mentioned a bit - for quite a while. Is it going to be just an update of inform7 itself or an entirely ‘new’ thing?

This sounds like it might be organized as rules per opponent in different rulebooks, something like:

Victory is a rulebook.
Defeat is a rulebook.
Enemy-action is a person based rulebook.

Definition: A person (called P) is other if it is not the player.
Every turn:
  repeat with opponent running through other people in the location begin;
    follow the enemy-action rules for opponent;
  end repeat.

Enemy-action for Zangief: say "Zangief looks menacing."

Defeat when the noun is Zangief: say "Now who will crush foes' skulls like sparrow's egg?"

Victory when the noun is Zangief: say "Zangief crushes your skull like sparrow's egg."

[ since rulebooks default to being action based, these automatically get called with the current action,
so "the noun" works to identify the opponent within defeat and victory ]
Carry out the player attacking someone:
  if a random chance of 1 in 2 succeeds, follow the defeat rules;
  else follow the victory rules;

This is all that is publicly known: Graham Nelson’s 2019 Narrascope talk; 2020 Narrascope talk. So we know there will be big changes to the architecture. What changes there will be to the language itself / the world model / the standard rules are unknown. Another big change is that it’ll be open-source, so that one could remove that MAX_LINES_PER_VERB test oneself if one really wanted.

1 Like

First, this is really good to see! I think I made a few tweets way back when of Inform 6/7 stuff, but they went nowhere.

I’ve felt so too, but a lot of that is on me. I find it gets me basically what I need if I need to get started. Then I ask on here, and I realize other people have paid more attention to details I overlooked while I was just getting something going. I’m okay with that two-step approach of doing something in the recipe book, or just getting something to work, and asking the whys or even “can this be done better” later. Or seeing “oh, that’s why detail X was important, but I’m glad I got something up and running.”

I don’t think that’s unique to Inform. I think because it has natural language, we can get relaxed and think “oh, entry 1 of my_list” is the same as if “in” or other prepositions replaced “in.” So sometimes there’s that fight with the compiler, and we have to learn how to fight efficiently.

Also it’s way tougher to google for help for something in Inform then, say, Python. It’s tough to separate the technical from the creative.

As for asking questions: I try to find 3 ways to get around a problem before posting here. Maybe that means a few good questions got lost. I don’t know what the solution to that would be. It’d be neat to have an “Inform 7 small victories” thread, though some might find that cheesy or bragging of a sort. I think I could seed the forum with a lot of good questions I had which I answered on my own, and I’m not alone. But I’m not sure if that’s what we want. This seems to fit in more with itch.io devlogs.

Me too. I have to admit that, now I’ve been programming in Inform for several years, I think “I should know the answer to this. I shouldn’t have to ask.” But when I do, I usually get answers and then some – some people answered a future question I’d probably have had. So I appreciate that.

I’ve been around the community for a while and haven’t seen anyone get criticized, though there is the general specter of programmers saying “Boy, you REALLY should’ve known this” and also of, apparently, enough trolls from the past to make this forum or the old newsgroup forbidding for new people. But I’ve been here off and on and I am glad to see new names making real contributions to the forum, and we want to continue that. Something like a person who’s been here 1 or 2 years answering a question may make me feel like I’m a bit slow, but the end result is quite practical and positive, and we obviously need people like that.

Those really rubbed me the wrong way, and I’m glad they were fixed. They’re obviously an order of magnitude or two below a legitimately offensive joke, and I’m just grateful Inform exists, but still, having it happen (and forgetting why) does make it that much harder if I’m in a bad mood and don’t want to deal with snarky error messages.

It’s also tough to report these things because I realize only a few people are working on the project, and they aren’t paid. Yet all the same, when I read some error messages in the IDE, I think “wouldn’t it be better to say it this way?” Now that we have more people using the compiler, it’d be neat to say “In practical terms, you probably said X when you meant Y” or “this was probably a typo for a variable name” instead of a literary reference that I get, but that’s not what I want to focus on right now, and besides it might intimidate/turn off new programmers.

After a few years, I know what the messages “really mean” to me, but 1) others may feel differently and 2) it’d be neat to help make it quicker to internalize things. I recognize this is relatively low-priority though.

Hope I haven’t hijacked the topic. The original post and Lapsa’s questions brought up a lot of concerns I’ve had floating around. So I hope I can push the envelope further in a positive direction.

2 Likes