The Once and Future Storytron

TL;DR – The Storytron SWAT source code is online at www.storytron.org.

Storytron was Chris Crawford‘s attempt at commercializing his thoughts and ideas about Storytronic interactive storytelling, built off of his work with the Erasmatron.

After Chris retired from actively working on interactive storytelling he decided to make all of the Storytron source code available to the public under a open source license. Two repositories are currently available at www.storytron.org (with more to follow).

The first repository is for the storyworld authoring tool (SWAT) which also contains two other Storytron components—the Engine and the Storyteller. With SWAT you create storyworlds like we did back in 2010. These storyworlds are run through the Engine and played using the Storyteller. The second repository contains documentation generated from the SWAT source code using Javadoc.

There’s a ReadMe that will walk you through the steps to get the downloaded code running in Eclipse. You’ll also need to install and configure Git if you want to clone the repository.

To learn how to build Storytronic storyworlds the original Storytron Author’s Guide and Tutorial are still available online.

For Storytron discussion and support we’ve created two groups— one on Slack and another on Google Groups. For Slack access email me at info@storytron.org (please provide your full name and email address). You can request access to the Google Groups discussion board at that site.

Slack is similar to other online chat programs from AOL, Yahoo, Microsoft, or Facebook that you might have used. It supports direct messaging between individuals and also has individual channels for the discussion of specific topics. The only drawback to Slack is that with our free account we’re limited to searching 10k of messages.

Google Groups is similar to other discussion groups or bulletin boards you’ve encountered in the past. Messages are posted with and the message threads evolves as the back-and-forth discussions develops. 

I leave it up to the community to determine exactly how both these groups should be used.

For those of you who are interested in some of the historical thoughts and discussions behind Storytronics and Storytron there are two older discussion boards that you can wander through.

The conversations on the Siboot discussion board are focused on Chris’ most recent attempt at re-imagining his original 1987 Trust & Betrayal: The Legacy of Siboot using an updated version of the 2010 Storytron technology.

The conversations on the Storytron discussion board go back much further and probably span the years from 2008 to 2010. I say probably because this is an archive of the original discussion board and some of the message threads weren’t captured completely. But it’s still an interesting glimpse at what once was.

What can be done with the open sourced Storytron code? 

At the very least we can make the existing code easier to use. The current user interface is tightly coupled to the implementation model which makes it necessary for authors to perform an unusual set of mental gymnastics to bring their mental model in line with how the tool works.

But all the changes don’t have to be done at once. They can be done piecemeal, step by step.

For example, it always annoyed me that you were unable to open a new storyworld once you had started SWAT. The program prompted you to select a storyworld when it first ran but to open a new storyworld you had to quit SWAT and restart it a second time.

Without the source code I was out of luck, I would have had to contact Chris and convince him that the change was necessary. But with the source I was able to create a new Git repo branch and add an Open menu item to the existing menu structure.

Current Storyworld menu on the left; new Storyworld menu with an Open menu item on the right.

It’s still a work-in-progress but once I’m finished coding and testing I’ll push my local branch back up to the online repo and merge it back into the master. Then, everyone will have access to this feature.

The same thing could be done to add a New menu to SWAT so a storyworld builder could create a new storyworld from scratch instead of having to open and modify an already existing storyworld and remember to save it under a new name.

A future Storyworld menu with a New menu item added.

The current code implements a client/server architecture, a legacy of the Storytron business model when the engine ran storyworlds on a server. The engine code has been integrated into SWAT but the code could be refactored, making it easier to understand and maintain going forward.

Setting up character relationships using perceived traits was always difficult. Better editors could be created to configure these relationships visually.

The current Relationship Editor on the left; possible designs for a visual relationship editor on the right.

The current version of SWAT didn’t support a interstitial stories. It was possible to create them using custom verbs but it was a hack and a bit kludgy. With the Encounter Editor source code it would be possible to integrate this tool into SWAT for a seamless development and presentation experience.

An attempt at an interstitial story in the current version of SWAT on the left; an example interstitial story from Trust & Betrayal: The Legacy of Siboot (1987) on the right.

The current version of SWAT only supports displaying a single static image for each character at the bottom of the Storyteller window and emoticubes next to character responses. We could move beyond this and enable storyworld builders to use multiple images for their characters and configure how they are displayed to the player. Again, having the source code available makes this possible.

Mockups for different ways to choose what character images are displayed to the player and how they might be displayed.

We could even integrate some of the face technology that was developed for the latest version of Siboot once Chris releases that source code. 

Looking beyond Java, there are languages like Scala, Clojure, and Kotlin that are designed to run under the Java Virtual Machine or JVM.

All these languages have various degrees of interoperability with Java so it might be possible to rewrite existing Java code in one of them to make it easier to understand, maintain, and expand.

Kotlin also has another advantage—it can be compiled to run on multiple platforms besides the JVM such as iOS, Android, JavaScript, Windows, Macintosh, and Linux. With this capability storyworlds could be run on multiple platforms to reach as wide an audience as possible.

These are just a few things off the top of my head that we could do to improve Storytron now that we have access to source code. I’m sure other people can come up with a few more once they’ve had a time to familiarize themselves with the SWAT code at http://www.storytron.org.

Let a thousand storyworld’s bloom!

Note: Cross-posted to Medium here.

This entry was posted in Other, Side Projects and tagged , , . Bookmark the permalink.