This is a study in storytelling and morphology, eventually combining Georges Polti's "The Thirty-Six Dramatic Situations" with aspects of Joseph Campbell, David Adams Leeming, and Phil Cousineau's mythology patterns to create story frameworks. The ultimate goal is to study how their pattens could be used interactively to create procedurally-generated, player-driven stories. What you see right now are baby steps, but an important foundation for future work.
Character names are selected from a list provided by The Office for National Statistics, UK (England and Wales, 2009 database).
All stories are randomly generated on refresh.
Complex situation generation (with relationships)
This is where the bulk of my work is going: an attempt to draw more meaningful relationships between characters, based on a crude mix of two (or more) of Polti's dramatic situations. It's often a bit of a mess, but occasionally touches on a bit of brilliance.
I've culled a few of the situations that the algorithm can't quite handle yet. I'm putting them back in as the algorithm becomes more robust.
Slaying of kin unrecognized / Abduction. Rhys is abducted by Ellie-May. Matthew is the guardian of Rhys. Ellie-May is slayed, unrecognized, by their kin Rhys.
Remorse / Crime pursued by vengeance. Isabelle is the victim of Pheobe. Ishaan is an interrogator. Pheobe is a criminal pursued by Isabelle.
Self-sacrifice for kin / Abduction. Jamie is a hero who sacrifices themselves for their kin Adam and is abducted by Ruby. Adam is the guardian of Jamie.
Complex situation generation (no relationships)
Similar to my work above, but without attempting to draw any relationships between the characters.
Self-sacrifice for kin / Daring enterprise. Harry is a hero and an adversary. Aaron is a kin and a bold leader. There is an object of desire.
Fatal imprudence / Enmity of kin. Albert is the imprudent and a malevolent kin. Jessica is the victim and a hated kin.
Involuntary crimes of love / Discovery of the dishonour of a loved one. Bethany is a lover and the discoverer. Muhammad is the beloved. Alpha is the revealer of their crime and the guilty one.
Simple situation generation
Nothing more than one of Polti's dramatic situations combined with random names. The most basic story-starter.
Slaying of kin unrecognized. Mia is a Slayer. Stanley is the Unrecognized Victim.
Revolt. Jasper is a Conspirator. Jessica is a Tyrant.
Rivalry of superior vs. inferior. Raef is an Inferior Rival. Ariane is a Superior Rival. There is an Object of Rivalry.
Overly-complex situation generation (with relationships)
The same algorithm as the top experiment, but mixing together four plots instead of two. The reason it doesn't really work is because it attempts to draw relationships wherever possible, resulting in entirely too many connections for too few characters. Many of the situations don't work when applied to the same characters, like a slain character still being able to discover something. Sometimes, however, it hits a nice balance by fluke. It's a curious example of the limitations of the current algorithm.
Fatal imprudence / Pursuit / The enigma / Vengeance taken for kin upon kin. Ayan is the victim of the imprudent Lacie-May and interrogates the mysterious Lacie-May and is a guilty kin. Lacie-May is the imprudent and is a fugitive being chased by Ayan and is an avenging kin. Lilly is a relative of both.
An enemy loved / Madness / Slaying of kin unrecognized / Rivalry of superior vs. inferior. Harrison is lovers with their enemy Mckenzie and is has gone insane. Harvey hates Harrison and is the victim of Harrison and is slayed, unrecognized, by their kin Harrison and a superior rival to Harrison. There is an object of rivalry.
Abduction / Supplication / Crime pursued by vengeance / Disaster. Isabel is abducted by Chelsea and was in power but was vanquished by their enemy Chelsea. Aoife is the guardian of Isabel. Chelsea persecutes Isabel and is a criminal pursued by Isabel. Harrison is a power in authority whose decision is doubtful.
Pulls random names from UK census data, weighted for popular names. Also cross-references the male and female list to find gender-neutral options. It can currently retrieve around 8k unique names.