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.
Remorse / Conflict with a god. Rehaan is the victim of Filip and is a mortal in conflict with the immortal Filip. Adam is an interrogator.
Remorse / Slaying of kin unrecognized. Ariella is the victim of Cassandra. Syeda is an interrogator. Cassandra is slayed, unrecognized, by their kin Ariella.
The enigma / Daring enterprise. Mathew interrogates the mysterious Amandeep and is a bold leader. Oscar is an adversary. There is an object of desire.
Complex situation generation (no relationships)
Similar to my work above, but without attempting to draw any relationships between the characters.
Remorse / Disaster. Sienna is an interrogator and the vanquished power. Jessica is a victim. Victoria is a culprit and the victorious enemy.
Madness / Discovery of the dishonour of a loved one. Farhan is has gone insane and the discoverer. Yusef is the victim and the guilty one.
Disaster / Daring enterprise. Nathan is the vanquished power and an adversary. Jimmy is a bold leader. Chloe is the victorious enemy. There is an object of desire.
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. Amy is a Lover. There is an Object of fatal Passion. There is something sacrificed.
Abduction. Rachel is the Abducted. Faye is the Guardian. Freddie is an Abductor.
Obtaining. Jasmine is an Adversary who is refusing. Holly is a Solicitor.
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.
Ambition / Adultery / Disaster / An enemy loved. Megan is an ambitious person and is adulterous with Alexander and was in power but was vanquished by their enemy Charles and is lovers with their enemy Alexander. Charles is adversaries with Megan and has been cheated on by their spouse Megan and hates Megan. There is something coveted.
Madness / Obstacles to love / Self-sacrifice for kin / Disaster. Koray is has gone insane and is lovers with William and is a hero who sacrifices themselves for their kin William and was in power but was vanquished by their enemy Khalid. Khalid is the victim of Koray. There is an obstacle.
Abduction / Conflict with a god / Enmity of kin / Disaster. Meghan is abducted by Martha and is a mortal in conflict with the immortal Martha and hates their kin Martha and was in power but was vanquished by their enemy Martha. Carter is the guardian of Meghan.
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.