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.

Fatal imprudence / Pursuit. Elisabeth is the victim of the imprudent Isaac. Isaac is the imprudent and is a fugitive being chased by Elisabeth.

Ambition / Murderous adultery. Rhys is an ambitious person and is adulterous with Eloise. Chloe is adversaries with Rhys and is the betrayed partner. There is something coveted.

Deliverance / Ambition. Damon is an ambitious person. Louie rescues Damon. Paige threatens Damon and is adversaries with Damon. There is something coveted.

Complex situation generation (no relationships)

Similar to my work above, but without attempting to draw any relationships between the characters.

An enemy loved / Rivalry of kin. Haidar is a lover and a preferred kin. Hannah is the beloved enemy. Harry is the hater and a rejected kin. There is an object of rivalry.

Slaying of kin unrecognized / Loss of loved ones. Sienna is a slayer and a kin spectator. Ava is a kin slain. Ella is the unrecognized victim and an executioner.

Abduction / All sacrificed for passion. Caitlyn is the abducted and a lover. Kai is the guardian. Lewis is an abductor. There is an object of fatal passion. There is something sacrificed.

Simple situation generation

Nothing more than one of Polti's dramatic situations combined with random names. The most basic story-starter.

Conflict with a god. Cameron is a Mortal. Jake is an Immortal.

Revolt. Noah is a Conspirator. Harry is a Tyrant.

Murderous adultery. Kelci is another Adulterer. Liam is an Adulterer. Amber is the Betrayed Partner.

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.

Discovery of the dishonour of a loved one / Vengeance taken for kin upon kin / Abduction / An enemy loved. Ethan discovers the guilt of their beloved Megan and is a guilty kin and is abducted by Megan and is lovers with their enemy Keira. Keira is the guardian of Ethan. Megan is an avenging kin and hates Ethan. Sophie is a relative of both.

Revolt / Pursuit / Rivalry of superior vs. inferior / Discovery of the dishonour of a loved one. David conspires against the tyrant Freya and discovers the guilt of their beloved Freya. Freya is a tyrant and is a fugitive being chased by David and a superior rival to David. There is an object of rivalry.

Enmity of kin / Necessity of sacrificing loved ones / Pursuit / The enigma. Emmie hates their kin Emmie and is a hero who is forced to sacrifice their beloved Riley and interrogates the mysterious Emmie. Emmie is a fugitive being chased by Emmie. There is a necessity for the sacrifice.

Name generation

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.

Male: Callum
Female: Lexi
Gender-neutral: Ellis

Male: Joshua
Female: Rosie
Gender-neutral: Ashton

Male: Lewis
Female: Victoria
Gender-neutral: Charley