I’d be interested in a wiki for hints and so forth. But I thought the game had good internal hints? Either way, it’s maybe good to have another layer of clues. Part of me wants to write HTML style invisiclues for it.
It’s exciting to see the source released on GitHub in any case.
I just noticed that the errors are getting reported in reverse order. I wonder if somewhere near the top it’s trying to assign an initial appearance to a kind, setting the default, and then causing a contradiction? Still weird though.
aschultz, unfortunately lots of the problem lines start with tabs haha. That is a decent idea though - I can regex search using notepad++.
I wonder if it would be more tractable to chop the game into a number of extensions and port each one to 6M62 independently, constrained only by their dependencies. That structure could also help reduce git conflicts compared with everyone editing a single file.
I appreciate your effort to upgrade the dependencies. I briefly tried to help with that, but I realized you were doing all the same things as I was as I was going along! As an alternative to that, I thought I’d try the route of leaving the code as it is, compiling it using its original dependencies, and making minimal fixes.
I installed Inform 7 version 6G60, I checked out the initial commit of the repo (before the 6M62 migration attempt), and I installed all the extensions found there. (I had to fiddle with CM Automatic Drawers by Emily Short to get it to install, since it calls itself Automatic Drawers internally.)
It looks there are at least a couple of files missing:
Room Description Control by Emily Short (which is included by Tailored Room Description by Emily Short)
Assorted Text Generation by Emily Short (which is included by CM Automatic Drawers by Emily Short)
It seems like the IDE automatically installs versions of these, but the versions it gets are newer than it is, using features the compiler can’t handle.
If Emily gave you contemporary versions of these extensions, could you add them to the repo, maybe on a different branch?
It could perhaps help? Ideally that’s what I’d prefer it to end up as. (Kerkerkruip was much more manageable that way.) But to do that you’d need to know the codebase really well, and I think Emily is the only one who does at the moment, and she doesn’t have the time, which is what started all this.
I also suspect that it’s quite integrated. I’m not sure how compartmentalisable it will be.
The versions of those two extensions in the repo are the 6G60 versions already.
Btw, I suspect I won’t have time to work on this until next weekend (if I even have any then.) If anyone would like commit access to the repo, just let me know. My way of going straight for 6M62 might not be the best, so there could be other approaches to it, and you’re welcome to try anything! We can always go back to an old commit.
Ahh, you’re right! I copied the wrong version of the file somehow. I’ve got it building now.
I don’t know if I’m going to be able to focus much this week either. I might like to have commit rights, but for now I’ll just work with my own fork of the project until I have something to show for it.
These runs are the 6G60 build. I annotated the generated I6 calls with what they do.
What we see: 5.7 seconds of startup time. Most of the time is spent in the “caching thread position information rule” and the “initialize hash codes rule”. No surprise there. It’s a lot of relation-testing. Also we spend a solid 1.25 seconds on the task of converting text object names to indexed text for the “initialize hash codes rule”.
I haven’t looked at the I7 code, so I don’t know if this is something which can be optimized or pre-computed. Maybe it’s cheaper in 6M62 (due to indexed text unification).
I’m more interested in the second run. 5.7 seconds for launch is annoying, but spending 10 seconds processing three moves and four LOOKs is a real drag.
There’s 2.5 seconds on “sanity-check stage rule”. This turns out to be spent entirely on “room-restriction rule for a southern room” – not because the body of that rule is expensive, but because deciding whether a room is “southern” is a map-route test! By far the simplest optimization would be to change “southern” to a boolean attribute and manually set it on rooms in that part of the map.
I think that we should revert this feature and release a new version asap. The hint thread suggests that it’s damaging an otherwise great experience for many new players. We can reintroduce it in a later release when the issue’s resolved.