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.

Falling prey to cruelty or misfortune / Abduction. Daisy is abducted by Dan. Matias causes misfortune to fall on Daisy and is the guardian of Daisy.

Fatal imprudence / An enemy loved. Max is the victim of the imprudent Abdulahi and is lovers with their enemy Theo. Abdulahi is the imprudent and hates Max.

Enmity of kin / Murderous adultery. Asia hates their kin Brooke and is adulterous with Isabelle. Brooke is the betrayed partner.

Complex situation generation (no relationships)

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

The enigma / Fatal imprudence. Abigail is an interrogator and the imprudent. Ryder is the seeker and the victim.

Madness / Slaying of kin unrecognized. Ashton is has gone insane and a slayer. Evie is the victim and the unrecognized victim.

Rivalry of superior vs. inferior / Disaster. Sharna is a superior rival and the vanquished power. Mia is an inferior rival and the victorious enemy. 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.

An enemy loved. Thomas is a Lover. Ella is the Hater. Daisy is the Beloved Enemy.

Pursuit. Milana is the Punisher. Lola is the Fugitive.

Pursuit. Lucy is the Punisher. Jasmine is the Fugitive.

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.

Rivalry of superior vs. inferior / Remorse / Disaster / Enmity of kin. Ivy is the victim of Rosie and was in power but was vanquished by their enemy Rosie and hates their kin Rosie. Kester is an interrogator. Rosie a superior rival to Ivy. There is an object of rivalry.

Deliverance / Vengeance taken for kin upon kin / Disaster / Revolt. Molly is a guilty kin and was in power but was vanquished by their enemy James and conspires against the tyrant James. Niyah rescues Molly. James threatens Molly and is an avenging kin and is a tyrant. Richard is a relative of both.

Loss of loved ones / Crimes of love / Murderous adultery / Remorse. Taylor is slain by Aoife and commits a crime because of their love for Willow and is adulterous with Willow and is the victim of Aoife. Willow sees the slaying of Taylor and is an interrogator. Aoife is the betrayed partner.

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: William
Female: Xin
Gender-neutral: Charlie

Male: Ryan
Female: Zahrah
Gender-neutral: Riley

Male: Oliver
Female: Tegan
Gender-neutral: Erin