Hey folks. I am not sure which program to develop my IF game in, so I figured I would post here and get some opinions. The game is an open world adventure with items where you perform actions on fellow characters, who have their own dialogue. However, the intro and a few other sections are linear (which is why I am not sold on Inform). The program must also allow the player to set their own first and last name.
So first of all—do you want your game to be mainly parser-based or choice-based? That is, do you want the player to be typing in commands for their character to execute, or selecting from a menu of options?
Traditionally, parser-based games are best at simulating a world with a consistent implementation, where the same actions can be applied to every object, things can be picked up and dropped and remain where they are, and so on (“medium-sized dry goods” games), while choice-based games are best at character dialogue and Big Choices that are specially tuned for each specific interaction, but that’s by no means a hard rule—there are also medium-sized dry goods choice games and dialogue-heavy parser games nowadays.
In the past, another question would be “what platform do you want people to play your game on”, but just about every system nowadays can export a web page, so that matters less than it used to.
I would like for the game to be choice based, but that the beginning of the game have a space for the player to input the protagonists first and last names.
In that case, the most popular choice-based tools (at least to my knowledge) are Twine, ChoiceScript, and Ink. My favorite of these is Ink, but they’re all very powerful tools that have been used to make great games. (And all of them let you enter a name for the protagonist.)
Out of these three:
Twine is the most versatile, letting you do things like replacing text that’s already been output and embedding links in the middle of the text. It’s most often used for artistic pieces with a lot of special effects, and was one of the big drivers of the “choice-based games revolution” about a decade ago (when choice-based games really took off).
ChoiceScript is closely associated with a specific publisher, Choice of Games, who have a huge library of games written in it; it gives the author very little control over the interface (to maximize portability on different devices), but if you want an RPG-style stats screen that you can check any time, and stats that increase and decrease in play, that’s one of the things it’s best at.
Ink is very good at stringing passages and choices together in complicated ways; it’s a bit less versatile than Twine (you have to print a bunch of text, then a bunch of choices, not interleaving them), but in return it gives you very powerful tools for building that list of choices, letting you e.g. show a list of choices for the room you’re in, a list of choices for the items you’re holding, and a list of choices for your stats, all together.
I’d recommend giving each of these a try, building a little toy example in each, and seeing which one feels best to you.
If we’re counting Ink as “letting you enter a name for your protagonist” (which would require a small amount of custom javascript), then by that standard Ink can also let you interleave choices or do inline links, twine-style, if you have the programming ability to implement it (or you could use someone else’s custom template that already supports that functionality, like Atrament UI).
Good point! I forgot that wasn’t a default feature. But you’re right, that requires a little bit of hacking to expose the JavaScript prompt function.
But what is Atrament UI? I haven’t heard of that one.
It’s an alternate web front end for ink with a bunch of additional features. I haven’t used it myself, but it seems neat. I think the creator once posted a sort of Inky mod in the Ink discord to support exporting directly to Atrament from Inky.
EDIT: Personally, I’ve gradually developed an alternate inline link syntax for my own projects that I like more & that isn’t too difficult to implement:
You see an oaken [[door]] and a small [[window]].
+ [door]
-> go_somewhere
+ [window]
-> look_out_window