How did you choose your development system?

I initially ported Alter Ego from C64 to a free web version around 1999. Then I just left it online for years, but eventually I noticed that it had a lot of traffic, so I added Google AdSense ads in 2008. That did surprisingly well, pulling in low hundreds of dollars a month in 2008, and it made even more when I made it available on iOS and Android in 2009.

At that point, I decided to write Choice of the Dragon with Adam Strong-Morse. Choice of the Dragon was only 30K words, compared to Alter Ego’s 200K for the male version + 200K for the female version (with ~80% overlap between the two versions). But, sure enough, even that little game started making ~$50 a month right away 2010, encouraging us to write Choice of Broadsides (nominated for an IGF Nuovo award) and for Jason Stevan Hill to write Choice of the Vampire.

Only after I’d published Dragon did I publish ChoiceScript publicly, and an author submitted the very first hosted game in March 2010, Popcorn, Soda, … Murder?. We published three hosted games in 2010 alongside four Choice of Games games (Dragon, Broadsides, Vampire, and Choice of Romance); our momentum was pretty good at that point, but each new hit made it bigger. In 2011, I’d call out Zombie Exodus (which is still one of our bestselling Hosted Games to this day; Zombie Exodus fans almost flooded the XYZZY ballot box). In 2012, we released Heroes Rise (which smashed our previous sales records), and we started offering $10,000 advances. In 2014 we started selling on Steam; Choice of Robots became our first Steam game to get an “Overwhelmingly Positive” rating on Steam, which was another big breakthrough.

In all new platforms, you start with a game that’s good enough to attract some new authors, and eventually someone (maybe you) writes an even better game that attracts even more new authors. Graham Nelson published Curses In 1993, followed by Balances in 1994 and Jigsaw in 1995. That was good enough to get people to write a sizable number of Inform games for the inaugural IFComp in 1995, and the ball was rolling from there.

That’s my opinion, too, actually! But whether you call it a “good” game or a “great” game, that game really does have to be “admirable.” Authors need to say, “I want to make a game just like that.”

My main point is that approximately no authors are surveying the available choice-based systems, evaluating them based on their UI, features, platform support, accessibility, etc. and selecting the system they feel is “best” or even “best for themself.” Instead, they’re just going with whatever system was used to make the game they admire.

Spending a bunch of time polishing an IF system when there isn’t an admirable game yet is like staying at home and practicing your dance moves. If you’re having fun dancing at home, great, but if you were trying to find a dance partner, you’ve got to get out there.

My remark that “real” programming languages don’t thrive in IF is restricted to text-based IF.

Without teetering into whether visual novels are or are not “interactive fiction,” they are certainly much more difficult to code “from scratch” than text-based interactive fiction.

As my copy-and-paste advice points out, developing a text-based choice-based game is often literally a person’s second program after “hello world,” but graphics typically comes much, much later, especially if you’re adding in even very basic sliding/fading animations. Popular operating systems provide high-power low-level APIs for graphics (DirectX, Metal, Wayland) that integrate well with “real” programming languages.

Hardly anybody starts using Ren’Py and says, “Why am I bothering to use Ren’Py? I could have just written Ren’Py myself in my favorite (non-Python) programming language.” Whereas people say that all the time about the popular text-based choice-based platforms.

Most popular “video game” development environments support multi-purpose non-DSL programming languages, including Unity and Unreal. There are exceptions… Godot is the most popular video-game platform I know of with its own DSL, GDScript, followed by GameMaker’s GML. IMO, those platforms make it easier to get started, but harder to build something admirable.

So it’s not so surprising that the world’s most popular visual-novel platform would also use a non-DSL language, just because graphics are so hard to program!

15 Likes

Is this true? I don’t think this was true for me. Maybe it’s different for programmers than for writers, but I definitely compared systems and chose the one that seemed the best for my goals. I got interested in Ink after seeing the example tutorial and thinking “that looks way more convenient than other systems I’ve tried,” and I only secondarily realized that it was from the studio that made 80 Days.

In fact, 80 Days had a substantial influence on my being interested in the idea of games that incorporate choice-based interactive fiction, but it never occurred to me to specifically look into what tools were used to write it, and I only ended up learning about & getting into Ink by coincidence.

8 Likes

Thank you for your insights and for the information about CoG early days.

2 Likes

It’s true for me. I discovered IF via Twine games like howling dogs, and Twine therefore seemed like “the default way” to make IF. I thought about narrative structures in Twine’s terms. I went directly to Twine to make my first game.

7 Likes

I’m not sure I understand your story, but the way you told it, that doesn’t sound like a total coincidence.

