The Storyworld Authoring Tool
The Storyworld Authoring Tool is to interactive storyworlds as, say, Adobe DreamWeaver is to websites. It is a big complicated program that allows an author to create, test, and edit a storyworld. The purpose of this page is to give you a whiff of what SWAT can do. For starters, here’s a screenshot:
Pretty intimidating, isn’t it? We won’t try to explain what all this stuff does, it’s too complicated. Just remember, a screenshot of Adobe DreamWeaver is just as intimidating. Here’s a very brief tour just to orient you:
This screenshot shows the Verb Editor, the most complicated part of SWAT and the part we spend most of our time working in. There are also editors for actors, props, stages, relationships, and custom operators.
Along the left edge are all the verbs in the storyworld.
Just to the right of it (with the purple background) are all the details of this particular verb. Wowie-zowie, that looks pretty complicated, doesn’t it?
To the right of that (with the white background) is the script editor for the selected script in the purple pane. The selected script is marked by the button “Desirable” just under the label “6Quantifier”. This script decides what Quantifier word to use in a sentence using the verb “tell auragon count”.
One of the operators in the script — “CorrespondingPActorTrait of” — is highlighted; that means that we can select a replacement for it from the menus on the far right side, if we so choose. One of those menus — “Mood” — has been clicked on and it shows four possible replacements: Sad_Happy, Fearful_Angry, Suspicious_Gullible, and CorrespondingMoodTrait.
Look at all the pretty colors! Isn’t this a lot prettier than DreamWeaver? Well, OK, maybe it’s not that pretty, but we like the colors, because they are useful. Each color designates a particular type of word to use. Red indicates a number, black means a boolean (true or false), dark blue indicates an actor, purple is used for quantifiers, light blue indicates events, and green denotes an actor trait. There are even more colors for other types of things.
We’re very proud of the system we came up with for scripts in SWAT. It’s a programming language, but it’s easier to use than any other programming language. You don’t type in the words of the language; instead, you select them from menus. That makes it absolutely, positively impossible to make any kind of typing error or syntax error — the bane of beginning programmers. It’s also impossible to accidentally leave something out. Whenever you create something — anything — the system automatically fills in all the required details, and even puts in default values for you. You can never put the wrong operator in the wrong place, because the smart menus omit illegal operators. The menus are very smart and know enough context to prevent any kind of error.
The three secondary windows along the bottom are just a few of the little helpers that we provide. The first one, Sniffy Lizard, automatically sniffs out errors in any scripts. Yes, errors are supposed to be impossible, but there are complicated situations in which the changes you make in one place can mess up a script someplace else. Sniffy Lizard finds those mistakes and shows them to you. Just double-click on the line of text in Sniffy Lizard and it will take you to the problem. It also tells you exactly what went wrong.
The middle window is the ComeFroms Lizard. In programming, it can sometimes be useful to know how you got to a particular point. ComeFrom Lizard tells you that. Again, double-clicking on the line of text takes you there.
Operator Search Lizard allows you to find every case of every operator used in any of the scripts in the storyworld. This can be very useful when you want to find a particular script that used a particular operator.
You might be wondering why we call these things “lizards”. Do you remember the “wizards” that some programs provided to help you carry out some difficult task? The problem was that the wizards were usually too stupid to really help. We provide these things, too, but we don’t claim that our versions are magical. We admit that they can be pretty dumb sometimes, so we call them “lizards” instead of “wizards”.
Ooh, this tool is really neat! Suppose that you’ve written a really big, messy script, like this one:
Aargh! How can you verify that it does what you think it does? Answer: Scriptalyzer! Here’s what you see when you use Scriptalyzer on this script:
On the left third, you see the script. On the right side you have little sliders that allow you to vary the values of the terms in the script. In the middle, you see the results. The final result is at the very top. At the outset, all the values are intialized to zero. But suppose that you grab some of those sliders and move them around, like this:
See how the red numbers (and the red marks that they designate) have changed to reflect the changes you’ve made in the sliders. Scriptalizer is so fast that you can wiggle the sliders around and see the red markers slide around in response. Most important, you get to see how the results change. By wiggling the numbers around, you get a more intuitive feeling for how your script works.
Those grey bands behind the red markers — we won’t explain them. They’re really useful, too, but we’ll spare you that detail.
This is absolutely the most valuable tool in SWAT. Here’s its output:
This shows exactly what happened when I ran a test of the Siboot storyworld. Every single event is recorded. Every single action involved in that event is recorded. Every single decision made in that action is recorded. Every single calculation of every single operator is recorded. This means you can figure out exactly why something happened. You can trace every single step of the operation of the narrative engine and see where it went wrong, and why.
Log Lizard rules!
If you’d like to learn more about this remarkable authoring system, here is a tutorial we created seven years ago for SWAT.
This is only a brief overview of what SWAT can do. We recognize that it is still too complicated for most people to operate, so we’ll be trimming it considerably before we release it to the world (see Open sourcing).