These were previously known as “interstitial stories”, but I grew tired of typing so many letters, so I wanted something a little snappier, and this new label is less than half as long. I have written previously about interstitial stories, here, here, here, here, and here; just look through the index for November.
Today’s problem is narrow: just what shall be the calling protocol for anecdotes? We shall have an ArrayList of these structures, and every now and then the Engine should call for one of these. The Anecdote code will have to choose which of the many anecdotes to present; this will require the application of some logic. Here are the factors that I currently have under consideration:
Prerequisites: These are anecdotes that MUST have taken place previously in order for the anecdote under consideration to be executed.
Disqualifiers: These are anecdotes that MUST NOT have taken place previously in order for the anecdote under consideration to be executed.
Chris Conley suggested that we add tags to each anecdote, which can be used in the selection process. I think the tags should be boolean or integer values representing various conditions in the game. For example, there should be a tag representing how close the player is to losing, which favors certain anecdotes. Another tag could favor situations when the amount of lying that the player has done exceeds a threshold. Or one representing the overall level of lying going on in the game. We could also have a tag for each of the Actors, indicating that the Actor should be excluded from use in the anecdote.
However, I don’t want to go too far down this path. We could easily end up with anecdotes that are so highly specialized that they never occur. We want the richest possible sequence of anecdotes; I’d like to have a thousand anecdotes in our database, randomly selected. That will give the player the best overall experience. We should use prerequisites, disqualifiers, and tags only in those special cases where they’re truly necessary.
On second thought, I’d like to do some information hiding. I want the engine to be completely unaware of the internals of anecdotes. Its call to the anecdote engine should be nothing more than “Give me an anecdote with Actor X”. The anecdote engine then selects an anecdote based on its own internal considerations. This would leave the anecdote engine free to select an anecdote solely for its own reasons.
We can revisit the question of more refined use of anecdotes later. For now, let’s KISS.