I wrote a very short choose-your-own-adventure type game yesterday, and it’s called You’re In A Garden Or Whatever. It’ll take you maybe two minutes to play.
It’s really just a learning experiment (a “Hello World” in programmer parlance) for a new game development environment called Twine that I’ve been interested in trying for a while. Twine’s particularly interesting because it was designed specifically to be really, really easy for folks to learn to use. It succeeds wonderfully at that.
And not easy as in “compared to programming a game by touching actual metal wires together in the belly of a mainframe computer”; there are a lot of game development tools that are easy to get started with or relatively simple to work within compared to a full-throated traditional programming environment but which still present a very steep, very imposing wall of conceptual and practical barriers to someone who doesn’t already know a bit about software development. They’re useful, interesting tools, but they are not beginner-friendly.
Twine is easy as in “if you can understand how a Choose Your Own Adventure book works, you can do this”. A basic Twine game is as simple as a text description of the current situation the player is in and further description of maybe a couple of choices of how to proceed: do you want to push the lever, or go out the window? You write out labels for “push the lever” and “go out the window” respectively, and Twine will link those to the page you make that choice from.
So the code for the first page of You’re In A Garden Or Whatever looks like this:
You're in a garden. There's a tree nearby with some fruit on it.
* [[check that tree out]]
* [[just chill out, whatever]]
That’s it. Double square brackets for a link, and Twine will look for another little page in your collection of pages named that. Here’s what my page titled “check that tree out” looks like:
It's a big tree, with a whole bunch of fruit on it.
* [[eat some fruit]]
* [[man, it's nice out today]]
And so on. My game here has only 20 pages (or as Twine calls them, “passages”, which is a clever play on their role as both short passages of text and conceptual game “rooms” leading one to the next), and just a few more than 800 words, and I wrote it up in maybe an hour including debugging a couple of bad story links I’d created. I spent almost all of my time actually having fun building a thing, and I’m excited to tackle something a little more ambitious now in terms of story content.
If you like the idea of writing up a simple bit of interactive fiction, or grew up on Choose Your Own Adventure books, or always liked the idea of text adventures but couldn’t stand dealing with the guess-the-verb nature of classic text parsers (‘get sword’ … ‘I DON’T KNOW HOW TO GET SWORD’ … ‘oh bite me, game’ … ‘THERE IS NO BITE ME, GAME HERE’ … ‘augh!’), give Twine a look. It’s free, it’s a cinch to install on both Windows and Mac boxes (and works with a little nudging on Linux as well) and it won’t give you a headache. There’s some nice, short, gentle walkthrough videos at the bottom of the Twine page that will show you everything you need to make something at least as polished as the game linked here.
Really all you need is a story you want to tell and a willingness to sit down and write it. Twine does a magnificent job of getting out of your way and letting you do just that. Give it a shot.
(Confidential to seasoned programmers: Twine does provide some more advanced facilities for more complex game interactions, if you’re into that sort of thing. You can write and read arbitrary variable states, you can inline arbitrary HTML and include CSS styling, you can toss in your own JavaScript hooks, etc. It is excellent at not making things difficult for the novice game writer but it’s got a bit of horsepower under the hood too if you want to go looking. If you like the idea of writing a game as in using-the-written word but want to be able to do clever programmatic things with the environment or game mechanics, there are a ton of little Twine hacks out in the wild that prove that that is very doable.)