Please help choose the most comprehensive programming language

What are the most advanced, powerful, well-made, mature, full-featured, flexible, vibrant, cutting edge programming languages for creating parser games, games that are text-based simulations/models/toyworlds? I thought Inform 7 is king, but then I found an article that said TADS has more features. The joy of development that the language provides matters to me more than the size of community: if community of the language is small, but super high quality, I’m all in.

4 Likes

Probably TADS. Between instantiation, compile-time code, interpreted code from runtime strings, macros, and the all-powerful modify keyword, TADS can practically write itself sometimes. Additionally, the world model is 100% modifiable, and you can use whatever you want for a world model, and even modify the main execution loop.

Oh and also images and sounds and music and all that, but you can also find this in other languages. Clickable hyperlinks also open up some fun possibilities for choice-parser hybrids.

TADS allowed me to rediscover my love of coding, whereas I have continually bounced off of Inform 7 every time I’ve attempted it (and I’ve given it the ol’ college try).

And if the smaller community doesn’t bother you, then we’ll be ecstatic to welcome another TADS dev aboard…!


Also, for what it’s worth, if you want to check out stuff other than Inform and TADS, you can do some wild stuff in QuestJS, but it’s taken me a while to chip away at it. The modify keyword and compile-time execution won me over to TADS from both Inform and Quest.

6 Likes

You can’t go wrong with Inform 6, Inform 7 (these are two very different languages) or TADS 3. I’d just spend a few hours with each of them to see which one appeals to you most. Or you could go Twine, which opens up a world of CSS and JavaScript programming; or use Ink for your story logic and hook it up to whatever you want – e.g., Unity.

3 Likes

Also also also it’s worth mentioning that Inform 7 is a perfectly-capable language but I found that I needed to discover and catalogue a list of magic phrases or dig really deep with embedded Inform 6 code to do anything that I could do effortlessly in TADS, and had to use really weird workarounds to achieve what I needed, and I’m not sure all of those aren’t deprecated today.

So you can do whatever in Inform 7, but the language is going to make you really work for it as you get further from a kind of expected gameplay design. Sure, you’ll work for it in TADS (or any language) as well, but it at least feels like you’re given a clear map and a wide array of easy-to-use tools on Day 1.

Also, the usual “This was just my experience”, but again I sunk years into trying to learn Inform 7 and get stuff working in it so I feel like I’m not just talking about it after only spending 12 hours with it. Just felt compelled to clarify because I am known to cheer about TADS a lot because it made IF finally accessible to me in the same way Inform 7 made IF accessible to other people. So…y’know. Mild bias. But the modify keyword, compile-time execution, instantiation, and code interpretation absolutely rule and skyrocket TADS 3 for me. :woman_shrugging:

Quest 3 was a lot clearer but also not as clear as TADS 3, and I spent maybe a year with it. It could handle a lot of what I wanted, but the workflow felt clumsy. I’m guessing QuestJS smooths that out, as it’s a pure JavaScript implementation.

This. Not all IF needs to be a parser. Some game designs play better when they’re choice-based. Twine has been absolutely rocking lately.

5 Likes

I feel I need a parser because, in my game, a fantasy version of Git (the version control system) is used for time travelling. So players type Git commands into the game. That makes the game more active compared to the relative passivity of just choosing the options you find right.

6 Likes

Then you are looking for TADS. You can create a custom parsing algorithm to process the player’s git commands and use instantiation to create actual runtime in-game version control of the environment.

If you do choose TADS 3, you will have a choice between Adv3 or Adv3Lite as a foundation library. I’m only mentioning this now because editors tend to default to Adv3. Adv3 is thorough but a bit inflexible, while Adv3Lite aims to be easier to modify and is more modular in design.

If you want to use VSCode, there is an extension for editing TADS code, created by @Tomas.

5 Likes

I would say if it’s a very small game, Inform 7/10. You can learn it easily.

TADS is good if you want to go complex but I personally found it really hard to start with.

Oh, and if you want to make something that reflects the original Infocom games (Zork, etc.) but still just as complex as Inform (and actually you can get more complex than Inform) I suggest ZIL. But apparently it’s complicated to learn (I disagree), and also there’s really only me, and two other people to ask for help on ZIL. But I’m always here!

4 Likes

You are an absolute champion, in case nobody has told you. :grin:

6 Likes

Damn, TADS is too powerful. I want to spend my time on it but— I must resist…
Or should I give in and let go of the classic ways??

3 Likes

There’s only one thing, to me, that makes Inform better than TADS (overall I personally would say TADS): which is asking for help. Inform 7 has more people, and people like @Zed is always there to answer your questions, andthey’re likely to get answered quicker.

There; I’m done. You may now choose.

2 Likes

This, too. Inform 7 made me constantly climb and claw every day I chipped away at a game. TADS 3 has a steep learning curve, but at some point the entire language cracked wide open and the rest was super smooth. Quest 3 had a similar “it’s hard and then it’s suddenly easy” but it was just a bit too awkward when it got easy. It was really clear, though.

Honestly, the majority of the parser community uses Inform 7, and I did not know this site existed back when I was still using that language, so maybe it’s easier when you have absolute mad scientists in the Inform sphere answering your questions and giving you resources. My experiences were me trying to figure it out by myself with only the tutorial book for guidance.

EDIT: Sniped. Basically what Max said.

5 Likes

Rad! Thank you so much! What are the best resources for learning TADS? Books, articles, documentation, etc.

4 Likes

TADS documentation is available once you download the software.

3 Likes

The Aaron Reed book is what hooked me into Inform, but some of the writing I’ve seen by Eric Eve of Adv3Lite fame is splendid too.

3 Likes

In the future I’ll give ZIL a spin, since I really wanna learn Lisp. I thought about adding Fennel (Fennel is Lua Lisp) as a modding language to my game.

5 Likes

I haven’t actually used LISP before, but it looks not that similar, since ZIL’s based off MDL, which is in turn made by LISP. So it’s not that similar. But I really like ZIL.

EDIT: Also, when you try ZIL, PM me. I have some stuff up my sleeve that hasn’t gone public yet but is much better/complex than what you can find in the ZILF package! (Sorry, Tara)

3 Likes

MDL/ZIL is different, but it’s conceptually & personally connected to some of the very best moments in the history of computer programming (“SICP”, “Little Lisper”, Alan Kay was somewhere nearby, etc)

2 Likes

Oh, in their bio, Jess/Joey says they love Adv3Lite! Lurking further got me to an explanation: “it’s thorough where it needs to be, but allows for plenty of room for customization, and is overall more streamlined and faster to learn”.

3 Likes

You realize that’s eight different questions with different answers.

8 Likes

Yes, all those qualities at once don’t come together in mainstream programming languages, so I imagine that’s even more true for the IF languages. So this question is intentionally a bit of a tease.