Compiling Grooverland

mathbrush recently made the source for Grooverland available to the public:

I tried compiling it in 6M62 and I got three of those ‘You need to increase your MAX_PROP_OBJECTS’ type messages sequentially. Once I’d dealt with each case – by doubling the default value – it compiled. But when I asked mathbrush about this, he said he made it in 6M62. And so for him, it compiled without these additional value tweaks.

So what’s going on here? He’s using a PC and I’m using a Mac, but we’re building in a virtual machine, so I didn’t think that would make any difference. It’s a glulx game, so there’s no chance of one of us having the z8 box ticked or something.

-Wade

Huh, weird – I’m on a PC, and I was just able to compile in 6M62 via the IDE without running into any of those issues. The source text does have some of those statements increasing various allocations:

Use MAX_PROP_TABLE_SIZE of 500000.
Use MAX_SYMBOLS of 50000.
Use MAX_NUM_STATIC_STRINGS of 50000.
Use MAX_STATIC_DATA of 300000

So it’s weird you’d need to increase them again.

Anyway figuring this out is way above my pay grade, but figured I’d offer the data point!

1 Like

(edited to include all relevant info)

One idea I just had was that maybe we (me, versus you two so far) have different versions of the three included extensions. Two of them are vanilla, but I wonder about numbered disambiguation choices. All three are worth checking.

I’m using:

Version 7/140501 of Numbered Disambiguation Choices
Version 12 of Locksmith
Version 7/140425 of Basic Screen Effects

The stats I had to increase were not previously increased in the source.

I had to add:
Use MAX_OBJ_PROP_COUNT of 128.
Use MAX_DICT_ENTRIES of 2600.
Use MAX_OBJECTS of 1024.

Finally, here’s my compilation report:

Summary
  The 86894-word source text has successfully been translated into an
    intermediate description which can be run through Inform 6 to complete
    compilation. There were 58 rooms and 416 things.
++ 100% (Finishing work)
++ Ended: Translation succeeded: 58 rooms, 416 things
Inform 7 has finished.
/Applications/Inform-6M62-unofficial-fixed.app/Contents/MacOS/inform6 \
	-kE2SDwG +include_path=/Applications/Inform-6M62-unofficial-fixed.app/Contents/Resources/Library/6.11,.,../Source /Users/wadeclarke/Documents/crap.inform/Build/auto.inf /Users/wadeclarke/Documents/crap.inform/Build/output.ulx 
Launching: inform6 "-kE2SDwG" "+include_path=/Applications/Inform-6M62-unofficial-fixed.app/Contents/Resources/Library/6.11,.,../Source" "/Users/wadeclarke/Documents/crap.inform/Build/auto.inf" "/Users/wadeclarke/Documents/crap.inform/Build/output.ulx"
Inform 6.34 for Mac OS X (5th March 2016)
In:  1 source code files            219953 syntactic lines
179487 textual lines               7653422 characters (ISO 8859-1 Latin1)
Allocated:
 30747 symbols (maximum 50000)    31706703 bytes of memory
Out:   Glulx story file 4.220603 (2268.5K long):
    32 classes (maximum 200)           534 objects (maximum 1024)
   231 global vars (maximum 512)    208189 variable/array space (maximum 300000)
   181 verbs (maximum 255)            1655 dictionary entries (maximum 2600)
   332 grammar lines (version 2)       427 grammar tokens (unlimited)
   192 actions (maximum 200)            48 attributes (maximum 56)
    40 common props (maximum 256)      135 individual props (unlimited)
573021 characters used in text      421967 bytes compressed (rate 0.736)
     0 abbreviations (maximum 64)     8403 routines (unlimited)
196730 instructions of code         135096 sequence points
727296 bytes writable memory used   1595392 bytes read-only memory used
2322688 bytes used in machine    1071419136 bytes free in machine
Compiled with 3612 suppressed warnings
Completed in 1 seconds

Compiler finished with code 0

-Wade

I’ve got all the same extension versions as you, and likewise don’t see any manual updates to those limits in the text. Here’s my compilation report, if it’s useful:

C:\Program Files (x86)\Inform 7\Compilers\inform6 \
    -wSDG +include_path=..\Source,.\ auto.inf output.ulx
Inform 6.33N for Win32 (30th August 2015)
In:  1 source code files            219953 syntactic lines
179484 textual lines               7653353 characters (ISO 8859-1 Latin1)
Allocated:
 30747 symbols (maximum 50000)    18376491 bytes of memory
Out:   Glulx story file 4.220602 (2268.5K long):
    32 classes (maximum 200)           534 objects (maximum 640)
   231 global vars (maximum 512)    208189 variable/array space (maximum 300000)
   181 verbs (maximum 255)            1655 dictionary entries (maximum 2000)
   332 grammar lines (version 2)       427 grammar tokens (unlimited)
   192 actions (maximum 200)            48 attributes (maximum 56)
    40 common props (maximum 256)      135 individual props (unlimited)
573021 characters used in text      421967 bytes compressed (rate 0.736)
     0 abbreviations (maximum 64)     8403 routines (unlimited)
196730 instructions of code         135096 sequence points
727296 bytes writable memory used   1595392 bytes read-only memory used
2322688 bytes used in machine    1071419136 bytes free in machine
Compiled with 3612 suppressed warnings
Completed in 2 seconds

Compiler finished with code 0

Comparing them, all the virtual machine amounts are the same. The big difference is in the ‘Allocated’ section. Yours allocated 18376491 bytes of memory, mine allocated 31706703 bytes of memory. I could guess that’s a PC/Mac difference, but I still don’t get why it would affect those limits that are inside the virtual machine. I hope someone who does get it will come enlighten us :slight_smile:
Edit: My compiler is 6.34 for Mac 2016, yours is 6.33N for Win32 2015. So I don’t know what kind of parity exists in that arena.

-Wade

1 Like

No, you’re building for a virtual machine.

Up through 6.35, the Inform 6 compiler could be built with different default values for MAX_PROP_TABLE_SIZE, etc. It sounds like the Mac and PC builds had different defaults. That’s all. It’s not very interesting.

This has to do with internal tables in the I6 compiler. The generated game file would be the same.

(As of 6.36, all those settings have gone away, and the internal tables expand as needed.)

5 Likes