How did you choose your development system?

I chose Twine because it seemed like the most flexible of the various choice system. I wanted to make a fairly complicated game with some parser-like features, and that seemed like the best option.

I first learned Inform 7 before I was really aware of the IF community. I don’t really remember why I did that. I guess I stumbled onto it and it seemed neat? Then ten years later when I decided to actually make a parser game I went with I7 because it was familiar. I think in an alternate universe where I hadn’t learned I7 on a whim years ago I might have at least considered going with TADS, though.

7 Likes

You got me there. You know, I was writing an unofficial sequel to an unfinishes Infocom game. What else could I have done? :sweat_smile: But honestly at this point, I would say I prefer the language over Inform 7 or TADS.

I remember playing the start of Spider and Web and thinking, “Damn, I can’t keep coding in Python or Quest anymore.” Now, I look over and am glad I made that move, but I’ll be honest, I started my IF journey with Quest. Not ZIL, but it was the game Night House which drew me in and so naturally I started on Quest, but when my computer broke and I lost everything on it, I decided I wanted to change language. (I then accidentally deleted the entire of my OS in my new computer, which deleted a lot of my newer ZIL work on Milliways when I was starting it out, lmao…)

But my point is, sometimes those games provide the perfect push to start a project, and the other game’s language can be a backbone for that. But writing your own system feels a step beyond that, like maybe it should be done by an author who knows what they want for their projects.

5 Likes

Hi, I’m new here!

Since I’m a software engineer, I chose to write my own system. I’m sure I could find one that’d fit our current needs, but you never know what feature might creep in and stretch the third-party development engine, to the point it won’t provide what you need.

Plus, I like building my own stuff from scratch :slight_smile:

So I decided to roll my own. It’s been quite challenging to say the least, but being in full control of everything pays good dividends in the long run.

5 Likes

I don’t think the JVM uses just-in-time compilation, unless I’ve missed some major overhaul news. I’m pretty sure that’s just a C# thing. Java compiles to bytecode, and that gets run as-is on the VM.

The JVM actually introduced just-in-time compilation as a mainstream technique. You’re correct that Java code gets ahead-of-time compiled to Java bytecode, and the JVM is able to interpret bytecode without compiling it, but it also analyzes the program as it runs, and compiles portions of it to native code wherever that would improve performance. C# works in a similar way, but it came out a few years later.

5 Likes

Ohhhhhhh that’s good to know, then.

I’m also a bit of an outlier, as someone who likes learning lots of different programming languages. I started with I7 because I wanted to emulate the Infocom games of yore and the natural-language syntax was cool. Loose Ends started in ChoiceScript to emulate Night Road, but early on we ran into various limitations of the language and switched to Ink, and that’s what I’ve used for choice-based stuff since then. When Dialog came out I thought it looked really cool and started playing with it immediately because I liked its elegance; actually playing The Impossible Bottle came later.

4 Likes

I’ll admit to not being all that up-to-date on what’s happening under the hood with any particular language, and its not like I pay attention to what language the apps I run are written in. I just know that back in the day, the JVM was seen as sacrificing performance for portability and picking Java was seen as not caring about how well your program runs on weaker hardware. Granted, that was back in the days when Vista was the latest bad Windows, 7 was the latest good Windows, Running XP or even Win 2000 was considered a reasonable choice if you didn’t want to buy a new computer that could Run 7, and even flagship smartphones were considered obviously inferior for everyday tasks compared to a desktop, and with modern hardware, compiled versus virtualized versus interpreted is probably functionally irrelevant as long as the code uses halfway reasonable algorithms and you aren’t running on like n=a billion datasets… and that billion might be low balling what counts as major number crunching for a modern x86-64 or ARM processor, though a billion 64-bit integers is about 8GB if I’m doing my math right, about half of my desktop’s total RAM… though of course, space and time are two different things when discussing algorithmic performance and the CPU might never need more than the value its currently acting on in memory.

Still, I’d probably have to multiply the largest program I’ve ever written by orders of magnitude for performance to be a serious consideration… If you seen some of my programmatic art, it can take a few minutes for the larger pieces to run their generation, but its something that can run in the background with no impact on the rest of my system, and it takes far longer for optipng to convert the .ppms my code generates to optimized PNGs then it does for my code to run, and that’s probably the slowest code I’ve written… and considering I’ve made images up to around 1024*1024 with 1024 frames by using a triple for loop to to loop through x, y, z coordinates, that’s right in the n=a billion range I mentioned… honestly, the bigger deal is probably that the ppms generated take up gigabytes and even though I’m running the code on SSD, I wouldn’t be surprised if disc writes are the bottleneck and learning how to write binary files and using bitmaps or writing directly to png wouldn’t speed things up, but text files are what I know how to write and ppm has a simple, plain text format.

Yep, that’s exactly what motivated me. Okay, it was only part of the motivation. I could never really decide what motivated me more: coding on a system/framework or writing an IF.

1 Like

I had brought this up with mathbrush on discord but this thread has led me to realise that I’m probably one of those people whose decision to use inform 7 for parser games isn’t as straightforward as my decision to use twine for choice games.

1 Like

Sure, technically it’s possible that there are “approximately no” people like me, but the unstated assumption here is that I assume I’m not an extreme outlier.

1 Like

You might well be right in what you say. I’m an exception too. I was just commenting on the misquotation.

When I started developing my first project, I wasn’t modeling my work after any particular IF. I had a concept for a choice-based game (The Secrets of Sylvan Gardens) and my top priority was to find an authoring tool that would support me in telling that particular story.

At that point I was much more focused on the writing experience (how the scripting language felt for me to use) than the publishing side. I had never written a game before, and I knew this project was going to be pretty large; so in order to give myself a shot at actually starting and finishing the project, I mainly needed to find an authoring tool that would be as frictionless as possible for my creative process and the particular ways in which my mind works.

