Which CYOA system is right for me?

I realize I am late to the party, but I have decided to embrace the CYOA revolution. So now I am wondering which authoring system is right for me.

For my purposes the following features are essential:

  • The system should be flexible enough to allow me to make a link appear only if certain behind-the-scenes conditions are met. For example, I should be able to make a link labeled “black door” appear only if a variable (or a comparable change of state) has been set specifying that the hallway it is in is currently illuminated.
  • More generally, while the system might allow me to display text without coding, I should have the option of writing code to generate content.
  • The system should be “stable”, by which I mean it is fully functional, mostly bug-free, and there is a significant online presence of authors who support each other’s use of the system.

Which systems currently fit the bill? If anyone wants to plug their favorite system and it meets my criteria, I welcome your feedback.

The big ones are Twine, ChoiceScript, and AXMA. Most everyone uses Twine, to be honest. Pretty much any hypertext engine worth its salt can do what you’re asking for since those are really basic features.

ChoiceScript is really simple but heavily opinionated. It’s pretty difficult to break the mold that they put you in, so nearly every game looks identical. However, the scripting is really easy to learn and does most everything you need for a game of that type. There’s also a ton of support for it on its official forums. It’s also the only one of the three that provides a way of getting your game published, if that’s a route you want to go.

Twine has varying levels of customization depending on which story format you use (there are four official ones to choose from, and a few other ones made by users). The scripting can be pretty complex, but it’s a really feature filled. The SugarCube storyformat goes above and beyond providing functionality for high level features like movies and music and general scripting features.

AXMA is really similar to Twine. The styling is a bit different but it’s pretty close. To be honest, I don’t know that much about this one so I can’t comment much further than that, but it seems like a nice development system.

A runner up to these three is Ink, but it doesn’t have a very good save system for the HTML version (you have to rely on one that I made, one that’s currently being added to the official project, or make your own). That’s it’s major drawback. Otherwise I would recommend it along with the others since I really like its syntax.

There are also two styles of hypertext games: choice based or passage based. You can make a passage based game act like a choice based one with a bit of work, but it’s difficult to get a choice based one to act like a passage based one.

To clarify, a choice based game is written something like this:

* choice 1
    You picked choice one! Nice!
* choice 2
    You picked choice two.. That's too base.

Rest of the conversation continues here.

Passage based is like this (each :: section is a passage and the display of text ends at the bottom of it, so each passage should be considering its own page of text):

:: start
Should I go left or right?

[[Go Left->left]]  [[Go Right->right]]

:: left
You went left.

:: right
You went right.

ChoiceScript and Ink are both choice based. Twine and AXMA are passage based. Whichever one is best for you is up to how you want to present the story.

There’s also my own engine (Sadako) that I’m working on which is actually is both a choice based engine and a passage based engine, and while it’s more than capable of doing what you need, it’s still in development and I think I’m literally the only one using it. So it really fails the last two criteria. Heh.

Anyway… here are some links:



I second twine. It’s simple enough that you could make a game in five minutes but powerful enough to make a complex game with graphics and sound with some html and javascript knowledge, but those are both optional.


There are 2 flavors of AXMA: AXMA JS (javascript) and 6.1. I use 6.1 since I’m familiar with its Twine-like macros and do not have JS skillz… But JS looks awesome.

My preference for AXMA is better end-user interface with saves, text size, audio controls, and it’s very friendly for images and multimedia. It’s not as customizable as Twine - I’ve described AXMA as like iOS > Android - it’s a closed system, but if it contains what you need it works well. It’s Russian developed so it’s a little hard to get support, but I’ve learned to work around and exploit 6.1’s special quirks.

You can use it for free, but if you buy a license for about $20 USD, you can export the HTML directly and modify it without going through the AXMA online library, and it removes the “Made with Axma” line in the opening screen.


I’m quite a newbie too, but I prefer Twine, since it has less constraints on the appearance : you could implement all kind of game you wants, from very basic to very complex. (But I admit designers like @HanonO made amazing things on Axma, with a very elaborated design.)

Particularly, in Twine (Sugarcube, but Harlowe can do the job too) you could make appear a passage (a choice) depending on variables, with a very basic syntax (HTML like for Sugarcube) : I suggest you to pick up Adam Hammond tutorials to begin, and then to look at Sugarcube doc (or Sugarcube cookbook) for specific purposes (there are many of good examples in it).

