Games with stats/points? What program to use?

I’ve been a long-time IF player but I’d like to try my hand at writing my own IF, though I thought it might be simpler to start with CYOA. I’ve started sketching out a game, and I’d like to make use of stat scores that affect what the player can do in the game. Ideally, I’d like to make the stats explicit and usable by the player - for example, “Do you wait for the store owner to show up? This will take 2 TIME.” Some actions would become possible or impossible based on score values. I guess the closest analog would be those old Fighting Fantasy novels. Is there a particular program I should use for this? Sorry for my ignorance.

Twine ( would be good for simple CYOA variable stuff.

This depends on what you’re looking for; there are a number of tools that will do pretty much the same thing. Twine is probably the easiest to pick up. Varytale is prettier, perhaps a little less intuitive but still very easy, and has some nice features if you don’t want a literal branching-tree plot (more ‘this event can show up whenever the player has 5 Strength’, kind of thing.) Choicescript is designed specifically for games with lots of character stats, although it tends to keep them understated and out of immediate sight, and it has a strong structural idiom. Undum is also designed very much in a Fighting Fantasy character-stats kind of idiom, but of the available options it’s probably the most fiddly to learn (and getting beyond basic functionality requires Javascript chops).

So largely it depends on whether you’re already familiar with coding. If you’re already fluent in Javascript, for instance, Undum is a very strong choice – but learning Javascript just to do Undum is probably more effort than it’s worth. Similarly, the structure you want is important: if you wanted to make something that very closely resembled a Fighting Fantasy or Lone Wolf style of gamebook, Undum would be ideal. A more directed, single-plot-with-variations-depending-on-stats plot with lots of bottlenecks: Choicescript. A classic sprawling spiderweb, flying off in every direction: any of 'em, but Twine probably wins.

In my opinion, another big question to ask is the role of an “undo” option in your game. Varytale and ChoiceScript don’t have them; Twine does (and it can’t be turned off, AFAIK) and in Undum I believe it’s an option you can turn on or off.

“Undo” can have a huge impact on how players approach your game. If your game allows “undo,” you’ll find that players will use it a lot (like, all the time) to explore all of the available options. That can be good if you’re building an environment for leisurely exploration; it can be bad if you’re trying to build a game with a tight plot/storyline.

If you want people to think hard about whether they should choose X or Y, “undo” will undermine that; players will just try them both to see what happens. But if you ultimately want people to click on everything, to see everything you have to offer, it would be annoying not to have “undo.”

Similarly, if you want your game to have die rolls, “undo” could allow players to cheat, re-rolling the dice until they get a winning result. But maybe that’s OK. The Fighting Fantasy paper gamebooks couldn’t stop you from cheating, and I think that made them better; if you want a hardcore challenge, you can have it, but if you just want to explore and see what happens, you can do that, too. is built for this kind of thing. To place it in the canon, it’s probably easier to use than Twine and ChoiceScript, but probably a bit less powerful than both. It’s certainly less powerful than Undum; and it’s just plain different to VaryTale.

…there’s a lot of options out there these days!


1 Like

Porpentine or someone who’s written with Twine will know better than I, but I think Twine doesn’t have an in-system UNDO (lots of games have a “Rewind” button on the side, but it seems to be bugged as I’ve never seen it work; howling dogs didn’t have the button). However, you can step back by using your browser’s back button. I don’t know if this affects random number generation.

Undum doesn’t have undo per se. It has one save point which is meant more as a way to save progress between sessions.

You can hack it to provide multiple UNDO. (The save state is basically an instant replay from the beginning; to undo, you restore but only replay N-1 turns). I borrowed some of Jon Ingold’s code to make this work in The Cavity of Time; it’s kind of hacky, sometimes messes up formatting if you have images, and randomness would probably break it pretty thoroughly.

Thanks for your thoughts, everyone. I think in this instance I’d specifically want to avoid UNDO, especially since I’m not anticipating a high-fatality sort of tale. I thought about ChoiceScript and Inkle, but would I have to host my games publicly?

Would the best thing be to start on multiple platform and see which worked the best? I’m not strong in Javascript, so Undun doesn’t seem like a good fit for me.

There’s nothing about CS that requires you to host a work publicly, at least.

Great. One more quick question - do any of these systems allow randomized elements?

The undo/back feature of Twine is just a feature of the Sugarcane template, I make tons of games without undo.