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.
Adultery / Obstacles to love. James is adulterous with Sophie and is lovers with Sophie. Charlotte has been cheated on by their spouse James. There is an obstacle.
Crime pursued by vengeance / Obstacles to love. Harmony is lovers with Aoife. Julius is a criminal pursued by Harmony. There is an obstacle.
Remorse / An enemy loved. Louise is the victim of Holly and is lovers with their enemy Tyler. Tyler is an interrogator. Holly hates Louise.
Complex situation generation (no relationships)
Similar to my work above, but without attempting to draw any relationships between the characters.
Madness / Falling prey to cruelty or misfortune. Rosamund is has gone insane and an unfortunate. Nicola is the master. Justin is the victim.
An enemy loved / Remorse. Lottie is a lover and an interrogator. Oliver is the beloved enemy and a victim. Jamie-Lee is the hater and a culprit.
Rivalry of kin / Falling prey to cruelty or misfortune. Tommy is a preferred kin and an unfortunate. Emma is the master. Kofi is a rejected kin. There is an object of rivalry.
Simple situation generation
Nothing more than one of Polti's dramatic situations combined with random names. The most basic story-starter.
Ambition. Matilda is an Adversary. Tilly is an Ambitious Person. There is Something Coveted.
Abduction. George is the Abducted. Grace is the Guardian. Emily is an Abductor.
Fatal imprudence. Amy is the Victim. Elly is the Imprudent.
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.
Abduction / Madness / Disaster / Necessity of sacrificing loved ones. Muhammad is abducted by Cameron and is has gone insane and was in power but was vanquished by their enemy Cameron and is a hero who is forced to sacrifice their beloved Lyla. Lyla is the guardian of Muhammad. Cameron is the victim of Muhammad. There is a necessity for the sacrifice.
Conflict with a god / Deliverance / Recovery of a lost one / Loss of loved ones. Emily is a mortal in conflict with the immortal Hannah and seeks and finds the lost Mateusz and is slain by Hannah. Mateusz rescues Emily and sees the slaying of Emily. Hannah threatens Emily.
Self-sacrifice for kin / Adultery / Madness / Crimes of love. Ollie is a hero who sacrifices themselves for their kin Sophia and is adulterous with Sophia and is has gone insane and commits a crime because of their love for Sophia. Kyran has been cheated on by their spouse Ollie and is the victim of Ollie.
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.