It sounds like you played and liked 80 Days, then you set out to make a game like that (but not totally consciously?), then you evaluated your options for doing so, and “coincidentally” settled on the system that was designed for making 80 Days.

But if you were looking for a good system for making a game like 80 Days (consciously or not), it would be no surprise that you’d pick Ink for that. Ink is the best system for making games like 80 Days.

Regardless, I count you as an example that proves my point, because you wouldn’t have picked up Ink if Inkle hadn’t shipped 80 Days. And so, anyone with an IF system who wants people to actually use it should do as Inkle did and ship a great game with it. (Ideally more than one!)

4 Likes

Yeah, I do think other things come into it too. I didn’t really love the early games of the Twine revolution, to be quite honest! Or I didn’t want to make games like that, at least. I’m not an artiste, I’m a “light genre fiction with maybe some puzzles” type person. I picked up the system because it seemed easy to get started with and more flexible than ChoiceScript. I had really loved some ChoiceScript games as a player but it didn’t align with what I wanted to do as a creator. There are some Twine games I can point to as direct ancestors of my more popular recent games, but they’re not the reason I picked up the tool itself—they all came out after I made my first Twine game (garbage though that game was) in 2013.

3 Likes

I liked 80 Days in the sense that it sold me on the idea that there is room for text-heavy content in “modern gaming,” but it’s not like I then directly set out to make a game with an interaction style directly mimicking 80 Days. There were multiple years of forming ideas from a variety of influences between when I first played 80 Days and when I found Ink, and for a solid chunk of that time I was not really actively pursuing game dev. I’m not saying there’s no causal link between me enjoying 80 Days and me seeing the value in Ink, but it’s fairly indirect and attenuated.

But more to the point, I was specifically disputing the claim that “no authors are surveying the available systems and evaluating them for their features.” Regardless of whether 80 Days influenced the type of game I want to make, I still definitely did explicitly seek out systems to compare and decide which one seemed “best for me” based on the features offered.

5 Likes

What I do think is true is that having one or more well-made games kind of gets a platform into the conversation and creates a certain consistent background level of awareness of it. I didn’t pick up Twine because there was a specific Twine game that I’d played that I wanted to emulate, and I did evaluate its features and compare it to the other significant choice-based option of the time (which was ChoiceScript) and decide that it would be better for what I was hoping to do. But it is also true that I didn’t discover Twine by googling “authoring systems for choice-based text games” or whatever—I knew about it because people were talking about it, and people were talking about it because of the games that had been made in it. (Though that’s also not to say that no one stumbles across it when searching for tools with no prior awareness of any games that have been made with it—I have the impression that this does happen a fair amount! But I think having a high-profile game or two did help it build momentum.)

6 Likes

This is obviously getting off topic, but I picked Twine completely at random :smiley: I wanted a tool to help me write paper CYOA books, and couldn’t believe there wasn’t a nice modern tool to do it. So I decided to write my own based on something free, and found Twine to do it.

5 Likes

Yes, maybe it can be split off? But for what it’s worth, here are my experiences:

I’ve used a lot of different development systems, having released games made with ADRIFT, TADS 2, Twine, Inform 7 and Ink. I also have a large, unfinished game written in Gruescript and spent a lot of time developing a game in ChoiceScript before deciding to migrate it to Ink.

For parser games, ADRIFT was simply the first one I found that I liked. I didn’t know the term “interactive fiction” at the time, or about the existence of this community. ADRIFT came up in a search for “text adventure creator” or similar back in 2002. I’d tried one other system, something called CAT, but I liked ADRIFT better.

I learned TADS 2 because I became frustrated with the limitations of ADRIFT and didn’t really need a tool aimed at non-programmers, having taught myself BBC BASIC as a kid. I looked at Inform 6, but went with TADS 2 because the code made more sense to me.

I switched to Inform 7 because the natural language thing was too intriguing not to try, and because it seemed really slick and powerful. It was great and I never looked back. I can’t really see myself taking the time to learn another parser-based language when Inform can do everything I need, and I have a whole back-catalogue of code to reuse and adapt.

When it came to writing my first choice-based game, I chose Twine because at the time there weren’t very many alternatives. I liked the whole node-graph thing because it allowed me to see just how big and complicated my game had become, but it very quickly became a hindrance rather than an asset. After making two quite large games with the system I started looking for something that emphasised scripting rather than a visual UI.

