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.

Ambition / Conflict with a god. Victor is an ambitious person and is a mortal in conflict with the immortal Jacob. Jacob is adversaries with Victor. There is something coveted.

The enigma / Obstacles to love. Halle interrogates the mysterious Harvey and is lovers with Muhammad. There is an obstacle.

Abduction / Discovery of the dishonour of a loved one. Sheikh is abducted by Daisy and discovers the guilt of their beloved Daisy. Edward is the guardian of Sheikh.

Complex situation generation (no relationships)

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

Erroneous judgement / Involuntary crimes of love. Jose is the author of the mistake and a lover. Oliver is a mistaken one and the beloved. Jack is a victim of the mistake and the revealer of their crime. Taylor is the guilty one.

Abduction / Enmity of kin. Jaydon is an abducted and a malevolent kin. Holly is their guardian. Archie is an abductor and a hated kin.

Conflict with a god / An enemy loved. Riley is a mortal and a lover. Nathan is the beloved enemy. Hugo is an immortal and the hater.

Simple situation generation

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

Necessity of sacrificing loved ones. Lauren is a Beloved Victim. Summer is a Hero. There is a Necessity for the Sacrifice.

Slaying of kin unrecognized. Lola is a Slayer. Wilfrid is the Unrecognized Victim.

Obstacles to love. Amr is a Lover. Olivia is another Lover. There is an Obstacle.

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.

Conflict with a god / Obstacles to love / Deliverance / Self-sacrifice for kin. Lukas is a mortal in conflict with the immortal Ruby and is lovers with Lexi-Louise and is a hero who sacrifices themselves for their kin Lexi-Louise. Lexi-Louise rescues Lukas. Ruby threatens Lukas. There is an obstacle.

Obstacles to love / Murderous adultery / Disaster / The enigma. Charlie is lovers with Lilah and is adulterous with Lilah and was in power but was vanquished by their enemy Alyssa and interrogates the mysterious Alyssa. Alyssa is the betrayed partner. There is an obstacle.

Recovery of a lost one / Abduction / Rivalry of superior vs. inferior / Discovery of the dishonour of a loved one. Hannah seeks and finds the lost Zak and is abducted by Archie and discovers the guilt of their beloved Archie. Zak is the guardian of Hannah. Archie a superior rival to Hannah. There is an object of rivalry.

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: Ben
Female: Isabella
Gender-neutral: Dylan

Male: Cameron
Female: Millie
Gender-neutral: Tyler

Male: Ellis
Female: Yasmina
Gender-neutral: Dylan