A Solution to Interactive Storytelling
Part Two: Encounters in Le Morte D'Arthur

Le Morte D’Arthur’s anecdotes are more complex than those in Siboot, so I changed the name of the genre to “Encounters”. Here’s a screen shot of one:

Note the nice accompanying portrait; the bigger screens on personal computers permitted a better display. This is one of the shortest encounters; most are considerably longer. The player as Arthur has just two options. For the encounter system, I decided on a maximum of three options for each encounter. I never found this constraint to be problematic; three options is enough. 

Here is the data used to create this encounter

{
Title: "RainyDay",
CenterDate: 80,
IntroText: "It’s been raining for over a week now; the thatch roofs are soaked through and leaking in half a dozen places. You’ve been dodging leaks, moving stuff around so that it doesn’t get wet, but the mud is starting to build up inside the great hall. Clothes are damp; people’s spirits are growing damp. Nobody wants to go outside because it’s impossible to dry off when you get back inside. You’re running out of firewood and Duless is complaining that, if she doesn’t get some flour from the storage pits, there won’t be any bread this afternoon. %%Somebody has to go out in the muck and retrieve a pot of flour from the storage pits. This kind of thing is Padrig’s job. Padrig is an oddity in Camelot: his skin is olive-color and his hair is black and curly. He must be the son of Roman colonists. Most of these Roman descendants are in the east of the country; here in western Britain, they're rare.  You can see him crouching in a corner, trying to stay warm and dry. Obviously he's already been outside; his thin tunic is soaked through. You walk down the great hall towards him; his face drains of color when he sees you approaching. He looks at you miserably, shivering. You can see that his mud-caked sandals have holes in them.",
ImageLabel: "Padrig",
Prerequisite: "Nothing",
Disqualifier: "Nothing”,
   Option: [
      {
         OptionText: "\"Padrig, go get some flour for Duless.\”",
         DeltaPBad_Good: -0.02,
         DeltaAsabiyyah: 0.0,
         DeltaPTimid_Dominant: 0.03,
         DeltaWisdom: 0.0,
         Reaction: [
            {
               ReactionText: "Padrig obediently rises, walks slowly to the door, opens it, looks out at the rain, looks back at you grimly, then runs out, closing the door behind him. “,
               ConsequenceText: “SaxonRaid1"
            },
         ]
      },
      {
         OptionText: "\"Never mind, Padrig, I'll get the flour myself.\”",
         DeltaPBad_Good: 0.04,
         DeltaAsabiyyah: 0.0,
         DeltaPTimid_Dominant: -0.01,
         DeltaWisdom: 0.0,
         Reaction: [
            {
               ReactionText: "His face brightens. \"Oh, thank you, Arthur!\" “,
               ConsequenceText: “StandingInTheRain"
            },
         ]
      },
      {
        OptionText: "Unused Option",
        DeltaPBad_Good: 0.0,
        DeltaAsabiyyah: 0.0,
        DeltaPTimid_Dominant: 0.0,
        DeltaWisdom: 0.0,
        Reaction: [
          {
            ReactionText: "Unused Reaction",
            ConsequenceText: "Nothing"
          },
        ]
      },
    ]
   },

This is organized in JSON format. Some of the components of this object are meaningless; they were ideas that I initially set up for, but later abandoned. The first of these is the “CenterDate” datum. This was initially intended to permit encounters to “float” along the timeline, appearing at different times depending upon the circustances. I later ditched this idea, for reasons that I will explain in the next essay.

ImageLabel is the filename of the image to be displayed.

Prerequisite and Disqualifier are two more obsolete items that I decided against using. I realized that they really didn’t offer much improvement in the development of the story.

The three options are presented next. Note that I include all three options, even though only two are actually used. It wouldn’t be difficult to correct this, but I saw little need to do so.

Each option contains its text and four “Delta” terms. These present changes in the four global variables that determine the outcome of the story. The calculation is simple: I simply add the Delta value to the existing value. Again, I found that this simple approach worked well. If you want complexity, try using SWAT.

Finally, the Reaction item presents the reaction to the player’s choice of option. The ConsequenceText is the label of the next Encounter to which the storyline should jump. Think of it as a GOTO statement. I rarely use it, but it does have some small utility.

Part Three: How Encounters are Sequenced