I toyed with ChoiceScript and really enjoyed using the editor CSIDE. I had thoughts of monetising my current WIP too, but after doing a bit of research I realised that my game was about as far from the CoG house style as it’s possible to be, and was unlikely to be a hit with the diehard CoG fanbase. I also found the limitations of ChoiceScript’s presentation very frustrating. The solution was to use Ink, but I lacked the JavaScript skills to create an appealing interface. That problem was solved by the release of Atrament, which provides a very ChoiceScript-like interface for Ink games, but with the option to customise it to suit the game. And many other affordances. Earlier this year I began the daunting process of migrating my 100,000 word WIP from ChoiceScript to Ink. It was the right decision, but I won’t rule out writing something for Hosted Games at some point in the future.

I absolutely love writing in Ink. It has a steeper learning curve than ChoiceScript or Twine, but once you get used to it, it’s really powerful and fun to use.

So for the most part, my choice of authoring system has been motivated by what the system can do, rather than by one specific game that caught my attention, with one exception: Gruescript.

I’d played a lot of IF with my nephew Max, before he became a teenager and decided that reading wasn’t cool. He loved To Hell in a Hamper and we played it over and over again, but his favourite game was Robin Johnson’s Draculaland. It’s parser-like but the button interface is a lot more appealing to kids than typing commands. As soon as Gruescript came out I started writing a sci-fi game aimed at kids, but unfortunately I didn’t finish it before Max lost interest in such things. I wrote a small (unreleased) Gruescript game with my younger nephew Tom, who takes after his uncle and is a proper geek, but the big sci-fi game has not yet seen the light of day.

So in that one case, my choice of authoring tool was definitely motivated by a game that I’d enjoyed, but generally speaking, it’s not.

15 Likes

I first discovered IF through a game that was written in QBASIC. I wanted to learn how to make parser games, and the unanimous answer of the internet said “Inform 7 is how these kinds of game are made”.

But I quickly hated Inform 7, so I started searching deeper for something that was more like normal coding, whether it was a DSL or library, and that’s when I found TADS 3.

10 Likes

I haven’t actually done any coding in the IF space, but I took 3 2-semester courses on specific languages in college: Visual Basic, Java, and C++, in that order. I never used Visual Basic outside of class because I was given the impression there was no way to use it for anything other than making Windows apps using Visual Studio on a Windows PC and I had discovered the Linux Distro that let me break free of Redmond’s chains not long before my Visual Basic classes. I liked Java, and especially its compile once, run anywhere with enough horsepower to run a JVM, but when I started C++ after two semesters of Java with C++ being, for the most part, Java, but less wordy(or rather, Java is like c++ but more wordy), I gravitated to preferring C++, and while I’m clueless at cross compiling and find the need for headers slightly annoying, I overall prefer C++ for being on average less wordy in places where it and Java differ. Plus no amount of knowing rationally that “modern machines have cycles to burn” can convince me the overhead of the JVM isn’t a con, even if I don’t think any of my code is advanced enough in functionality for the performance difference to matter.

That said, from what I’ve read, TADS is at the top of my list for IF systems I want to try since it sounds like it’s the most like the languages I’m familiar with and Inform 7’s natural language paradigm is a bit of a turn off, especially with all the comments I’ve come across suggesting it can be rather finicky if you try adding behavior not part of the core library… though my dream system would probably be a c++ library for building a parser interface and perhaps a C++ compiler that targets one of the well known IF virtual machines… Mostly, I want to make keyboard driven terminal games without having to write code handling every possible string cin can recieve from scratch and having a interface more sophisticated than asking the user a bunch of questions or printing a text menu with cout and asking for a numbered entry. I’m enough of a number nerd to enjoy the crunchiness of figuring out the math for mechanical stuff, but it would be nice to not have to figure out how to code the player moving around a map or picking up items from scratch.

3 Likes

To expand on my original answer, now that it is on topic …

Many many years ago I used to design CYOA games on paper, by making little booklets with numbered spaces and then writing paragraphs in.

Some years after that I moved those to Hypercard, and built a tooling system for making them.

Fast forward many many years until COVID. While in lockdown I discovered a Discord for quintessential early 80’s UK RPG Dragon Warriors. In that group people were talking about making solo adventures, but there was no obvious tool for doing so. I assumed there would be some easily available version of the thing I’d once made in Hypercard, but everything I could find either cost money, was Windows only, or just sucked. Being a programmer, I naturally thought “I better build my own”. I’d seen Twine while searching for CYOA editors, and thought it might be possible to turn the output of Twine into CYOA’s, so I set about writing GordianBook to do so.

I honestly only learnt about the IF scene afterwards. I knew nothing about parser games (I’d missed out on that whole era, despite being the right age — ironically, because I ran a MUD for a few years), and nothing about the innovations that had created Twine, I discovered all of that much later.

6 Likes

I wanted to make a game like Infocom’s Enchanter, and I understood Inform as an attempt to replicate and later extend the capabilities of Infocom’s technology.

