Out of date extensions?

While researching to write my own combat system in inform 7 I have been referencing Kerkerkruip attack’s source code along with a few others. Many of the pieces of code I have been looking at have been described as out of date and not likely to work with the current version of inform.

Is it wise for me to be referencing this code if I don’t know what part or why some of the code is out of date. Can anyone here help me understand the sorts of changes that have been made over the years that make a lot of older extensions unusable?

I’ve also been reading Jim Aikin’s 2nd edition inform 7 handbook from 2015. Would most of this text still be work referencing as it seems to be a well written guide and gives a lot of useful examples.

As someone new to this language and computer languages in general, it can be quite difficult to decipher some more complex code and make sense of it and the extra seed of doubt due to the age of some code makes it just that little bit harder to know where to look for more exotic examples of code.

Anyone who can shed some light on this would be wonderful.


1 Like

There have been a good number of changes over the years but for the most part they’re the sort of thing that will just prevent an old extension from compiling rather than introducing a subtle shift in functionality.

I’m going to tag @Zed since he’s done the yeoman’s work of testing all the extensions to see which are current and which throw off errors, as well as making some tweaks to update them when possible; see thread here and results here. Hope this is helpful!

EDIT: Sorry, I answered this while half-asleep (had a sick baby sleeping on me) – looks like you do want to know the details of the changes. There’s a comprehensive writeup in the documentation so it’s certainly possible to work through that; the organization makes it pretty easy to skim the headings and see roughly what the changes were… until you get to the “earlier builds” section and realize there’s a lot of content there, too, and it’s all basically just in long text files.

Overall my sense is that if you’re a beginner looking for examples to help you understand the language, you’re very likely to go too far astray; there are some new added features, like responses, that you might not see used in earlier sample code, and there are some lower-level changes that will make wholesale copying-and-pasting challenging (this is where the extension stuff I linked above will be helpful). But if you write your own code following the examples you’re seeing, and compile frequently to test whether there’s some weird issue that seems to be breaking things, I think you should mostly be fine.


There are several obvious language changes between 6G60 and 6L02 – the Change Log Mike linked to covers them in detail. There are still some 6G60 extensions that have never been modernized that would pretty much only take updating change x to y to now x is y and making sure they don’t depend on Plurality by Emily Short.

The trickier part is that lots of extensions rely on low-level stuff that Dr. Nelson explicitly states is subject to change between releases without notice, including undocumented features, and the Changelog doesn’t spell out changes to those.

I know off the top of my head why one old Kerkerkruip extension doesn’t work: Automated Testing by Kerkerkruip depends on Simple Unit Tests by Dannii Willis and the latter completely relied on an undocumented implementation detail of rulebooks which changed after 6G60.


Thanks for the reply, it was very helpful. I’ll continue to reference Jim’s book in that case as it seems most of the examples he gives are fairly ‘standard’ and with it being such a comprehensive text it would be a shame to not utilise it.

I think what I’ve discovered in this process, as I’m sure many other have, it’s quite difficult to tweak existing code to bend to your will rather than simply starting fresh.

I’ve been fiddling with the lanista 2 example that is used in the current build of inform and have successfully gotten some things to work, however as I try and add new ‘kinds’ of weapons etc they often don’t work which then requires me to check every rule that has been laid out to see if those rules would work for my additions. This in itself is a bit tiresome and frustrating so I think going forward I will reference other code but write from scratch to ensure that each rule I write applies to all my intended outcomes etc.

Combat systems feel a bit tricky as there are so many variables that can come in to play within an interaction.

The main thing I’m trying to wrap my head around at the moment is how to have a combat round structured so that the player can have an option as to what they want to so in response to the enemy attacking them. Kerkerkruip does this beautifully however the particular options Victor has built in are not suitable for the game I have in mind.

Anyway, my reply has turned into a ramble but thanks again for the reply, as usual the members here are very timely and helpful with their responses to newcomers and I look forward to having some more technical and specific questions that may be answered in future as I build my combat system into something that’s actually engaging and enjoyable to use.


Thanks Zed, I appreciate your knowledge on the subject. Would it be safe to assume that most of the code in kerkerkruip attack is still relevant and worth referencing? The more I read over it the more I feel like I’m starting to grasp it however there is still a lot that seems a bit more complex than the average i7 code that I see in most worked examples. I’m guessing that this is largely due to the fact in there is a level of ‘mathematical’ type code which is used to determine numerical values for damage etc.?

EDIT: I just looked at the arithmetic section of the inform 7 wiki which I’ll need to deep dive on before I can fully work my combat system by the looks.

1 Like

Yeah, I think this is by far the best practice – at least, when I was learning Inform, I started out sometimes just copying stuff from the recipe book in to help quickly implement something, but pretty quickly found that would lead to trouble down the line since I didn’t always fully understand how it was working. Rewriting things myself was slower at first but meant I actually knew what I was doing!

Yeah it’s very tempting to try and save time by changing working examples but I think in the end (unless it’s an extension), you’re better off writing it from scratch. I think adjusting expectations is important too, especially when learning a new skill has to fit in between family life, work like and just regular life as well. As they say, patience is a virtue.

1 Like