I fell in love with ink as soon as I came across it and just ran with that. I had never played a game written with ink when I first tried it out. I believe I found it just by looking through lists of IF authoring tools.

8 Likes

Coming back to IF after a 20 year hiatus I knew I’d didn’t want to build parser games and - rightly or wrongly - Twine seemed to be the incumbent alternative.

My decision to build Rez was a direct response to my frustrations with the Twine experience. I have very strong stylistic and mechanical tastes and SugarCube, Snowman, and Twine itself kept rubbing me the wrong way no matter how hard I tried to live with them.

Arguably if I was more interested in the finished works I would have just persevered through my unhappiness. But the programmers blessing “I can do this myself” is also the programmers curse. That said I have very much enjoyed evolving my system towards my vision and building the system & game towards each other.

I actually didn’t come across Ink and Choicescript until later, but having studied them since I am reasonably certain I’d have arrived at the same conclusion. Such tools are the result of a vision and a set of compromises and I have differences in both.

6 Likes

So, my original goal was to build an RPG as someone who is, admittedly, not an ardent and devoted writer, and this was really the biggest bottleneck in my development pipeline, as someone who is much stronger with music, art and programming. I used the Fungus library in Unity, which I modified to enable some additional low coding functionality.

So, to become a faster writer and fix the bottleneck, I kept asking other writers with branching narrative experience for advice, sadly with little success. Then one of them actually referred me to this forum, where @HanonO introduced me to QBN.

Turns out, the atomisation of storylets that this style enabled meshed really well with my brain. A few months later, I got bored at work and built a prototype data model in Google Sheets and successfully converted that to JSON and imported it into Unity. I expanded that parser with variable text based on qualities and other minor features and had a basic parser language.

Then, at least once or twice a month, I kept hearing how people missed StoryNexus, and since I already had a functional prototype language, my hubris got the better of me and I figured “How hard could it be to emulate that and give the people what they want?”

I have been in a state of hyperfocus for several weeks now, and ChronicleHub is really coming together. So, long story short, I suppose Fungus is the first framework I actually installed to enable easy IF creation within Unity, and beyond that, I just build my own stuff if I need it, just so I have full control of what my engine is able to do.

4 Likes

Java also has AOT (Ahead-of-Time) compilation these days.

The problem with Java isn’t performance, it’s memory use, which can often be 5-10× as much as for other compiled languages. For example, a “hello world” Jakarta EE web application uses 160MiB of RAM. Everyone lost interest in applets and downloadable applications so the big Java vendors spent all their time optimizing for performance regardless of memory use.

Anyway, back to the original topic… I wanted to write Infocom-style adventures. I wanted a rich standard library to leverage, but not something as overwhelming as the TADS standard library. I wanted a first-class Mac experience, and something with enough momentum behind it that it wasn’t going to disappear. The obvious choices were Inform 6 and Inform 7, I picked Inform 7 because it looked like it would be faster to learn, even though I expected some frustration from the natural language syntax.

3 Likes

One of the things I knew I was going to have to implement for my WIP was a poker hand evaluator, something which is quite fast if you can use arrays with ~7500 elements. I initially looked at Inform 7, due to its popularity. But I was unable to work out how to do what I wanted to do in it, and was able to almost immediately get a prototype working in TADS3.

8 Likes

I am one of the crowd of people who is drawn to an engine because of great games made in it modulated by my capacity to master it and being able to show it to people as soon as possible.

I started my journey in narration-oriented games by trying “the engine powering the monkey island series” (I had no idea you could play text-only games, Infocom has basically no roots in France) and the scummvm wiki said “try Inform” in a footnote. I put that in my favorites for later reading (that’s how you did it before they invented browser tabs) and continued my journey (by not doing anything with scumm because it was incredibly hard to use and a pain to distribute). Until I came across works by Em Short, and thought “Inform looks grea… wait, it reminds me of something I favorited some time ago”. Also made a few prototypes in it but never finished anything and a fortiori never released anything.

Fast-forward to the Twine Revolution, it was very clear that all those games were made in Twine, and I wanted to love the engine because the game were great ! Actually released 1 (one) thing in it (not really a game, more like an expanded blog post) but the node-based interface was not for me. I am a webdevelopper by trade and I felt too limited.

Until I discovered 80 days and thus the ink engine. And for the first time it clicked and I’ve made everything I’ve released in it. And nowadays the structure of my ink is actually influenced a lot by some incursions I made into dialog (that I also looked at because the, like, five games released in it are all AWESOME). Ink is easy to write (even in french) and to publish.

So in the end, you could say I chose my engine only amongst ones that made games I admire. It took a long time to find my now-favourite (but I couldn’t find it sooner, it did not exist yet !)

6 Likes

15 posts were split to a new topic: Browsers and bookmarks

Hmm… it appears the answer to “how did you choose your development system” has become “using a web browser from the 90s”.


Here are some things an admirable game also does for a system:

  • A proof of concept! It’s tough for users to evaluate a system from the outside, and it’s easy to produce a system with an impressive list of features that don’t end up conducive to building an admirable game.
  • Branding! Without 80 Days’ success, for example, I suspect far fewer people would have known about Ink in the first place.

I’ve always thought that the “admirable game” advice was sound, even if the mechanism Dan suggests isn’t universally true, for both of these other reasons. Personally, I didn’t pick up Dialog because I played and loved Linus’ games… but if those games didn’t exist, it’s less likely that Dialog would have been good to write games in — if you look at the dev history, you can see many features added that are a bit theoretically a bit inelegant but extremely nice in a larger project — and less likely to be something that folks were talking about seriously here on the forums.

6 Likes