What will interactive storytelling look like in the 21st century? Oops, we’re already 12 years into the 21st century. And yet the main authoring systems for interactive fiction still produce stories that rely on a computer user interface that was common and well understood in 1980.
Maybe it’s time for a paradigm shift. Do you suppose?
In the last couple of days I’ve glanced at a variety of new software tools designed for interactive storytelling, and/or stories created using said tools. Verdict, first, evidence afterward: Undum with Vorple is the clear winner.
Twine has a nice editing environment (it’s a bit like Quest), but Twine stories seem to want to clear the main display area and toss up entirely new text every time you click a link. Continuity of narrative in such a system is essentially zilch. Bad psychology — in essence, it’s even worse than what you get with an old-school command line interface.
The two ChoiceScript stories that I looked at were stunningly bad. It appears ChoiceScript is set up to collect the player’s characteristics based on what radio button the player clicks on in various menus of choices. Player characteristics — a relic of Dungeons & Dragons. Radio buttons — ugly.
Ren’Py might be a reasonable system if I were a graphic artist. I’m not. BloomEngine may be capable of delivering an effective browser-based story experience, but the game written by its creator neither looks attractive nor reads well; plus, the engine apparently relies on HTML 5 tags with a minimum of Javascript code, which seems a somewhat artificial limitation to me. If you’re going to build a race car, you don’t start with a bicycle frame.
John Ingold wrote a clickable story called “A Colder Light” using Inform 7 with some extensions. That development system may have some promise, but “A Colder Light” reads exactly like a 1980-era command line game (because that’s what it is). The sugar sprinkled on top is that you don’t need to (and in fact can’t) type commands. You click buttons, and then the command you’ve clicked shows up in the main window, exactly as if you had typed it. This technology will impress you only if you haven’t visited a single website in the past ten years.
Undum produces nice-looking output. It looks modern, not dated, and it’s highly configurable. The Vorple features give you ready access to such useful features as pop-up menus. The downside is that you’ll be writing your story in the form of Javascript code. This is not an exercise for the faint of heart. If I were new to computer programming, I wouldn’t attempt it.
There are lots of Javascript, CSS, and HTML tutorials online, but most of the ones I’ve looked at are cluttered with ads, and the text is a hodgepodge of links. Buy actual books? Hmm. How about my local public library? It turns out I have online access through the library to some excellent e-books, including Professional Javascript for Web Developers, Third Edition by Nicholas Zakas and The Book of CSS3 by Peter Gasston. It’s still reading on-screen, which is not as nice as reading a printed book, but these are actual books, not tablespoon-sized snippets of info. Good resource, a library.
My covert agenda is fairly simple: I enjoy writing stories. I would like to have a way to share new stories (and perhaps rework a few that I wrote years ago) with the iPad generation.
Traditional fiction publishing has spiraled down into the mud in recent years. In 2008, for instance, I sold a story (“Leaving the Station,” one of my best) to Asimov’s Science Fiction Magazine. They published it 14 months later — a lag time of more than a year. And once that issue is gone from the newsstands (newsstands? are there even any newsstands anymore?), the story is gone forever. This experience did not inspire me to want to roll up my sleeves and write more stories.
This particular story, along with several others, is available on my website (www.musicwords.net), but I get essentially no traffic — and there’s no reason why I should expect any traffic. I don’t do any promotion, because I have nothing to promote. Lots of fiction authors upload stories to their own websites, but frankly, 99% of online fiction sucks. Convincing anyone that I’m in the non-sucky 1% … good luck with that.
No, I need an online publishing paradigm that’s fresh, a delivery system that readers can get into. At the moment I have no idea how I might rework “Leaving the Station” as an interactive story. You don’t just put a few links in the text — there’s a lot more to it than that. The whole story has to be redesigned from the ground up to work in the new medium. The redesign work may be slightly less extensive than if you were turning the story into a screenplay, but even so, the process is bound to be complex. And interesting! That’s one of the reasons to do it.
But first … Javascript tutorials. I may need to learn about the jQuery library too. Hand me the shovel, and slide the food under the door.
Addenda: After spending a couple of hours this evening trying to get started by editing one of the Vorple demo games, I can see that working with these tools is not going to be a stroll in the park.
One big issue with Javascript is that it fails silently. Most of the programming I’ve done has been in compiled languages. In a compiled language, when you make a mistake the compiler will give you some idea what (or at least where) it was. With Javascript, you’re on your own. The game fails to launch, and you have to go back through what you just did, hunting for difficult-to-spot syntax errors. Ugh.
Creating an output paragraph in this system is messy. Here’s an example. I thought I’d port the opening scene in “The White Bull” (look for it in the Spring Thing competition, which opens in about two weeks). Undum doesn’t know about in-game objects, but we can fix that. So here is the description of Julia, which resides in a TADS-like property called desc:
var julia = new Object; julia.firstDesc = true; julia.desc = juliadesc; function juliadesc (system){ system.write( vorple.html.p ( "Julia is quite beautiful, with wild dark hair. She's wearing a khaki explorer's " + "outfit and a wide-brimmed hat. The loose-fitting but tightly belted shorts hint at the " + "curves of her figure, which which you're intimately familiar. " ) ) if (julia.firstDesc) { julia.firstDesc = false; system.write ( vorple.html.p ( "Not only is she beautiful, she's also incredibly bright, and more than a little " + "obsessed. This idea that she'll discover the Labyrinth of King Minos on this " + "obscure speck of an island, when the entire scholarly community is sure Minos " + "ruled (if he ever lived at all) hundreds of miles from here, on Crete ... you " + "sometimes wonder if her parents lulled her to sleep every night when she was " + "little by reading to her about Schliemann's discovery of Troy." ) ) } }
In TADS or Inform, that stuff would take up less space, and it would be easier to proof-read. Typing “vorple.html.p” hundreds of times is not going to be fun. Nor will it be fun tracking down missing parentheses.
Say goodnight, Gracie.
Have you been following Varytale at all?
http://varytale.com/
Hadn’t heard of it. Thanks for the tip. It’s unreleased, and there seems to have been no activity since last August. Not a good sign.
From what I understand it’s in a private beta, but given the right proposal it’s not out of the question they would send out a beta key.
Not sure what browser you use, but most have a JavaScript debugging console in their tools.
Use Chrome. When you want to see what’s going on in JavaScript, right-click and click Inspect element (anywhere) and this brings up the debugging console. If you Click the Scripts tab and select the script from the drop down list, you can then set break points, watches, and do all the normal things you’d want to do in a programming platform.
I couldn’t make it through a single day at work without this feature.
Great tip, David — thanks!
It’s not a perfect debugging solution, though. If my script contains a syntax error, Chrome simply fails to load it into the page. At that point, the script debugger can’t even look at it. Since my ham-handed script is quite likely to contain errors, what I need is a “fake compiler” that can look at the script and spot the errors.
Consider using Firebug. It is a nice debugger and has caught even some of my lovely typos.
Good suggestion. Firebug does indeed display Javascript errors. It’s a nice development system.
Can I ask which ChoiceScript games you tried? Can you say a little more about what you didn’t like about them?
After the intro, the game pauses while it asks you to build a character by making numerous artificial choices — your name, the things you’ve studied, and so forth. As a fiction writer, I find this stupid. The author of a story should darn well know what sort of protagonist he or she is working with! Also, the radio button chooser interface is primitive and ugly. I didn’t stick around long enough to see what would happen after I built my character.
You may be right, though I think there’s also something to be said for being given the freedom to create your own character.
If you can hold your nose through character creation, I think you’ll find that “Choice of the Dragon” and “Choice of Broadsides” have a lot to offer.
But it isn’t really creating a character. In order for the choices that the reader is given to be meaningful, the author would have to write an entirely different narrative for each possible combination of traits! Just to make up an example off the top of my head, a woman who has trained as a dark mage does NOT respond to situations the way a man who is a farmer will respond. If the responses of the character don’t change, then the “creation” of the character is a fraud. If they change in trivial ways (with bits of wording that have no bearing on the actual flow of the story), it’s a more elaborate fraud, but it’s still a fraud. In any event, No author who had any real ability as a storyteller would indulge in this kind of crap — and I will stand by that observation. I mean it. If an author lets the reader choose sex, age, or personal characteristics, then the author ought to be writing the back-panel copy for dog food boxes, because that’s all he or she is fit for.
Oops, I bottom-posted instead of replying in-thread.
As I said, you might be right. However, it’s a very common practice, especially in CRPGs; some people really seem to like it.
If you’re willing to hold your nose through character creation, there are a lot of really wonderful story games out there that you might be missing out on, including any RPG you can buy from Bethesda and Bioware, but also including “Choice of the Dragon” and “Choice of Broadsides.”
I’d be especially curious to hear your thoughts about Broadsides’ approach to the gender question you raised in your example.
Thanks, useful post, for me- (need an interactive webpage to guide potential student applications through requirements, so looking into adventure game approach,)
http://www.w3schools.com/js/ might be a useful overview/intro to Javascript.
If you’re not familiar with the Interactive Fiction Forum (www.intfiction.org), that would be the place to start discussing this topic. You’re not the first person who has considered using adventure game I/O for other purposes.
Thanks, I found some useful discussions there.
I’ve got limited time to survey solutions unfortunately. I do like undum, and also choicescript (preferring “download and edit code” options than installers). Also looking into a just flowchart/decision tree approach (it’s quite tricky to get flowchart shapes and lines on web pages across browsers!).
(Scrappy experimentations at: http://www.kcl.ac.uk/teares/nmvc/external/prospective/ but it probably won’t be there long)
Thanks again
Brent
Twine:
You might give Twine another look. The Jonah story format keeps all the text on the screen. With both Sugarcane and Jonah formats, you can bookmark the story to create a save game of sorts. (The URL produced contains every page you’ve been to)
Ren’py:
You don’t need to have graphics in a ren’py story. You can do the whole thing in “novel” format which displays more like a novel. i.e. the text stays on the screen. (Full disclosure: I’m a Ren’py fanatic and love to make it dance and sing at my will.)
AXMA Story Maker:
This is one I just found. It looks interesting, but it doesn’t satisfy my inner programmer need to customize all code.
Susan