# Inform 7 6L38 Third Party Extension Compatibility List

…yes?

(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.

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: https://intfiction.org/t/problem-solving-characters-by-ron-newcomb-l602/7253/1

Thanks to Victor Gjisbers and Sebastian Rahn an update of Flexible Windows for 6L38 is now available at github.com/i7/extensions/blob/m … indows.i7x

I haven’t actually tested it but Sebastian says it mostly works. At the very least it will let you keep working on projects that need it until I get my rewrite finished.

That bandaid patch of flexible windows is giving me problems on my project. It compiles, but upon starting I always get this:

Fatal Error: glk_window_open() was called without a window to split, but a window is already open.

Additionally, inform itself mentions a “Non-existent property (P10)” runtime problem.

This happens even if I comment out everything relaxed to Flexible Windows short of the “Include” line. My game is a bit technical and beefy, so it would be somewhat time consuming to go through everything one at a time to figure out what kind of conflict might be causing this.

Other than this, FW appeared to work well enough in a small test game.

TIA.