I discovered Inform 7 last year and was impressed at the sophisticated platform it provides for writing interactive fiction in semi-natural English. In the 1980s there were plenty of books about writing text adventure games (as they were more widely called then) on home microcomputers, and I learned a lot about programming Acorn computers from Peter Killworth's "How To Write Adventure Games for the BBC Microcomputer Model B and Acorn Electron". So to give Inform 7 a try, I implemented the mini four-room adventure from that book, and wrote a walk-through of how to do it quite neatly with the building blocks of Inform 7 here in case anyone's interested: https://www.eclecticstacks.com/post/mini-adventure-in-inform...
> In the 1980s there were plenty of books about writing text adventure games (as they were more widely called then) on home microcomputers
Indeed. Adventure games were the most sophisticated games around. Companies like Infocom and Magnetic Scrolls ruled the roost. Teenagers like myself aspired to one day work there, which for me was a major reason to go and study AI (which was mostly parsers and tree walks at the time).
And then along came iD software. One day I walked into the shared computer facility of my university and everybody was playing Castle Wolfenstein and I remember thinking: o shit...
Fortunately AI did not turn out to be such a bad choice after all.
I had the pleasure of being taught mathematics by the creator of Inform, Graham Nelson, at Oxford (and Oxford class sizes are _small_, 2-5 students). He’s a super interesting guy - created Inform, teaches pure mathematics at the highest level, but seems to most enjoy writing poetry.
The "Inform 7 Programmer's Manual" by Ron Newcomb explains Inform 7 from the point-of-view of someone who knows how to program in other languages.
Version as of August 15, 2011: http://www.plover.net/~pscion/Inform%207%20for%20Programmers...
Inform 7 code is interesting from a conceptual perspective —- “How could we build a programming language that looked like natural language?”
In practice though, I think it ultimately falls into some kind of uncanny valley, where it’s just enough like natural language that it seems like a certain sentence or grammatical construction should work, but it doesn’t.
> some kind of uncanny valley, where it’s just enough like natural language that it seems like a certain sentence or grammatical construction should work, but it doesn’t.
Luckily, the target audience of Inform are people who like adventure games (people who are used to playing "guess the verb").
There's a popular programming language for writing Minecraft plugins in called "Skript", it also looks like "natural language" and I find it jarring to use.
Yes, it works well. The first time it misunderstood my query "write a very short story in Inform 7", but after clarifying ("I wanted a short story written as an Inform 7 program"), it wrote me the exact same story but in Inform 7.
Not sure if it's because I said "very short", but it basically locked me into a cabin without letting me go anywhere. It did describe a fair amount of objects inside the cabin though.
It would be a real boon for non-programmers if you could build a text adventure game just using text dialogue with a system like that, interactively describing all the locations, objects and interactions.
After that you could of course add AI-generated images, videos, music and voice (TTS).
I’m much more interested in how a language model could be leveraged by an interactive fiction language. Obviously there is a lot of potential, but integration of scripted rule based logic with a machine learned logic has always been difficult.
Inform7 it's cool but the generated adventures are 'huge' and the might run slow on m68k based machines. If you like oop (much easier than Python, even a kid from Elementary could understand the basic syntax) and supporting legacy machines, inform6 is still maintained. IBG.pdf for an introduction to if6 and DM4 for mid-high complex stuff such as writting libraries and setting up non-standard objects with twisted grammars.
For some data on the game size (based on my implementation and analysis of a BBC BASIC four-room game "MINI" which I referenced in another comment and won't self-promotionally spam again...)
The source code for MINI weighs in at 4.6 K, saved in the tokenised form used by BBC BASIC.
In comparison, the Inform 7 source is around 3.3K in size. But that isn’t executable - it can be run in Inform 7, or it can be compiled into a “story file”, of which Inform 7 supports two formats. In the older, more portable, Z-Code format, I got a blorb (package) of 406 K; in the newer, more sophisticated Glulx format, I got a blorb of 602 K.
And to actually play the story file, you need an interpreter - for example, Windows Glulxe, an interpreter for (as the observant reader might guess) playing Glulx story files under Windows, is a further 275 K. Inform 7 can also produce a story file and bundled Javascript interpreter for a version playable in a web browser: for MINI, this bundle weighs in at 1.1 MB.
For 8 bit computers I'd use Puny Inform. Much easier to develop and the resulting ZMachine V3 file will run everywere. Even on Game Boys and PostScript interpreters.
If you're a beginner, I can definitely recommend Adventuron to get started very fast.
It has a browser-based IDE and compiler, and gives you a simple portable html file for your game.
Last IF jam we took part in, even veterans in Inform did not have the same level of polish that Adventuron has as default. Some even struggled to get a portable executable at all.
Why would you choose why over another? It's like general programming languages, the design makes trade-offs between expressiveness and simplicity, makes one approach more canonical than the others (e.g. in state management, choice between focusing on transition or locus, etc).
Your primary decision is parser vs. hypertext, with Inform being the default choice for parser and (I think still) Twine for hypertext with Undum also being a popular choice.
Most companies producing commercial IF have in-house tooling focused on their "house style", e.g. ChoiceScript for CYOA with "chunky" dynamic content versus StoryNexus (or whatever its modern iteration is) for a more fine-grained RPG-like approach.
How (or whether) you simulate time passing also differentiates many engines.
Sure? Go play Anchorhead, I-0 or, under the roguelike domain, compare the now combat-linearized DCSS against Nethack/Slashem.
Text adventures are not CYOA games, a lot of emergent gaming can arise. For instance, All Thing Devours has several methods to win by exploiting the time travelling puzzles.
Does anyone have any experience integrating Inform into something like a C++ based game as a rules engine to add emergent complexity for objects/interactions/dialog?
I tried Inform years ago, and finding Rosetta Code solutions in Inform 6 and 7 intrigued me. The '99 Bottles of Beer' solution was the first I looked at then[1]. This was even after I had played with NLP in the 90s. It seemed right and strange at the same time.