Fourth Wall

Inspired by Telltale’s narrative games, Fourth Wall is a system for developing semi-interactive fiction that can be read in a browser. I wrote it as an experiment, so it’s probably never going to be finished completely — but Dog Writing has a few examples of how it works.

Fourth Wall isn’t a full choose-your-own-adventure system, like Twine. It presents a single story, designed to be read as one linear narrative. As a writer, you can define any paragraph or section to be dependent on particular variables, and allow the reader to “nudge” the story in a particular direction or to choose from a list of possible options. What does that mean?

Well, say you’ve written two characters having a disagreement. You can present three different options to the reader — one default variant, one where the disagreement is easily resolved, and one where it becomes more acrimonious. When the reader chooses one, the rest of the story from that point is subtly updated. If they chose to make the characters fight more aggressively, they’ll see the same story — but with less friendly dialogue and more opportunities for conflict.

Under this system, the entire story is always visible at once — it’s not like Twine, where the reader only sees one section at a time. Choices and branching paths that change how the story moves rewrite the story on the fly after that point:

Fourth Wall Demo

The system currently supports:

  • Display section variants based on boolean, integer and string variable matching
  • Read sections linearly or jump to another predefined point to skip irrelevant sections
  • Style your story arbitrarily based on predefined CSS stylesheets
  • Add inline highlights to provide more information to the reader
  • Enable reader feedback with comments visible just to the author or publicly viewable

Written in JavaScript and debugged via fevered prayer, Fourth Wall should work on all browsers. Mobile phone support is a little twitchy for certain features, such as reader commenting, but it's still in Beta right now and there’s always time to change things around. Also, since this is a part-time project for me, development is based on what kind of time I have.

If you’re interested in trying it out, the system also currently supports a problematic and terrifying lack of documentation. But if that doesn’t bother you, drop me a line and I’ll help you out!