A good deal of my IF-related time in the last couple of months has gone into Inform, and I’m pleased to say that the new build is available today for Windows and Mac (and other apps to follow shortly). There’s an introductory blog post here that gives an overview of what the new build does; there’s also a change log, which is absolutely mammoth, here.
There are loads of new things going on, but I’m particularly excited by Inform’s new adaptive text, which I see as a partial step towards making the system more capable of doing interesting things with procedurally generated text output. The adaptive text allows Inform to inflect verbs according to the current tense and viewpoint of the story, automatically turning “[We] [walk]” into “You walk” or “He walked” or “We will walk” according to the current settings.
But it goes considerably beyond this. The new example “Narrative Register” shows how to associate verbs with different actions, then have the narrator automatically describe what has just happened with a verb that is appropriate to a current “diction” setting. The “Relevant Relations” example associates verbs with relations as well, and shows a way of doing room descriptions in which the author tells Inform which relations ought to be described to the player, leaving the system to assign appropriate verbs and construct sentences around them.
These are all fairly early-days things; there’s a lot that would still need to be done in order to get from here to the kind of text generation I would one day like to see, including (especially) some code designed to do a good job of sorting and concatenating related sentences before printing them.
But Inform can now track the meaning of its output more deeply than it did before, and perform more grammatical functions automatically, and that’s a helpful step.
This is very exciting!
Where exactly are the two examples you mentioned by name (“Narrative Register”, “Relevant Relations”)? I’m looking at this list of examples in the manual:
http://inform7.com/learn/man/examples.html
and don’t see either of those titles.
I think the online version of the manual hasn’t yet been updated, but they should be visible within the app.
Holy cow; congrats to you and the Inform team! And thank you, so very much.
This is really exciting! I’m in the position of a kid who has to wait till the eighth day of Hanukkah on this point, because I don’t want to update Inform until I’m done with my current project, but I’m looking forward to it. Congratulations!
We talked about text generation in the Missing Tools thread and I’ve recently run up against some of the details about how hard that actually is to implement — I’ve tried to print a list at the beginning of a sentence and WOW. It turns out to be surprisingly difficult to say “Whatever the next character is, make it uppercase!” If, as a long-term project, you would like to be bombarded with unrealistic suggestions about what sort of text generation it would nice to be able to do, I will be happy to oblige.
I saw your comment on that. I think the specific problem you describe could be fixed by making Complex Listing able to build and export a string of text as well as just saying all the content — then you could do text transforms on that string as much as you liked. This is doable now, but wasn’t when CL was first composed, well before indexed text existed.
I’ve got a partly-drafted blog post that goes into more detail about procedural text stuff that has been tried in the past and where I think the hiccups still are, but I’d certainly welcome more input.
I will await the post eagerly!
The Complex Listing problem could be solved by making Complex Listing export a text, and this has made me realize that I can redefine “A list of…” and “The list of…” so they take the ordinary list and capitalize the first letter (see here). And wait… does that trick work for Complex Listing as well?
To say A prepared list:
let T be indexed text;
now T is “[a prepared list]”;
replace character number 1 in T with character number 1 in T in upper case;
say T.
*forehead slap*
Well, I learned something. Sorry for the off-topic digression!
Thanks for the post and thanks to all for such great work on this Inform7 update. I’m looking forward to diving in and learning more.
Wonderful!
One thin, though: I think that to be sufficiently flexible, text substitutions would need optional names, as in [we – the subject] [the subject carry the object] [the noun – the object]. In some languages verb forms depend on the object as well as the subject, and in many languages the subject does not necessarily precede the verb. In German subordinate clauses, or in Turkish, the finite verb form comes near the end, arbitrarily far away from the subject its shape depends on.