Computational approaches to narrative (Schedule)

Important links: Syllabus, form for submitting homework.

Readings available in accessible format are included as hyperlinks below. Alternate methods of obtaining the readings will be discussed in class. Some required games and other playable media must be purchased; these are noted with a “$” symbol. (Total cost of materials for the class is not expected to exceed US$20.)

Session 01: Introduction and narrative structure

Date: 2018-09-05.

  • Introduction and syllabus
  • Narrative structure
  • Tracery for generating stories

Play assigned

To be discussed in session 02. In these works, characterize the relationship between “story” and “discourse.” What is the story and how is it presented? How does the story dictate the presentation, and vice-versa?

Sketch #1 assigned

Due at the beginning of session 02. Find a story that you like and try to identify the elements of its plot and its storyworld. Use Tracery to make a random story generator based on the story that you chose. Make a duplicate of this p5js editor project and replace the grammar in the template with your own. In your grammar, attempt to separate “story” (structure) from “discourse” (the way the story is told). To what extent is this possible? Can you make variants of the “discourse” in order to tell the story in different ways?

Resources to consult:

Optional reading

  • Barthes, Roland, and Lionel Duisit. “An Introduction to the Structural Analysis of Narrative.” New Literary History, vol. 6, no. 2, 1975, p. 237. Crossref, doi:10.2307/468419.

Session 02: Branching narratives and hypertext

Date: 2018-09-12.

Play assigned

To be discussed in session 03. Characterize how these works make use of the affordances of hypertext. How are they different, how are they similar?

Sketch #2 assigned

Due at the beginning of session 03. Use Twine to make something. A few ideas:

  • Tell a personal story or anecdote.
  • Adapt an existing game (video game, board game, card game, sport?) to Twine.
  • Adapt a traditionally “linear” story (like a fairy tale or classic novel) to Twine.

Optional reading and play

Here are some good and helpful Twines. Think about how each works (structurally) as a hypertext, and how each makes use of Twine’s capabilities.

Session 03: Setting, space, props

Date: 2018-09-19.

Play assigned

To be discussed in session 04. These works simulate space and objects in space in different ways. Characterize the benefits and shortcomings of their approaches.

Sketch #3 assigned

Due at the beginning of session 04. Pick a location or scene from an existing story (say, any variant of Cinderella) and “implement” it in Inform 7 by e.g. creating rooms with descriptions, objects to populate the rooms, and/or characters to talk to. Bonus: Implement a custom command/action in your story. Bonus 2: Make it possible to “win” your game (by, e.g., solving a puzzle, gaining a certain number of points, etc.).

Optional reading

Session 04: Dialogue and character

Date: 2018-09-26.

  • Computational approaches to dialogue and character
  • Quick introduction to Ren’Py

Play assigned

To be discussed in session 05.

Sketch #4 assigned

Due at the beginning of session 05. Make something with Ren’Py. In particular, make a dialogue tree that involves one or more characters. For extra credit, make the dialogue tree keep track of responses over time, so that certain dialogue options or results are available only if previous conditions obtain.

Optional reading and resources

Ren’Py resources:

Session 05: Generating narrative events from simulation

Date: 2018-10-03.

Play (reading) assigned

To be discussed in session 06. These works make use of simulation to generate narrative events, which are then rendered as language. Compare and contrast their approaches.

Optional readings and resources

Session 06: Statistics-based and corpus-driven approaches

Date: 2018-10-10.

The tutorial this week takes the form of a Jupyter Notebook, written in Python. See this tutorial on how to use Jupyter Notebook for a bit of orientation.

You don’t need to know Python to use the notebook. You can just hit shift+enter to run through the cells, and make changes to the parts where I show you that changes are possible.

The tutorial is running on Binder, which provides a temporary cloud-based server for you without any setup! The downside of this situation is that your session will disappear if you close the browser window (or put your laptop to sleep). So make sure to copy/paste or download any output that your notebook produces that you want to keep! (I’m happy to help you set up Jupyter Notebook on your own computer, in which case you won’t have this problem.)

Optional readings and resources

Session 07

Date: 2018-10-17.

  • Final project presentations.