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.

Deliverance / Ambition. Oscar is an ambitious person. Baby rescues Oscar. Micheal threatens Oscar and is adversaries with Oscar. There is something coveted.

Crime pursued by vengeance / Falling prey to cruelty or misfortune. Darcey causes misfortune to fall on Francis. Isabella is a criminal pursued by Francis.

Crimes of love / Deliverance. Kaiya commits a crime because of their love for David. David rescues Kaiya. Jack threatens Kaiya.

Complex situation generation (no relationships)

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

All sacrificed for passion / Adultery. Ellie-May is a lover and another adulterer. Phoebe is an adulterer. Tyler is a deceived spouse. There is an object of fatal passion. There is something sacrificed.

Falling prey to cruelty or misfortune / Adultery. Brodie is an unfortunate and another adulterer. Oliver is the master and an adulterer. Tilly is a deceived spouse.

Conflict with a god / Deliverance. Eve is a mortal and a rescuer. Oliver is an unfortunate. Ella is an immortal and a threatener.

Simple situation generation

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

Rivalry of kin. Kian is a Preferred kin. Frank is a Rejected kin. There is an Object of Rivalry.

Pursuit. Liam is the Punisher. Anya is the Fugitive.

Rivalry of kin. George is a Preferred kin. Matilda is a Rejected kin. 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.

Crime pursued by vengeance / Abduction / Crimes of love / Self-sacrifice for an ideal. Connor is abducted by Mason and commits a crime because of their love for Liam and is a hero who is forced to sacrifice themselves for an ideal. Liam is the guardian of Connor. Mason is a criminal pursued by Connor. There is an ideal, and something sacrificed.

An enemy loved / Abduction / Remorse / Falling prey to cruelty or misfortune. Tyler is lovers with their enemy Edie and is abducted by Bronwyn and is the victim of Bronwyn. Edie is the guardian of Tyler and is an interrogator and causes misfortune to fall on Tyler. Bronwyn hates Tyler.

Abduction / An enemy loved / Ambition / Slaying of kin unrecognized. Elvis is abducted by Habiba and is lovers with their enemy Lewis and is an ambitious person. Lewis is the guardian of Elvis. Habiba hates Elvis and is adversaries with Elvis and is slayed, unrecognized, by their kin Elvis. There is something coveted.

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: Rahul
Female: Summer
Gender-neutral: Dylan

Male: Corey
Female: Ellie-Ann
Gender-neutral: Iman

Male: Owen
Female: Tilly
Gender-neutral: Jayden