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.
Murderous adultery / Vengeance taken for kin upon kin. Diogo is adulterous with Malaika and is a guilty kin. Cameron is the betrayed partner and is an avenging kin. Kitty is a relative of both.
The enigma / Revolt. Nikita interrogates the mysterious Courtney and conspires against the tyrant Courtney. Courtney is a tyrant.
Disaster / Murderous adultery. Emily was in power but was vanquished by their enemy Max and is adulterous with Delisha. Max is the betrayed partner.
Complex situation generation (no relationships)
Similar to my work above, but without attempting to draw any relationships between the characters.
Self-sacrifice for kin / Rivalry of superior vs. inferior. Lily is a hero and a superior rival. Kobey is a kin. Isobel is an inferior rival. There is an object of rivalry.
Disaster / Enmity of kin. Niamh is the vanquished power and a malevolent kin. Alfred is the victorious enemy and a hated kin.
Adultery / Murderous adultery. Scarlett is another adulterer. Isaac is an adulterer. Tinashe is a deceived spouse and the betrayed partner.
Simple situation generation
Nothing more than one of Polti's dramatic situations combined with random names. The most basic story-starter.
Erroneous judgement. Harry-James is a Victim of the Mistake. George is the Guilty One. Grace is the Author of the Mistake. Wojciech is a Mistaken One.
Revolt. Leyton is a Conspirator. Ashton is a Tyrant.
Falling prey to cruelty or misfortune. Jack is an Unfortunate. Charlie is the Master.
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.
Adultery / Conflict with a god / Abduction / Enmity of kin. Alfie is adulterous with Olivia and is a mortal in conflict with the immortal Anya and is abducted by Anya and hates their kin Anya. Olivia is the guardian of Alfie. Anya has been cheated on by their spouse Alfie.
An enemy loved / Conflict with a god / Recovery of a lost one / Fatal imprudence. Syed is lovers with their enemy Amelia and is a mortal in conflict with the immortal Precious and seeks and finds the lost Amelia and is the victim of the imprudent Precious. Precious hates Syed and is the imprudent.
Abduction / Fatal imprudence / Abduction / Remorse. Owen is abducted by Callum and is the victim of the imprudent Callum and is abducted by Callum and is the victim of Callum. Harley is the guardian of Owen and is the guardian of Owen and is an interrogator. Callum is the imprudent.
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.