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.
Deliverance / Crimes of love. Caelan commits a crime because of their love for Anna. Anna rescues Caelan. William threatens Caelan.
Enmity of kin / An enemy loved. Saif hates their kin Syed and is lovers with their enemy Michael. Syed hates Saif.
Self-sacrifice for an ideal / Self-sacrifice for kin. Liam is a hero who is forced to sacrifice themselves for an ideal and is a hero who sacrifices themselves for their kin Alice. There is an ideal, and something sacrificed.
Complex situation generation (no relationships)
Similar to my work above, but without attempting to draw any relationships between the characters.
Remorse / Vengeance taken for kin upon kin. Effy is an interrogator and a guilty kin. Isabel is a victim. Kaitlyn is a culprit and an avenging kin. Sofia is a relative of both.
Recovery of a lost one / Obstacles to love. Lacie is a seeker and a lover. Abbi is the one found and another lover. There is an obstacle.
Obtaining / Erroneous judgement. Maddie is a solicitor and the author of the mistake. Paula is a mistaken one. Cameron is an adversary who is refusing and a victim of the mistake. Louis is the guilty one.
Simple situation generation
Nothing more than one of Polti's dramatic situations combined with random names. The most basic story-starter.
An enemy loved. Layla is a Lover. Sofia is the Hater. Poppy is the Beloved Enemy.
Obtaining. Ryan is an Adversary who is refusing. Albie is a Solicitor.
Revolt. Lilly is a Conspirator. Laiten is a Tyrant.
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.
Enmity of kin / Crime pursued by vengeance / Fatal imprudence / Involuntary crimes of love. Marwah hates their kin Joseph and is the victim of the imprudent Joseph and commits a crime because of their love for Martha. Joseph is a criminal pursued by Marwah and is the imprudent and is the revealer of their crime.
Crime pursued by vengeance / Obtaining / Pursuit / Abduction. Jamie solicits their adversary Lily and is abducted by Lily. Izzy is the guardian of Jamie. Lily is a criminal pursued by Jamie and refuses the solicitation of Jamie and is a fugitive being chased by Jamie.
An enemy loved / Deliverance / Disaster / Crime pursued by vengeance. Aiden is lovers with their enemy Sophie and was in power but was vanquished by their enemy Gabrielle. Sophie rescues Aiden. Gabrielle hates Aiden and threatens Aiden and is a criminal pursued by Aiden.
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.