Second blog update of the day.
I've been thinking about how to best implement my storytelling AI, and I've thought of two separate possibilities:
A) Social Network Structure
Based on the "six degrees of separation", this version of the storytelling A.I. selects a main character and focuses on their "social network". The main character selection process could be random, but most likely it will be based somehow on character emotional levels. This will require some level of trial and error... I'm not sure yet whether a good protagonist is someone who starts off emotional, or someone who starts off calm (because it leaves them with more room for emotional change). My experience as a writer leads me to believe it is the latter. Preferably, actually, a complex storytelling A.I. would allow the system to run for a while
before the story starts, with a number of "calm" potential protagonists. Then, the first time a calm character experiences a substantial emotional change, they become the main character of the story. If we do that, though, we might need to implement a "live delay," so that we remember a few steps back for each character until the main character is selected. Otherwise, we might lose some build up, starting with our main character getting mad and missing why. For now, I think the best way to do this would be to pick a main character based on "calm initially," so that they have the most room for growth, and so we don't miss out on story buildup. Many, many stories start with a character wandering around aimless... I'd hate to cut that out by jumping right to interesting interactions.
Then, we show all story elements of the main character, and of
all characters that have interacted with the main character, and of all characters that have interacted with
those characters, up to a certain degree n. That way, in a world of thousands of characters, we only see up to a handful of them (up to maybe only the third degree). The story continues until the main character resumes equilibrium (comes full circle), having learned their lesson... Or dies, and ceases to exist.
B) Weighting Important Story Actions
This time we select which actions to focus on not based on characters but based on
their actions. If a character talks with someone else, we don't need to hear about it. If they flirt, we might want to hear about it. If they kill someone, we definitely want to know. For this to work, we need to assign certain actions "importance levels" that correspond to beats in story structure. On a 1-10 level scale, a 10 level action is an important story beat, always. Any time it appears, it will be a plot point, and it is strong enough to open or close a story. A level 5 beat is important enough to hear about, but doesn't drive the story forward (the AI doesn't stop the story from going forward). If a level 1 story beat occurs, it is suppressed. No one needs to know about such low level occurrences. Different importance levels allow for nuances in storytelling. If a level 7 element happens at the same time as a level 10, the 7 element might be suppressed or undone so that the level 10 element will be a plot element and drive the story into the next act. If both drove the story forward, the "act" will have lasted less than one turn.
C) Combination Weighting-Social Structure System
Thinking about it, I realize we probably need is a system that combines these two trains of thought. Weighting important actions is probably the only way to have the storytelling AI know when to create the beginning, middle, and end, but those terms mean nothing unless those actions involve a singular character (or group of characters) that we care about. I think the final system needs to weigh important story actions, and use those to determine beginning, middle, and end points for the "A" plot (anything involving the main character directly) and any "B" plots (stories featuring second degree characters with beginnings, middles, and ends, all of which are second priority to the A plot).
Now that I have a plan mapped out to implement the Storytelling A.I., I think I might want to actually implement User Interactivity first. It sounds like more fun, and it will let the user be the main character when storytelling A.I. gets implemented.