Inform 7 6L38 Third Party Extension Compatibility List

hi everyone,

complete newb here (just joined!) and i was trying to figure out the compass rose tutorial that makes use of glimmr and flexible windows and kept running into crashes even when i start a new project and type:

Include Flexible Windows by Jon Ingold.

Hello World is room.


i just wanted to confirm that this thread is still accurate and that flexible windows is currently incompatible with I7.

no biggie… i’m just experimenting with implementing the game i have in my head for now but i’ll put off the windows arrangements and compass rose type stuff until later if these extensions are broken.


actually, as a newb, i’ve found that the inform 7 website and documentation is really complete and helpful but it would have saved me a LOT of time if incompatibility was noted on the EXTENSIONS page. alas, IF is a bit of a subculture and it took me a little while googling to find this place.

anyhoo, thanks much.

I believe Erik has stated that he’s not planning to update Glimmr for the new version of Inform, so even after Flexible Windows is fixed that’s going to be a bigger problem.

We (or just me) will eventually update Glimmr for Kerkerkruip, though only the ones it uses to start with.

Okay, I found the problem. The actions were not being compared correctly.

This also revealed a larger bug that I hadn’t noticed: in Ron’s original code, a new object is created for each attempt. This ensures that they’ll always be in order when they’re sorted by object number. But in my version, to avoid problems with dynamic objects and indexed text (as well as to improve performance in longer games) I made it so that attempts would be recycled when they were no longer needed. This works, but the order is effectively random.

I’m working on a fix for this now, after which the example as written should work properly again.

Procedural Randomness by Aaron Reed compiles as-is. The tests don’t yield exactly the same results in 6G60 and 6L02, but there’s no particular reason to expect they should. I don’t know if there’s a good way to test if it’s behaving exactly as it ought. UPDATE: This is probably a difference between z-machine and Glulx rather than between 6G60 and 6L02.

Reactable Quips by Michael Martin does not compile, but there appears to be a simple fix. However, the response messages are not adaptive.

In fact, Reactable Quips and Quip-Based Conversation by Michael Martin have been fully updated for 6L02, here. (I haven’t tested them myself.)

Forgive my ignorance, but isn’t there a checkbox in the Settings to lock the random seed generation thingy whatsit so that a repeatable playthrough wields the same results, though randomly generated?


(If the question is “Doesn’t this make Procedural Randomness redundant?” the answer is no, because that checkbox only affects testing versions, not release versions. Also Procedural Randomness gives you much more flexibility in how to lock the seed.)

I meant “Doesn’t this make it possible to check whether the test would yield exactly the same results?”.

Which is probably not that important at all, because you don’t feel it is and you’re much more familiar with the extension and its use than I am. I just thought I’d ask.

EDIT - My two brain cells got together, had a puny “eureka” moment, and have grounded the rest of my brain until it decides to function properly. My fingers are similarly to be grounded until further notice after this post, for being far too quick to type silly questions for their own good. Never mind.

Randomness in Inform (and in most computing) works by having a mathematical equation that produces a pseudorandom sequence of numbers based on a “seed” number. The sequence is only seemingly random because it’s always the same if you use the same seed number, but there’s no immediately visible pattern and it’s practically as good as true randomness for most purposes.

For example, if you think of the pseudorandom number generator as a dice thrower, a seed of 8729 might produce results 4, 2, 6, 1, 2, 2, 5, … and so on, always in this order. Inform’s debugging option sets the seed to some fixed value which is always the same for each playthrough, so the sequence of randomness results is always the same. If the option is not used the seed itself is randomized at the start (I don’t know the exact details) so that the randomness sequence itself is unpredictable.

The important part here is that Inform uses the same sequence for all randomness checks. It means that if you have two dice in the game, a red die and a blue die, their randomness isn’t locked separately. If you have Inform lock randomness and throw first the red die twice and then the blue die twice, the red die’s results are 4 and 2, then the blue die’s results are 6 and 1. If you restart and throw the blue die first, it shows a 4 (and then a 2 and so on). So the random results are picked from the same sequence and the next die roll’s result is set regardless of which die you choose to throw.

With Aaron’s extension you can lock randomness in two ways: you can make it so that a die’s throws are random but predictable independent of other random events in the story. In other words, you can guarantee that the red die always shows 4, 2, 6, 1, … in this order regardless of how many times you’ve thrown the blue die. The other is a special case of the first one: by always resetting the seed, you can at any point lock the die so that it always throws a 4 until you “release” the lock and it starts to act randomly again.

I hope that’s more helpful than confusing.

Thanks, I’d already thoroughly kicked myself. :slight_smile:

If it’s not overloading the kicks, the way the example I was running works is that there’s a bunch of telephone numbers (from 1 to 9999 I think), and when you dial one Procedural Randomness seeds the generator with the phone number itself and randomly generates a name and answering machine message. Which means that it can guarantee you get the same name and message every time you dial 2452 (since it’s the result of seeding the generator with 2452) without storing 9999 names and messages.

Checking the box doesn’t make a difference here, because the checkbox keeps the game’s own random number seed constant every time you run it, but the test example is already throwing out that seed (or rather, reserving it for random numbers rather than procedurally random ones) and replacing it with the telephone number you dialed.

What I meant when I said that the tests don’t yield the same results is that “dial 2452” doesn’t give the same name and message in 6L02 as it did in 6G60. Which means that something probably happened to the inner workings of the random number generator in between builds. But it does yield the same result every time in 6L02, which is what’s supposed to happen.

Are you sure you had both set to the same VM? Glulx and Z-machine give different results because of their different integer range.

Oh, derp. You are almost certainly correct; I probably just left them on the defaults. (Don’t feel like restarting 6G60 to check now.)

Whew. So glad I’m not the only one on the receiving end of the kicks.

Command Prompt On Cue doesn’t work properly in 6L02; I don’t know enough I6 to fix it, but I wrote a replacement in almost pure I7. Note: Since it works essentially the same way as Command Prompt On Cue, it has the same drawbacks (when you choose to interrupt, the second letter you type may be lost if you type too fast, a one-letter command right after can cause a spurious parser error (which is suppressed for that turn to make it less annoying), and the first letter of the first command after an interruption cannot be deleted).

Hidden Prompt.i7x

EDIT: I see Ron already fixed his extension. Oops.

Mobile Doors doesn’t seem to work in 6L02, even using the updated version from Github. Whenever I attempt to move a door (using “move the X to dir1 of the Y and dir2 of the Z”), I get the following response:

[code][** Programming error: tried to find the “.” of (something) **]

[** Programming error: tried to read (something) **]

[** Programming error: tried to find the “.” of (something) **]

[** Programming error: tried to read (something) **][/code]

EDIT: The problem was in Inform. I had made a one-sided door, and one of its sides was set to what seems to be a garbage value. When I moved the door, that garbage was passed along to AssertMapConnection.

I reported this as bug #1363, which has since been marked fixed.

I’ve uploaded a copy of Dynamic Tables to Github for 6L38. The fix is thanks to Ron Newcomb: