I have to agree with those who have said that Inform 7 isn’t the best language for coders. When I began writing my WIP in Inform 7, I just couldn’t get my head around it, but when I discovered TADS 3, it was like bringing light into Colossal Cave’s dark room. This is why I advocate for coders to use TADS over Inform 6 (which I would describe as the dragon ball fusion of Pascal and Smalltalk), especially those who have experience with object-oriented programming languages such as Java or C#.
As a side point in the discussion of the old Infocom titles and their (sometimes) cruel puzzling, it’s easy to forget they were sold, typically for $40-50 (or $138+ equivalent today). I think they were designed to take weeks or months to solve and had to be rather convoluted for people to feel like they got their money’s worth. The better games were logical, the poorer games less so. I know I’d be unhappy if I bought Zork I and sailed through it in 6 hours. (I think it did take me months of off-and-on play to solve back then). This may be my unpopular hot-take.
Just so you know, I’m pretty sure that when you reply to someone’s post who is immediately above your post, it doesn’t set it as a reply!
Thank you! That explains it. After all my complaining about computer stuff, those deleted/re-posts weren’t helping my computer user cred, haha.
See also: TADS 3 with it’s choice of Adv3 or Adv3Lite libraries (or just rolling your own!)
@pieartsy
That’s why I start with the user handle, when replying regardless. Just like this.
This is the thing I’m beginning to realize: People lament “why don’t more people (for example) use TADS since it’s superior to Inform7?” The reason is Inform is a complete package that is easier to pick up and understand. You’ve got the docs and the IDE and you can type Hello World is a room.
on your first try and it works and you can see instantly how the code affects the output.
I believe Inform boosted the renaissance of parser adventures because many authors who weren’t programming-minded suddenly had accessible tools that were enjoyable to use (the dream is MYST, right? Where you write a world in prose that a person can live in, and Inform 7 gets you a lot of the way there) and started on a level they could understand, which is sentences. I’m like that - I see @inventor200 jumping up and down going why don’t people see the superiority of TADS? and my response is “I’m a writer, and Inform 7 works, and TADS is difficult and I don’t need to learn a new paradigm and tools because I’m already skilled with this one.”
If something better comes along, I’m up for it, but I’m not gonna climb very far down my ladder to learn how to climb a new one. Some people love doing that. I don’t.
The next wave of people wanted something even easier than that. They just wanted to do choice narratives that focused on the writing rather than implementation and they had Twine - which, like I7, seems really easy at first but has layers like a tiramisu depending how inventive you get with it and how much you bring to it. Now we’ve got people saying Twine is too difficult to scratch the surface of. I don’t blame them, but I think I understand the reason. It’s beginner accessibility and learning curve.
Ink was a next logical step for Twine gurus. It’s got a bit of a learning curve as @J_J_Guest says. The learning curve and documentation isn’t the problem. Even though you can export a plain story written in Ink, that’s not Ink’s originally intended purpose. It’s middleware meant for people to write conversations and choice menus in graphical games of the type Inkle makes. They didn’t intend it to be a full-fledged design system you’d use by itself and thus it may be easy but it’s not consumer-friendly as Inform 7 and Twine mostly is. (Ink was specifically designed - per the blog - so they could hand it to a collaborating writer with some specific instruction to produce conversations, but the output isn’t necessarily a finished game.)
Several times a year, people declare they want to make a revolutionary new game engine. Our question is “what does it do that X-Y-and Z don’t”? It needs a killer feature, but it also needs a low barrier of entry. Inform 7 is a fully-fledged suite of tools you download and install or drop in the Applications folder and use. Hypothetical Bart Jartley’s revolutionary “parser system in HTML” requires me to first know how to navigate a Github repository, then learn HTML and understand how to style the text with CSS and understand what a web page is and how his specific code structure interacts with that–…
TL;DR: Game creators an authors are not dumb but it’s harder to pick up a middleware tool and make something good with it than a completely developed beginning-middle-endware package like Inform 7.
That’s the part I would need as a beginner with TADS. If the IDE can’t at least suggest to me what I’m doing wrong via a debugger, there are not enough TADS-experienced authors to get quick answers. Inform’s debugging tools aren’t perfect, but it can say “This is the part I don’t understand; it occurred here and I think you’re trying to do this, so here’s the link to that documentation…”
To be honest, the I7 documentation is wordy but it’s structured as a PhD level course on how to use the tool. People want to start by simulating how to cook a meal with combinable ingredients and measured liquids - which it can do - but the best way to use the docs is to read them in the IDE where you can pushbutton poke-in the examples they give and watch them work and fiddle with them. The docs are comprehensive readable manual that starts with basic concepts such as rooms and objects and containers and slowly builds up… versus documentation for something like SugarCube which is meant as a reference for every macro and command in order and isn’t something you just read beginning-to-end.
Yes - Discourse doesn’t allow you to quote an entire message if your message is the following reply - for redundancy. If your reply only quotes part of the previous message, or is more complicated with multiple quotes, it will let you do it.
I personally found Inform 7’s IDE completely bizarre to understand, honestly! I tried using it twice, once far earlier in my coding journey and once far later, and it made me so confused and tired both times. It took me a day to figure out how to implement a basic room that didn’t bug out.
TADS is not a very easy language to pick up, even in the best of circumstances, for non-programmers, so I agree there! While it’s my preferred parser language and more featured (imo), it’s not at all one I’m trying to say could be as beginner-friendly or accessible as Inform 7. But the thing is, it could always be more beginner-friendly to people interested, if resources are devoted to doing so.
This doesn’t just go for TADS 3, it goes for all other languages and their foibles – Adventuron (which I hear is pretty accessible if you try!), ADRIFT (which is a no-code IDE), Gruescript, Dialog, ZIL which I think only Max is a champion of right now due to lack of resources, etc etc. They may not be as beginner friendly, but they could always be more beginner friendly than they are right now.
That is made more difficult when the default community assumption is that everyone who writes parsers only is, or wants to use, Inform 7. For ex: If someone makes a post in General Design Discussions asking how to do something in a general way, people will inevitably and often exclusively offer Inform 7 code for them to try and come into the conversations only discussing what is possible or limited by Inform 7. This occurs even when seemingly intractable issues are actually just issues with Inform that other languages handle easily.
You’re very correct about this! Inform is designed to be easy to read, at the expense of being difficult to write. But that’s one of the things that won me over to it: seeing some of the examples and being able to grok them right away.
Ink, meanwhile, has become my favorite choice-based tool by a longshot. It’s not as versatile as Twine, and there are some times when I struggle with the lack of some simple feature (like for-loops), but when that happens there’s generally a workaround—whereas with ChoiceScript I constantly find myself chafing against the limits of the system.
(I know why those limits are there; they just don’t work with my personal style.)
Oh, here’s a hot take. I love Dialog but I think the insistence on never increasing the word size past 16-bit is a horrible choice. It seems like the most common topics on the Dialog forum are all about “how do I deal with the 16-bit limitation?” and the answer is “you don’t, sorry”.
A bit late, but I agree on too tough Infocom games while AMFV and Wishbringer are good. I downloaded and played Planetfall because of all the talk about Floyd. But it is really hard from the very beginning. I didn’t like this kind of games in the 80s and I don’t like them now.
I also like point and click adventures very much, but that doesn’t mean I somehow dislike IF.
It took me twenty years to learn how to write, and only two years to learn how to use Inform.
Well, I have a few. To start with, as an IF Luddite I stick with Platt’s A-code, which nobody else is interested in – nor do I expect them to be.
But let’s try this one… Sophisticated command parsing came in too soon in IF development back when, and the positive/negative lessons from pioneering efforts had not been properly understood, let alone digested. Consequently, parsers developed (and were justifiably vilified) as pernickety morons. The art of intelligent defaulting, forced on the IF ur-game Adventure technical limitations, was quickly forgotten and parsers became mere pattern matchers. I confess I abandoned playing IF many years ago as the result (wrangling the A-code engine is much more interesting to me :-)), so my gripe may well be out of date, but browsing through here now and then, I somehow don’t get that impression.
Do I get any non-mainstream cred?
What’s that?
Well, to be clear, TADS3 does give you a stack trace when there’s an error, listing the type of error (nil object reference, index out of range, etc…) along with the call stack and the source file and line number where the error occurred; so you do get clued in to where the error is, but you don’t have step-by-step execution of the program, which I felt like I got along well enough without.
That being said, I’m not in any way saying that TADS is easier than Inform to get started in, just that it is still an entirely manageable process, even on Mac…
Wow that was actually a really good impression of me! You even got the mumble in my voice and everything!
Here’s my Dialog hot take: it should be the last applicable rule that’s tried first, not the first. It makes much more sense to organise your source code as “here are general rules for how the world works, now here are some exceptions for the specific situations in this game”. But Dialog forces you to write the reverse.
I am not sure there was a shift and programmers will rarely refer to themselves as coders. Generally speaking, coders produce code and programmers produce programs. Code can be anything, like HTML or CSS or just a different encoding (think like producing Morse code). Coders could, of course, produce code to include in a program but, generally, they would be called coders only if they are implementing something exactly per specification, no thought involved.
The term “programmer” is more akin to “software engineer”, but the latter is usually used only in terms of whether you have a degree or not. The difference is that these roles also entail full (or as complete as possible) understanding of user stories, requirements and being able to produce a technical specification how to create a program that would meet the requirements. Mostly, programmers today will also implement it, but sometimes you could also employ coders to do it for you.
I will say this about the TADS vs Inform discussion: Indeed, there needs to be more resources, but most people overlook TADS in favor of Inform because (A) they’re not code-minded, and are more comfortable writing their code in a more natural language (which is fine, even though it’s not my cup of tea, personally), or (B) there aren’t enough resources, which just loops back to the beginning. Even Inform 6 has more resources available than TADS 3, and that’s mostly because it’s around 5 years older (if you ignore Inform 1-5 and TADDS 1 and 2). Now, I will admit that what we do have (thanks to the incredible work of Eric Eve especially) is good. I personally learned the basics of TADS within a few weeks with the excellent “Learning TADS 3,” but that’s because I had already reconfigured my brain to think in code to some degree. However, when you compare Inform 7’s resources to TADS 3’s, it’s lacking in various departments. Jim Nelson started off with a good idea–the TADS cookbook–but it isn’t anywhere close to Inform’s recipe book yet, not to mention there are a couple undocumented features of the language (or so I’ve heard, on various forum threads).
Inform7 is what we, in the programming community, would call a DSL, a Domain Specific Language. The benefit of DSLs is that you get brevity in expressing common patterns and it gets you started quickly. The problem is that when you want a slightly different behavior then you start to realize that the expressions are full of side effects (implicit behaviors), that are many times very difficult to work around. Many DSLs then employ various controls to change the implicit behavior, and these are often more difficult to navigate than if you just wrote the thing in a non-DSL.
BTW, Inform6 is also a DSL, just a bit lower level and more verbose.
I think Aster’s complaint is with the natural language syntax, not with the DSL-ness. Basically everything used to write IF nowadays is a DSL because it’s just so much easier than in a general-purpose language. (So much of IF is tied to the world model/means of interaction, after all.) Inform is specifically a DSL with a very eclectic syntax.