Narrative Generation Overview
The UI for this will be a page of simple sliders for the highest level of story control, but clicking through into the advanced settings will reveal many ways the player can customise the experience.
Example settings: (not including standard world generation options)
- Approximate narrative duration.. 30mins, 4 hours, 1 month, ongoing etc.
- Force include characters - with character designer.
- Force include species.
- Force include locations.
- Force include plot arc.
- Difficulty preference.
- Action level.
- Mystery level.
- Comedy level.
- Drama level.
- Narrative scope.. Right word? Whether its one town or whole universe.
The system will work on several layers.
On the top is the Narrative Director. It's the only thing that knows the whole story and the intended ending. It's job is to try to keep the story on track and provide the desired levels of suspense or action etc.
Ideally it will do this without affecting a character directly.. It would be easy to let it dabble in the mind of a character but I want it to affect them indirectly. This is because I want to keep the integrity of the characters actions intact. If it wants a character to attack the player they should have a reason provided rather than do it mindlessly. A mercenary is paid, for example, while in a more elaborate scenario the Director could arrange a situation to make a character hate the player. Perhaps the character is lied to or sees the player doing something that incites hate. The director arranges these scenarios.
The characters have their own AI brains. They have their own knowledge of the world and other characters (which may be wrong). They have their own goals to achieve.
Different characters require different kinds of brains. Animals are simple compared to people. To keep things sane a random person in the crowd may run a very simple crowd brain until they interact with the player in a way that requires them to 'upgrade'.Also different characters will run at different speeds.
The story plan is built up by searching a state graph. Nodes are states of the story and edges are actions that can be taken. This is an expensive approach, but I think conceptually simple. It should give me a system that works well, if slowly, and I can improve and optimise it in time.
Heuristics will be employed to trim down the possible actions needing to be searched. Exactly how these will work will be fun figuring out
The human player will also get a character. This will try to guess the players mental state and relationship to other characters through their actions. It will then use this proxy in the system like any other character. In theory the plater could let their proxy take over and they will continue to play the game in the same way.
These AI approaches are very expensive. I'll be using level of detail in the system and running things asynchronously to keep things going.
OK that's all for now. This post has mostly been me writing down my thoughts. I'll go into more detail on each part mentioned here as I approach implementation