We had the first video meeting of the Knights today and it went very well — there were plenty of good ideas and I was hard put to keep up with them, scribbling furiously. The most important idea to emerge, for me, is the importance of simplifying the system as a whole if it is to be successful as a bandwagon for interactive storytelling. The sad truth is that my insistence that people use numeric algorithms runs afoul of human limitations. It’s difficult enough for me to compose good numeric algorithms; the average storyworld builder won’t be able to handle all the possibilities of Sappho.
One good step in figuring out how to simplify all this will be to construct a simplified system for the behaviors in the interstitial story code. This will be the entry path for many storyworld builders, but it must not intimidate people; it must be easily approachable.
I have already come up with a number of simplifications. There are now three simple ways of restricting the appearance of an interstitial story:
Prerequisites: These are the names of stories that MUST have appeared before the story in question can appear.
Disqualifiers: These are the names of stories that MUST NOT have appeared before the story in question can appear.
Turn Window: This is a list of turns during which the story must appear. It cannot appear before or after these turns.
These three specifications can be skipped by the author; if nothing is entered, no such restrictions apply.
This much is easy. Trouble comes with the selection of the interlocutor’s reaction to the player’s choice. If there are to be several possible reactions, we need a way to select the ideal reaction. In traditional Storytronics, this would be accomplished with Acceptable and Desirable scripts. That is too complicated to use here. I think we need to restrict all calculations to just six variables: Bad_Good, Deceitful_Honest, Submissive_Dominant, and their associated pValues.
We could constrain the author by permitting the use of only a single variable. You have just six variables to choose from; pick the best for this option. That’s certainly simple.
But I know that people will immediately demand more expressive power. A step upwards would be to permit a combination of any two variables, with some sort of balancing factor. This could be done with a Blend operator. The expression might look like this:
Blend(Good_Bad, pDeceitful_Honest, 0)
Another simplification would be to collapse the variables into a simpler set of labels:
Good, Honest, Powerful, Love, Trust, Fear
Is there any simpler way to express the Blend operator without that tricky third blending ratio, which must fall between -1 and +1? Should I replace it with something like 0% to 100%, with the idea that this %-age represents both portions? In other words, 40% means “take 40% of the first variable and add 60% of the second variable”? No, that’s too messy. I think it’s clearer for the author to think in terms of a blend of the two values, with the ±1 factor determining how far we lean from the first to the second. This prepares them for the full use of Blend in Sappho.
We won’t use an Acceptable term for the choice of reaction; only the Desirable term will appear, and that will contain the implicit Blend function. In other words, the text will look like this:
<Desirable>Honest, -Fear, 0</Desirable>
Note the use of the negation sign for Fear. Yes, this will be possible. Do I need the comma as delimiter? Why not just use a blank space?