For an old programmer new to inform 7, is the adventure the IF/game you create, or getting inform to work?
Definitely both! XD
But I don’t understand where the problem is. If you like the natural language concept in Inform7 you can learn it easily. If you don’t like it use Inform6 like many people do (including me).
Hah! You beat me to it. The review for Inform 7 was also the first thing that popped into my mind when I saw this post.
They’re inextricable for me. Getting Inform to work often has an impact on how the game turns out. For instance, I’m trying to get a conversation mode working, and it’s not doing what I want. So I spend time searching and reading about conversation systems. And in my reading I see an example of something completely different-- like a way of allowing player input that I hadn’t known was possible-- and suddenly a narrative idea occurs to me and now the game is veering off in a new direction I hadn’t intended.
I get really frustrated with Inform a lot, and I yap about my frustrations here a lot, but the constant learning about it is directly responsible for many of my better design decisions.
While I have written many a text game in BASIC, and can do so quickly, I am getting the understanding that Inform is where I need to be. For one, the ease to publish cross-platform and run in the browser is a super plus. A second biggie is it is parser based. I just have to re-train my brain from BASIC and several mainframe languages I know fluently. Inform becomes frustrating and rewarding at the same time. Thanks for allowing the rant.
I came to Inform without ever having coded anything in my life. I was a totally blank slate, programming-wise. I wonder if that made it a better experience for me because I had nothing to unlearn? Or harder because I didn’t/don’t have a basic grasp of programming principles?
Discord isn’t great about pinned posts, so in case you’ve missed the pinned post of Inform 7 docs and resources, that has some good stuff. As a programmer I found Allison Parrish’s Inform 7 Concepts and Strategies to be a particularly useful beginner starting point. There’s also Inform 7 for programmers (which doesn’t seem to be linked from the resources post, hmm). I didn’t find that quite as useful, but it does explain some of the terminology differences…
Inform 7 has most of the same functional programming pieces (e.g. conditionals, loops, etc.) that you would expect plus many that are in my limited experience unique to it. Some of the biggest differences between it and other languages ultimately derive from the virtual machines for which I7 compiles – some limits on functionality seem very alien and are hard to understand without looking at how the Z-Machine and Glulx represent information. The rest stem from the overall design of being rules-based instead of object-oriented. As a result, neither the fine nor gross picture looks very much like other popular languages, even though many of the mid-level features will seem familiar.
Understand that BASIC and I7 are almost incomparable – I7 is extremely high-level compared to BASIC, and most habits of programming from BASIC are probably best abandoned. For example, you can’t really create arrays in I7. Why not? Because just about anything for which you would want an array has been superseded by a higher-level construction. If you think you want an array so that you can create a lookup table for numeric color codes, for example, then what you really want is a new
kind of value called
color. Until you know something about the library of higher-level constructions that the language affords, the inability to declare an array seems like a gap in functionality.
Fortunately, the community (most especially @Zed in recent years) has done a lot to compile and organize the various wells of knowledge that have been produced. I would also recommend looking for many writeups on this forum by @drpeterbatesuk that lay out the fine details of various aspects of the system.
If you’re looking to be convinced about the basic soundness of I7’s approach, there is an article by Emily Short (Some Observations on Using Inform 7) which makes a pretty good sales pitch (on excellent authority!) for why Inform 7 is generically better than Inform 6, its more C-like precursor. Note that it was written in 2006, when Inform 7 was still in early public beta (3K27 to 3T38 era), so most of the wishes expressed at the end of the essay have since been realized.
For those who are still not convinced and/or want the best of both worlds, check out Code: Inform 7 for the rest of us for some pioneering work by Zed to bypass all that natural language nonsense while retaining I7’s core feature set.
I’m in my fifties, and a Java programmer at heart, and it took a little while to shake off my preconceptions and really grasp Inform 7, sort of like learning LISP back in college. You sort of have to learn to go with the flow. There are a few threads on here wherein I complain about this or that “shortcoming” of I7 and Zed or Zarf shoots me down.
I too find it difficult to get Inform to complete the game as I intend. I always have to make compromises. Inform 6 and 7 are still wonderful programming languages.
And I’m 72.
“Inform 7 for Programmers” was the title of the website for 5U92. Ron re-titled the 6G60 revision “The Inform 7 Programmer’s Manual”, at least in the PDF internally. The Docs and Resources post links to a web version of that document by the latter name.
I have a love/hate relationship with Inform 7, though as a 59yo programmer writing various types of code for 45 years, I view Inform 7 as a brilliant, but slightly flawed piece of work. The flaws aren’t really that glaring and have much to do with how 7 is reduced to 6 then glulx, and some separation of concerns regarding output (the author should have more semantic control).
Overall though, it should be recognized as a massive lifelong achievement. Some of the best parser IF is “system based.” Someone thought up a cool system of magic or interaction and built a story on top of those mechanics. Inform 7 is very likely the best platform for system-based parser-IF.
For my own interests, I’d love to take the best ideas of 7 and build a fluid C# implementation with an in-memory graph data store. Just for fun.
But I have several works in progress and they are all in 7.
I installed FreeBSD and noticed that, unlike the Linux distributions I have used for many years that all only included Inform 6, in the FreeBSD ports collection only Inform 7 is included. What surprised me more was that it is a command-line only version. I did not know that existed! The main reason I never looked closer at Inform 7 was that I was under the impression that it was tightly integrated with its IDE. The English-like language was always a secondary reason for me to not try it. Maybe I will play (with) it some day to see what all the talk about the language is about.
One of the cool things about Inform 7 for me - if you’ve ever played MYST, the whole gimmick that universe is built upon is special books that when written in by a skilled Writer, describe a specific parallel universe and everything about it which then becomes a portal to physically travel to that location.
If I remember correctly, it was specified that authoring a book didn’t create that world, it only specified a link to teleport to a location whittled down from an infinite already-existing multiverse where every possibility and variation already exists - writing a book makes the target destination more specific with those specific properties defined in the linking book. If the author didn’t write that the link leads to “solid ground” the hapless adventurer might end up falling through space or landing in the ocean or sinking in quicksand - if the author doesn’t specify, it could be anything.
They never get into the actual grammar, but I’m assuming it’s stuff like “The sky is purple. Some large rocks float and can be walked upon. The air is breathable and won’t kill you…” and part of the skill of authoring and ensuring you didn’t inadvertently send people to a hell dimension of molten iron filled with hungry Lovecraftian entities was making sure to write a safe description of the endpoint. You only got authorization to write if you could ensure a person who traveled to that universe didn’t die inadvertently based on something the writer forgot to spell out in the description - like breathable air or specifying “The ravenous hyaenas are friendly herbivores…”
Anyway, Inform 7 basically feels like that - you’re writing a text that defines a world that someone can enter and only interact with what you put in it, and there are rules and pitfalls inherent to the process.
FWIW I thought this might be a reference to the Fallout New Vegas DLC: “Old World Blues.” Ended up being just a coincidence.
Well. If someone asks me what system to use, i tell them to use Inform. However, that’s not for me.
I’ve always felt that a rule-based system is not the away to write stories. Instead of
IF this THEN that, i tend to think in terms of
This then That then The-Other.
In other words, a flow-based paradigm, not a rule-based one.
It’s probably just me.
But that would mean that the plot is very static, or?
Doesn’t have to be.
You can make very dynamic systems that intelligently track how the plot is unfolding so far, and even allow the plot to transform into variants, according to certain actions. All of this can be done with a flow-based paradigm.
It can also be done pretty smoothly from a player’s POV.