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.
Crimes of love / Abduction. Lilly-Jane commits a crime because of their love for Tia and is abducted by Samuel. Tia is the guardian of Lilly-Jane.
Abduction / Obstacles to love. Georgia is abducted by Hugh and is lovers with Jessica. Jessica is the guardian of Georgia. There is an obstacle.
Deliverance / Supplication. Alfie rescues Iestyn. William threatens Iestyn and persecutes Iestyn. Ruby is a power in authority whose decision is doubtful.
Complex situation generation (no relationships)
Similar to my work above, but without attempting to draw any relationships between the characters.
Falling prey to cruelty or misfortune / Revolt. Farah is an unfortunate and a conspirator. Mira is the master. Isaac is a tyrant.
Recovery of a lost one / Madness. Grace is a seeker and has gone insane. Maisie is the one found. Emma is the victim.
Involuntary crimes of love / Madness. Kalen is a lover and has gone insane. Gina is the beloved. Kallum is the revealer of their crime and the victim.
Simple situation generation
Nothing more than one of Polti's dramatic situations combined with random names. The most basic story-starter.
All sacrificed for passion. Maisie is a Lover. There is an Object of fatal Passion. There is something sacrificed.
Crime pursued by vengeance. Scarlett is an Avenger. Antonio is a Criminal.
An enemy loved. Cameron is a Lover. Isabelle is the Hater. Aoife is the Beloved Enemy.
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.
Recovery of a lost one / The enigma / Madness / Disaster. Samuel seeks and finds the lost Finley and interrogates the mysterious Riley and is has gone insane and was in power but was vanquished by their enemy Riley. Riley is the victim of Samuel.
Adultery / Slaying of kin unrecognized / Discovery of the dishonour of a loved one / Revolt. Kara is adulterous with Thomas and discovers the guilt of their beloved Jack and conspires against the tyrant Jack. Jack has been cheated on by their spouse Kara and is slayed, unrecognized, by their kin Kara and is a tyrant.
Madness / Obstacles to love / Necessity of sacrificing loved ones / Crime pursued by vengeance. Aidan is has gone insane and is lovers with Caitlin and is a hero who is forced to sacrifice their beloved Caitlin. Oliver is the victim of Aidan and is a criminal pursued by Aidan. There is an obstacle, and a necessity for the sacrifice.
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.