I have had to up my MAX_STATIC_DATA on my learner’s game to over 500000 (I went ahead and bumped it to 1000000 to avoid further messages). I’m worried that I’m going so far outside the ‘norm’ and it’s not like my game is now huge or anything – I am just making rather extensive use of the non-room-or-object data structures. Essentially 21 complex data objects are all that was required to bust the heck out of MAX_STATIC_DATA.
I have implemented the static data structure by adding text and list properties to kinds of value; I’m thinking now that this may be the most inefficient possible way to store things in i7? Anyway it seems really inefficient. I’d kill right now for just an old-fashioned, plain-vanilla, multi-dimensional array. (Lists of lists are a possibilty? Perhaps I should have avoided starting from a base of kinds of value and adding properties to each value…)
So I’m considering, should I reimplement all of this in the form of a table? It won’t be cleaner if I do it that way, it’ll actually be uglier, IMO, so I’d only do it if there is significant memory savings. Also if there’s any other more efficient way to do this kind of thing, I’d love to know (P.S. this isn’t the real data, I’ve used placeholder values)…
[code]A widget is a kind of value. The widgets are blue, orange, red, yellow, green, blue, violet, white, black.
A widget has some text called the introduction.
A widget has a list of widgets called the connected widgets.
A widget has a list of texts called the passwords.
A widget has a list of texts called the operations.
A widget has a list of objects called the connected objects.[/code]
Each of the above lists would contain no more than two or three items, and yet just 21 of these ‘widgets’ have managed to send my MAX_STATIC_DATA into an apparent stratosphere. Which worries me because what I will really need in the end is more like 100 of them. Is this just the cost of doing business? I could live with it and just resign myself to glulx and give up any chance of a standard z8, but I get the feeling I am missing something more efficient.