I’m teaching an undergraduate course on IF, and I’d like for my students to be able to read the source code of Emily Short’s Glass while playing it in the Inform app. The problem is that the app settings for Language Version only allow the user to go as far back as Inform 7.9.1 (6L02), May 2014, but the source uses Inform 7 build 4A54 (or at least some build from around that time).
The only workaround I’ve managed so far is to download the earliest build available on the I7 site ( 7.4.2 (build 4U65) - May 2007) as a separate, old, 32-bit app, and run Glass in there. Short of having them download another app (and one that won’t run on Catalina), are there any other workarounds in place? The preferable solution would be to download old language versions and run them in the newest Inform app–is that possible? According to this I7 page from last October, there have been plans to incorporate the older language versions, but I don’t know if there has been much progress on that front as yet…
Any information on this would be very much appreciated.
All the best,
The situation you’ve found is pretty much all there is.
It’s not worth trying to use an older compiler version with a newer IDE. It may be possible in some cases, but I don’t think it’s been testing and the potential headaches are large. You can run the compiler from the command line (with no IDE) if necessary.
The most practical solution – and I know it’s not trivial – is to update the source code to work with the current version of I7. You can contact Emily about this.
Thanks for the quick response, Andrew!
Considering that it’s an English class and it’s difficult enough (remotely) familiarizing them with text editors, I’ll probably set aside command line compiling for a different class. Updating the source code is tempting, but too much to accomplish by Thursday. Just wanted to make sure there wasn’t an easier way of doing this that I was overlooking. Fortunately, Bronze still works with the right settings and extensions, and most of the students should be able to run the earliest Inform build available if they’re interested in doing so.
Btw, we just wrapped up the week on Shade today, and the students had some excellent analyses of the source code for the stereo.
If I remember right, there was a community effort a while back to update Bronze to the latest I7. I can’t find where it’s gone though…
Here’s an update that compiles–I haven’t tested to see if it works properly!
The changes required were pretty minimal:
- a whole mess of “change… to…” become “now… is”
- define a few actions that had been eliminated from more recent Inform versions (swearing obscenely, swearing mildly, singing)
- change one procedural rule to say “the… rule does nothing”
- I didn’t have the cover image or walkthrough so I commented that out of the “release along with”
I think that’s it!
story.ni (70.2 KB)
I took a crack at it this afternoon, and was able to get it running and packaged for the Inform editor. It still needs to be tested, but it is here:
Ha! Great minds & etc., @matt_weiner .
I found the same list of changes that you did – although you forgot to mention “end the game” -> “end the story”, and I was able to get the cover image and walkthrough from archive.org (Ryan had pointed it out to me earlier). I’d be curious to hear your review.
Although I left most of the release statements, I ended up removing the “release along with a solution” which gave an odd error I couldn’t immediately resolve:
Error: no threads in the Skein have been marked ‘***’"
I ended up cut-pasting the changed source into the Inform editor and saving it as a .inform with a whole mess of packaged asset files. Do you think the .ni should also be at the top-level of the repo (or directly linked from the README)?
“Release along with a solution” attempts to automatically generate a walkthrough from your Skein. If you haven’t played through the game at least once, and marked the ending with a “***” annotation, Inform won’t know what to do.
So I’d just leave that line out.
Also, I believe “release along with a solution” is completely broken on Mac IDEs, because the new Testing panel which replaced the skein doesnt allow you to annotate nodes. (Mantis bug, forum thread.) So definitely leave that out if you’re working on a Mac.
Got me, nice catch!
When I’m creating a git repo for an Inform project, I “git add” just these files:
Then I have a .gitignore file:
The other files in the project are all regenerated when you compile, so there’s no need to store them. Except for Skein.skein, if you use the Skein – I don’t, so I skip it. Also Skein.skein tends to be enormous.
Linking to the story.ni from the README makes sense.
If you have libraries or media assets in your .materials folder, add them too.
I dont find that I need the plist either if I use ni, inform6, cBlorb from command line.
That makes sense. The settings file tells the IDE what command-line arguments to pass to the compiler.
By the way, if using Glass as a code example, even the updated version doesn’t use some of the features of Inform 6M62. For instance, there’s a section about giving new messages for various actions that don’t accomplish anything like waving and going nowhere. If this was written from the ground up in 6M62 a lot of that could probably be done by replacing response messages.
(Also it uses the begin; end; syntax instead of colon-indentation, which always freaks me out.)
I think that for the updated version “what are the absolute minimum changes needed to make this work?” was the right approach for the use case. @ryan_leach is currently leading a class of about forty students through playing it and examining the code. They can examine the original code, but to play with that code using the Inform inspection and testing / debugging tools then they need it modified to work in the editor… but it is still nice if the formatting and syntax is still very close to how it was originally written, because they are treating the code like an historic document from 2006 (they are also reading things in other languages from other moments, including Zork, and Shade).
Still, it would be very interesting (for me and for the students) to see what a “modern remake / rewrite” would look like, code-wise! I would absolutely host that on a branch of the glass-update project repo…
I just finished running the Glass solutions.txt file command sequences as tests in the Inform editor. Everything worked correctly. That doesn’t mean there aren’t subtle bugs, but the six documented walkthroughs and their transcripts all appear to be correct.
(The solutions skein contains spoilers):
Thanks so much, @zarf. For development, that makes a lot of sense, and is helpful – constant renumbering of the skein is extremely chatty in the commit logs to no purpose, and even a small change to the source text can create a pile of build changes throughout the release files. I will keep that
.gitignore configuration in mind in the future.
That said, because this is primarily about archival access rather than for ongoing development, I am going to be checking the full release assets into the repo. Hopefully it will make the archiving a bit more robust. I also committed a fully blessed skein with all the transcript text. Students can then open it in Inform and use the testing tab to browse a branching transcript – or as a navigation aid to “Play to” different parts of the solutions.txt walkthrough.
Thanks for all the responses and revisions, everyone! I hope (and think) it will be useful beyond the scope of this class as well.