Baffling Nonsense Error

The team I’ve been working with has encountered something of a substantial roadblock regarding Inform 7 and what appears to be a content overload of some sort.

We presume it has something to do with Inform exceeding an invisible filesize limit, where it starts to break down into erratic behaviour that results in a compile fail. This is the error:

[code]In Book 10 - Let the Games Begin:

Problem. I am unable to put any value into the variable ‘cleave clove | closet’, because sound name is a kind of value with no actual values.

Because of this problem, the source could not be translated into a working game. (Correct the source text to remove the difficulty and click on Go once again.)

The Book 10 is the last Chapter marker in our file.

Removing extensions “Fixes” the issue. It seems purely filesize-related because adding/removing variables and merging extensions has no effect, other than it becomes some completely random, new error.

We presumed it might be variable-related due to the error occurring during a variable listing. See here:

(1) ! 1486 gsgl (I77_entire_game) ! 1487 | shake shook (I76_figure_of_cover) ! 1488 shape shaped | shave () ! 1489 shoot shot | singe (I245_file_of_flexiblestory) ! 1490 slide slid | sling (I70_english_language) ! 1491 | swear swore | (I79_didn_t_understand_error) ! 1492 | unset unset | upset (I105_present_tense) ! 1493 mislearning mislearned | misreading (I111_first_person_singular) ! 1494 | missetting misset | (I118_nominative) ! 1495 misspent | misswearing missworn (I121_neuter_gender) ! 1496 mistelling mistold | misthinking (I125_brief) ! 1497 misworn | misweding (I237_timer_event) ! 1498 outseen | outselling (I320_all_styles) ! 1499 preshrunk | presplitting presplit | (I333_left_justified) ! 1500 | quick-freezing quick-frozen | (I338_light_weight) ! 1501 reawaken | rebiding rebid

“gsgl” is the last “Legitimate” variable. The rest is gibberish to us.

The parenthesis for the text displayed in the error is empty, as you can see. While the various verbs change with each adjustment to the code, the segments inside the parenthesis and their ordering stay the same.

At this point, we’re completely out of ideas and all production is stalled for us.

Where did the quoted block come from–part of the error message? It looks as though what you have there is some kind of listing of irregular verbs, which is definitely some kind of internal stuff that shouldn’t be happening.

This might be something that could be fixed by changing some kind of internal limit (it sounds like you might have more variables than Inform is expecting), but you should report it; if the problem is too many variables Inform is supposed to catch it and ideally tell you which setting to change. See here for an example of how to report a bug with source code that’s too big to post; if you don’t have the source code publicly available I think you can post the bug privately and attach your source code.

(I am also surprised to see the conjugation “misweding,” though I can find a source on the internet that claims this is correct. But surely “miswedding” is more common, if either can be called common?)

This is a bug in the Inform 7 compiler, so there are no limit settings to tweak.

The error in question was found in the auto.inf file.

We already filed a bug report, but we haven’t really received a response for it. I decided to check here to see if this issue might be well known.

No, I’m afraid it isn’t.

Oh, hang on, are you the Flexible Survival guys?

That’s important context. FS is probably the biggest (in terms of sheer size) Inform game I’ve ever seen. If anyone was ever to encouter hidden limits in I7 it makes sense that it’d be you.

I’m really sorry that this has stalled for you. The continued growth of your project has always astounded me.

Does that mean you’ll be adding some content and removing some content from now on? That rather sucks… Should I start keeping multiple versions of your releases, knowing that some releases will have some content and others will have other content?

Yeah, that’s us.

As things stand now, yes, the only way we can add content is by removing other stuff. The short-term plan is maybe adding a few bits of content here and there by removing things that are very extraneous, but that’s ultimately not healthy in the long term.

And yeah, I believe the game’s filesize is somewhere around 49MB in text alone.

Unfortunately, although these errors do all get fixed, I7 doesn’t come in small bugfix releases (except after a major one if some issues slipped under the cracks and need major attention). I can’t speak for the dev team but I don’t see this issue being resolved in the near future…

An alternative, of course, would be to take a good long hard look at the code and optimise, optimise, optimise. I understand a lot of the code comes from various contributors? Who, presumably, each have their own ways of doing things? Maybe there’s some things that could be done slightly differently to economise… hardly an ideal solution, but as a stop-gap, it might help.

A release should be coming soon. But unfortunately this seems like something that will be hard to optimise without more specific info.

BlueBishop, don’t you have the source code in a sort-of-public place for the various contributors to add to?

Dannii, do you think it’d help if access were granted to the source code? Can’t get more specific than that. :wink: Although it’d probably huge.

And, this is probably completely unrelated, but I’m saying it just to get it out of my head: I know you guys “release along with an interpreter” (Parchment/Quixe) to play it online. Out of pure curiosity, do the problems continue if you remove that line and just compile straight to the .ulx file?

The github of the source code is linked in the bug report. (I hadn’t realized it was this bug when I linked a previous Flexible Survival bug as a way to report bugs in massive projects!)

All the extensions and the (Found in the inform folder) are publicly available here:

Note that this should be a version which will compile properly, adding random extensions will likely cause the erroneous behaviour.

Erm… Also, I should probably note that this fare isn’t for the faint of heart, so you might want to stow your monocles, lest they damage your screen. . .