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.

Abduction / Obstacles to love. Beau is abducted by Barnaby and is lovers with Ethan. Ethan is the guardian of Beau. There is an obstacle.

Enmity of kin / Recovery of a lost one. Saffron hates their kin Isabella and seeks and finds the lost Lina.

Slaying of kin unrecognized / Rivalry of kin. Charlie is preferred over their kin Aimee. Aimee is slayed, unrecognized, by their kin Charlie and is a rejected kin. There is an object of rivalry.

Complex situation generation (no relationships)

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

Obtaining / Obstacles to love. Afonso is a solicitor and a lover. Jasmine is another lover. Scarlett is an adversary who is refusing. There is an obstacle.

Conflict with a god / Loss of loved ones. Harry is a mortal and a kin spectator. Emily is a kin slain. Isobel is an immortal and an executioner.

Adultery / Obstacles to love. Maya is another adulterer and a lover. Evie is an adulterer and another lover. Skye is a deceived spouse. There is an obstacle.

Simple situation generation

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

Deliverance. Evan is a Threatener. Shakira is a Rescuer. Harry is an Unfortunate.

Discovery of the dishonour of a loved one. Maryam is the Discoverer. Callum is the Guilty One.

Necessity of sacrificing loved ones. Reon is a Beloved Victim. Gracie is a Hero. There is a Necessity for the Sacrifice.

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.

Crimes of love / Enmity of kin / Abduction / Necessity of sacrificing loved ones. Jacob commits a crime because of their love for Shayan and hates their kin Tanzeela and is abducted by Tanzeela and is a hero who is forced to sacrifice their beloved Shayan. Shayan is the guardian of Jacob. There is a necessity for the sacrifice.

Fatal imprudence / Disaster / Vengeance taken for kin upon kin / Abduction. Oliver is the victim of the imprudent Esmee and was in power but was vanquished by their enemy Esmee and is a guilty kin and is abducted by Esmee. Layton is the guardian of Oliver. Esmee is the imprudent and is an avenging kin. Thea is a relative of both.

Obstacles to love / Discovery of the dishonour of a loved one / Falling prey to cruelty or misfortune / Self-sacrifice for an ideal. Oliver is lovers with Skye and discovers the guilt of their beloved Zuzanna and is a hero who is forced to sacrifice themselves for an ideal. Skye causes misfortune to fall on Oliver. There is an obstacle, an ideal, and something sacrificed.

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: Saad
Female: Sydney
Gender-neutral: Alex

Male: Arlo
Female: Ophelia
Gender-neutral: Dylan

Male: Theo
Female: Ella
Gender-neutral: Ronnie