I also understood snippets of Inform code, or thought I did, when I saw them posted here. There were authors like Amanda Walker who were open about their lack of programming expertise. Witnessing that kind of openness encouraged me to try Inform despite my own inexperience.

…so I did!

9 Likes

I stumbled into this forum after entering Leadlight (an Apple II BASIC game) in IFComp. I entered as an outsider, discovering IFComp as a place to put something I’d made. It was 2010, but my prior programming had been all BASIC and some assembly, 90% 8-bit and 10% 16-bit.

On deciding what to do now I was involved: Inform 7 was certainly prominent in this forum and amongst the games entered in IFComp 2010. Crucially, Aaron Reed’s book on how to write with it had just come out. I bought that book, started reading, and started thinking about a suitable first game to make with it. That was Six. I enjoyed making it and the outcome so I never thought about changing languages again.

I don’t enjoy staring at ‘normal’ code (e.g. my Roblox game written in LUA, though I’m proud of the achievement of learning LUA). It takes me forever to parse, forever to go back and see how it works. That’s my brain. Maybe what I most like about Inform 7 is how readable it is after the fact. It doesn’t bother me that an assertion sentence might be longer to type than in a non natural-language language. I rarely type the whole thing. I can copy and paste, or use macros I’ve set up outside Inform 7. I’m surrounded by examples of the phrase I want to use, anyway. Once your game’s of any size, it’s a sea of copyable-pasteable useable stuff.

-Wade

8 Likes

I don’t think that’s an accurate impression of what’s going on in the JVM. The idea of just-in-time compilation is that you can do a better job compiling by collecting stats at runtime than you could guessing with heuristics ahead of time. Anyway, no IF interpreter on a shoestring budget is going to beat it.

1 Like

I got into IF and binged hundreds of IFcomp games. I noticed that most of my favorites were Inform (I couldn’t play Tads on my mobile device and twine had very few IFcomp games at that point. I was excited to discover that IFcomp was ongoing and a thriving community existed.

Also, Emily Short had open source code for some really great games. I started my first game Ether by taking the code for Glass and modifying it. (I don’t think any Glass code remained at the end).

Finally, inform’s natural language processing seemed fun, like a game itself.

So:
-all the good games were inform games
-the source code was open
-coding in it was and is fun for my mentality

7 Likes

I don’t have really an IF dev system of choice; as posted years ago, the first question I pose is “what is the (IF) language best fit for this story ?” knowing the strengths and/or weakness of IF languages, I generally came with the language best suit for the narrative (aside a pair of blunders…); Isekai is coded in TADS3 because has a pair of really complex NPC, for a major example.

I use the same methodology also to general coding: when going literally ballistic I use Fortran; for quick&dirty one-off tools, the much-maligned basic suffice, trust me (when one whip together < 100 lines, the harmfulness of certain instructions don’t interfere…)
I even used cobol once, for a program for analysing & comparising pre-ww1 naval budgets; surprisingly worked better than expected, so cobol actually is worth if in its natural environment, and this reasoning can apply also to IF languages, the “natural environment” in this case being the story & narrative.

Best regards from Italy,
dott. Piergiorgio.

6 Likes

I generally agree with Dan Fabulich’s thesis that authors learn authoring systems to create games which are modeled after the ones they’ve enjoyed and admired themselves.

I enjoyed playing Infocom text adventures as a kid, and discovered the modern IF community in around 2002. I started writing my own I6 game in ~2004 (before I7 was available) and didn’t publish until 2008. I began writing an I7 game the same year, and published it six months later. I loved the I7 IDE, but never fell in love with the language itself.

My next project was a static novel (which I finished never published) and a memoir (which I adapted as a Twine, and published in 2019). By the time I resumed my interest in writing proper interactive fiction, the whole scene had moved toward a confluence of limited parser engines, and hyper-text games with some semblance of a world model. I landed on the Twine/Javascript side of that, inspired by the top three games in the 2022 IF comp, which were all choice based: “The Grown-Up Detective Agency” (Brendan Patrick Hennessey), “The Absence of Miriam Lane” (Abigail Corfman), and “A Long Way to the Nearest Star” (SV Linwood).

4 Likes

That wasn’t the claim. It began with “approximately no authors…”, so I don’t think your experience is a counter example. I don’t know enough to take sides on whether it’s right, though… It applied for me in one way, as I wanted something that would make a text adventure like Infocom or Magnetic Scrolls, so went for Inform 7. But in another way I was assessing the systems, as I decided against Inform 6 and TADS, and might well have decided against ZIL if I’d known about it. Though thinking again, I hadn’t played any Inform or TADS games so maybe the claim doesn’t apply to me at all either!

2 Likes