And when you just want to display text in Twine, you just have to write it, and that’s all (with some markups if you want, ! to obtain for instance an HTML h1).

Finally, Twine is free, and also free of bug - and when you got some troubles, you’ll always find on a forum a guy who knows absolutely everything on Twine (@Greyelf for instance) and who kindly helps you…

But perhaps the easy way to choose is to look at your favorite games and go with the same development system they choose ? I decided myself this way (I like Porpentine work in Twine).


Thank you, all who have replied!

Could you tell me more about saves? What can be done in AXMA but not in Twine? Is it utterly impossible to save game states with Twine?

Not at all - in fact SugarCube does saves very well. Axma does about the same thing, giving the user about six save slots that remember game state.

I just appreciate that I don’t have to think about the user interface and layout much in AXMA. You can choose layouts with a side picture or a background in several formats, and basic usability is covered for text size and audio and screen animation. The UI also reconfigures the screen real-estate automatically on the fly. On mobile or when the browser is too small, the side picture and menu are moved to the bottom of the screen.

Here’s the basic interface with the “gear” options opened:

Here’s what happens when the screen size is reduced: (notice the menu which says “introduction” moves to the bottom, along with a picture thumbnail the player can click on to see it)


Axma also helps with Macro, passage, and media syntax by inserting code template from a menu.


AXMA is a good pick just for the nice learning curve and the amount of stuff you can do without a Javascript manual. Note that you have to buy an AXMA license to self-publish games outside of ifiction.net library.

INSTEAD is good, if you’re ready to code. It’s fast, it’s designed for the location-based adventures (not plain CYOA) and you don’t have to care about UI elements or cross-platform compatibility at all, even in standalone games.

If you want to really test your skill, there are plain PDF gamebooks. You can generate the game using any programming language and gamebookformat. There are a lot of editor programs for manual writing.


I mostly use Squiffy. It’s quite simple to use and allows for JavaScript integration, which gives you great flexibility: you may program as little or as much as you want and you can be creating CYOA quite quickly.

Since it works on any JavaScript enabled browser, you can easily publish online or distribute for offline use/play with ease.


BTW, if anyone is interested to see how an offline distribution of Squiffy works, check out this example; it’s in spanish, as all my IF works so far.

Hi everyone,

I haven’t seen anyone comment on getting the stories into the App Store/Play Store


Actually providing “in app purchases.”

Are these possible with twine?

It’s not impossible to put Twine games in the App Store, but it requires a lot of thorny, technically challenging work. Basically, you have to take the web page that Twine generates and transform it into a miniature app.

Here’s an article from a couple of years ago on how to get started, but I wouldn’t expect most Twine authors to be able to follow these directions without assistance. https://whatbinder.com/2018/06/01/converting-twine-2-stories-to-android-apk-apps-for-the-google-play-store/

Open Sorcery is an example of a Twine game that works on iOS, Android, and is also available on Steam for Windows, macOS, and Linux.

I’m not aware of any Twine game available as an app on iOS or Android that supports in-app purchases. IAP requires a lot of infrastructure, including someone to answer customer support requests to handle refunds and such.

I think this is an area where ChoiceScript shines. You can publish a game via our Hosted Games label, including in-app purchases, and we’ll take care of the process of packaging your game for availability on the App Store and Google Play Store. We also support in-app purchases.


Thanks so much for the help. I’ll take a look at both the link and ChoiceScript/Hosted Games label.

1 Like

If I may jump onto this wagon: I have no clue about CYOA authoring systems apart from a few clumsy steps in Twine. I have three requirements: I want to have tooltips, I want to include pictures, and I want to handle variables. Twine is okay for that, right? Which… “story format” would I need for the tooltips (hovering the mouse over a word and display the tooltip without having to click on something)? Any alternatives that make the result look good? I am not afraid of coding, in fact that’s where I come from, I just want a system that lets me do some stuff (including the three requirements above) without having to read a manual before even starting. Thanks!

I know not of such an intuitive system that won’t require some reading or introductory material.

Myself, I use Squiffy: it’s simple enough, yo may include pictures and you certainly can use variables, but I’m not so sure about tooltips.

If you can read spanish, you may check my Squiffy works to see what’s possible.

1 Like