I6 storage exceeded?

Translating the Source - Inform 6 ran out of memory
The application ran your source text through the Inform 7 compiler, as usual, and it found no problems translating the source as far as a sort of intermediate-level code - a program for Inform 6, which would ordinarily then be used to make the final working IF.

Unfortunately, the program must have been too demanding for Inform 6 to handle, because it reported that one of its memory settings had been broken. These are upper limits, usually on the number of things of a particular sort which can be created, or on the amount of memory available for a given purpose.

To get around this, look at the actual output produced by Inform 6 to see which memory setting was broken. For instance, suppose it said:

The memory setting MAX_PROP_TABLE_SIZE (which is 30000 at present) has been exceeded.
You then need to amend your Inform 7 source text to take account of this, by adding a sentence like the following:

With sentences like this, you can make Inform 6 raise its limits until there’s no longer any problem: see Chapter 2 of the documentation.

Sorry for the inconvenience.

It’s me again!
As you can see from the included error message, I have broken I6. If anybody out there feels they can interperate the message and point me to the solution, I will send them the applicable files.
It appears as though the process of generating code is treated as “a game” just as the compilation of the game. What broke the compiler was a region statement defining a 7x9 array of rooms. This is in addition to an initial program section of about 60 or so rooms.
And I ain’t done yet!!! I have a lot more rooms to design.
Here is the complete regions statement:

Sorry if this is a stupid question, but did you do what the error message says? It gives quite explicit instructions on how to fix the situation and even points to where you can find more information (although for some reason it doesn’t give the full chapter number - 2.14 is the relevant chapter).

I’m sure that somebody who knows what he is doing will give you a better answer, but when I run into this kind of error I hit the “back” button in the right-hand pane until I get to the error message produced by the second-stage compilation (I think it’s one or two frames back from the “final” error message). That will identify which particular “setting” (I’m probably using a technically inaccurate term here) is too low, and what the current value of that setting is. I don’t begin to understand what the various settings actually mean, but if the machine tells me that a particular one is too low I try setting it higher (by adding a line such as “Use [whatever the setting in question is] of [some number bigger than the current one].” I just keep increasing the number in increments until it compiles without an error. It’s probably a dreadfully imprecise way of doing things, but it works for technical Neanderthals like me.

Robert Rothman

In the Mac IDE at least, you can hit the “errors” tab on the right of the window (actually you’re probably there already). Then there will be two tabs at the top of the window, “progress” and “problems.” You’ll be on the “problems” tab; click on the “progress” tab and that will should give you a message that tells you what constant was exceeded.

(The “progress” tab of the “errors” tab is the actual output produced by Inform 6, which is what you’re being told to look at when it says “look at the actual output produced by Inform 6 to see which memory setting was broken.” Unfortunately, the error message is not helpful in telling you how to do it; I had to comb through the documentation a little to figure out how to do this. [UPDATE: As Juhana says, it’s in 2.14.])

Once you’ve seen that, you can increase that constant using “Use MAX_PROP_TABLE_SIZE of 50000” or whatever; hopefully that will take care of your problem.

Thanks all.
It would appear that even though the writers of I7 have given me all of the tools I need, I’m still unable to look past my problem and see the solution!
I changed the limit to 200000 and everything is now working fine. I guess I’ll not have to go stand out in traffic again!
One would think that after 50 years of fighting programming problems (created by me) that I would have accumulated enough know-how to handle things that are right in front of me. I’m going to go to the gym and work this off. :mrgreen:

There’s always something new. I agree that programming is as much of a puzzle as playing a game sometimes - that’s sort of the appeal, I think! :stuck_out_tongue:

If you want to keep memory sizes down, and you have a lot of nearly identical rooms, you might consider making some of those rooms virtual. There are a few tricks for that. The one that first comes to mind is Example #260: Dubai


A system for managing items left in a virtual room is found at the very end of the example, as an alternative.