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.

The enigma / Self-sacrifice for an ideal. George interrogates the mysterious Zachary and is a hero who is forced to sacrifice themselves for an ideal. There is an ideal, and something sacrificed.

Falling prey to cruelty or misfortune / Vengeance taken for kin upon kin. Jack is a guilty kin. Stanley causes misfortune to fall on Jack. Alex is an avenging kin. Kian is a relative of both.

Remorse / Rivalry of superior vs. inferior. Carlos is the victim of Evan. Toby is an interrogator. Evan a superior rival to Carlos. 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.

The enigma / Ambition. Lily is an interrogator and an ambitious person. Lola is the seeker and an adversary. There is something coveted.

Obstacles to love / Abduction. Archie is a lover and an abducted. Oscar is another lover and their guardian. Mia is an abductor. There is an obstacle.

Loss of loved ones / Conflict with a god. Muhammed is a kin spectator and a mortal. Alby is a kin slain. Kaja is an executioner and an immortal.

Simple situation generation

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

Discovery of the dishonour of a loved one. Kayden is the Discoverer. Eva is the Guilty One.

Enmity of kin. Lyla is a Hated kin. Lucas is a Malevolent kin.

Rivalry of superior vs. inferior. Alfie is an Inferior Rival. Edith is a Superior Rival. There is an Object of Rivalry.

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 / Disaster / Loss of loved ones / Supplication. Scarlett discovers the guilt of their beloved Heath and was in power but was vanquished by their enemy Heath and is slain by Heath. Charlotte sees the slaying of Scarlett. Heath persecutes Scarlett. Finley is a power in authority whose decision is doubtful.

Pursuit / Vengeance taken for kin upon kin / Adultery / Involuntary crimes of love. Caden is a guilty kin and is adulterous with Alya and commits a crime because of their love for Alya. Ellie is a fugitive being chased by Caden and is an avenging kin and has been cheated on by their spouse Caden and is the revealer of their crime. Brodie is a relative of both.

Revolt / Obtaining / Murderous adultery / Fatal imprudence. Alexander conspires against the tyrant Monty and solicits their adversary Monty and is adulterous with Amy and is the victim of the imprudent Monty. Monty is a tyrant and refuses the solicitation of Alexander and is the betrayed partner and is the imprudent.

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: Lucas
Female: Olivia
Gender-neutral: Ihsan

Male: Benjamin
Female: Ava
Gender-neutral: Charlie

Male: Armaan
Female: Florence
Gender-neutral: Charlie