[Up- Story AI] [Ma] [No prior] [Robot Wisdom home page]

Chris Crawford's "Erasmatron" story engine

Abstract: Chris Crawford has spent fifteen years trying to identify the fundamental psychological dimensions needed for interactive fiction, and with his new (1998) story engine-- the Erasmatron-- he's spelled out his discoveries in extensive Web-based documentation. Crawford's inventions seem to fill a gap that even Doug Lenat's Cyc project had left only vaguely sketched. This webpage will offer a detailed summary of Crawford's approach, along with alternative links to his own pages.

Updated January 1998 with the new archive of essays

I've argued, in my AI pages, that real progress in AI will only occur when we solve the puzzle of modelling human psychology in a way that allows computers to tell stories... but that this programming challenge requires a new sort of thinking that has more in common with literature than with logic.

Chris Crawford's own biographical sketch makes little mention of the earlier incarnations of the Erasmatron elements. I first heard of his early demo (called 'Gossip') in Infoworld in 1983-- this offered a group of gossiping personalities who built and destroyed allegiances by lying and telling the truth about each other. By 1987 this had become "Trust and Betrayal", which took place on an alien world where the characters fought psychic battles in their dreams. But during the 90s he reworked these concepts extensively to support a more down-to-earth model of the adulterous intrigues of King Arthur's court, in a still-unfinished game he calls "Le Morte D'Arthur".

An earlier account by Crawford of the evolution of the Erasmatron idea (JCGD6)
A detailed look at Trust and Betrayal (JCGD1)

The Erasmaganza is an advance release of the underlying mechanisms (the story engine) for that game, and the Erasmatron is a workbench for building such games. The name derives from Chris's hero, Desiderius Erasmus, author of "The Praise of Folly". Chris's company is called Erasmatazz, and has a website with lots and lots of fascinating documentation of the Erasmatron, most of which I'll link to, directly, below.

Included there, as well, are all his essays from nine years of the Journal of Computer Game Design (JCGD, later renamed Interactive Entertainment design: IED), and a series of essays Chris wrote for a mailing list called "Lilan" from the Sanskrit word for play: lila. Most of these I'll index below #.

HyperEssay on Erasmus

It's very easy to rattle off hundreds of features that a story engine should offer, but Crawford's great genius is that he's narrowed these down to a rich 'starter set' that delivers maximal story-interest, while still being programmable within a finite length of time! And his choices are wise enough that they'll surely make future evolutions vastly easier to foresee...

The fundamental innovations include: a model of human memory that allows gossip (via the 'historybook' and the 'grapevine'), a model of microeconomics that allows haggling, a model of human personality that includes some thirty traits, four moods, and eight dimensions of relationship, and a general theory of action that specifies a network of verbs where various 'roles' are defined for each verb, and where various options for reactions are defined for each role, and where 'inclinations to act' can be calculated for each of these options.

(Already with this single-paragraph summary we can begin to ask: How much of human history-- of human behavior-- is covered by this model, and what's been left out? And how much overlap is there between these categories and Cyc's ontology? And how much with James Joyce's psychological framework for human history, in Finnegans Wake?)

The twentyone personality traits (unchanging for a given character during the story) are: Timidity, Dutifulness, Magnanimity, Gullibility, Loyalty, Enviousness, Pride, LoveHunger, Insecurity, Integrity, Lovability, Dominance, Competence, Loquacity, Initiative, Greed, Libido, Sexiness, Nurturance, Temper, and Joviality.
[The traits differentiated]
[Short essay: What is a personality trait?]
Theoretical essay on modelling personality (JCGD7)

We can expect that future releases of the Erasmatron will add new traits and attributes, etc, based on the feedback of authors.

The thirteen personality attributes (more or less variable):
- more-variable: Whereabouts, Active (alive or dead), OccupiedUntil, SigOther, ThingOwned, SpyingOn, and DontMoveMe
- less-variable: Name, Gender, Strength, Cleverness, and Agility.
[The attributes differentiated]
[Short essay: What is a Personality Attribute?]
[Short essay: What is the Personality Model?]

The four moods are: anger, sexual arousal, joy, and fear (plus one custom)
[Short essay: What is a mood?]
[Short essay: The moods differentiated]
[Brilliant Crawford essay on the evolution of mood as a memory-shorthand]

The eight (finely-split!) dimensions of person-person relationships are: Affection, Trust, Submission, Commitment, Obligation, Approval, Envy, and Kinship. These are measured on a bipolar scale from -100 to +100 (except commitment, which is 0 to +100).
[Short essay: What is a relationship?]
[Short essay: The eight relationship factors differentiated]


Verbs

An author uses the Erasmatron to create a "storyworld". Storyworlds consist mainly of webs of definitions of verbs. Verbs always have a subject and a direct object, and may have other secondary objects. The subject will be either a computer controlled player, or the 'human actor', or Fate, or Nobody. The story-engine monitors the web to identify opportunities for action for each character, which may then become plans, and finally real 'events'.

[Short essay: What is a storyworld?]
[Long Crawford essay on building webs of verbs]
[Essay: What is an Event?] [Short essay: What is a verb?]
[Very short essay: What is a subject?]
[Short essay: What does Actor mean? (including Nobody and Fate)]
[Very short essay: What does HumanActor mean?]
[Very short essay: What is a DirObject?
[Short essay: What is a secondary object?]
A justification of simplified verb-structure (JCGD9)
Theory: interactivity is hard because English emphasizes nouns not verbs (JCGD9)

Much of the work of creating a web of verbs will be portable from one story to another, so I'd expect future releases of the Erasmatron to include a huge 'generic story' that moves generic characters thru a generic world. (This was the goal of the TownSim project on comp.ai.games.)

A counter-intuitive aspect of verbs is that all characters, no matter how different, share exactly the same verbs-- if they're to handle things differently, this must be programmed into the verb by way of their personality variables.

The most detailed peek that Crawford's site offers of verb-structure concerns dealmaking. It turns out that any simple deal has to be broken down into at least eighteen verbs, to make it interesting. Crawford's example is a negotiation with a hired bully to get them to 'rough up' another character. The resulting verbs are:

[Long essay: How to cut a deal]

Verbs have a complex inner structure that includes the definition of various roles people may play vis-a-vis each verb, and the options available for each role, about how a person with that role may react when the verb is executed. Each option has an 'inclination equation' that allows the story engine to choose among them.

[Short essay: What is a role?]
[Crawford essay on the theory of roles]
[Very short essay: What is an option?]
[Short essay: What is an inclination?]
[Interface docs: very detailed explanation of the Decision Script Display]
[Crawford essay on the theory of weighting]

An unexpected invention resulting from the idea of roles is the concept of 'hijacking', which allows a character to step into another role, eg when a hero steps in to fight a weaker character's battles.
[Short essay: What is Hijacking?]

For realism's sake, verbs have to have pre-defined 'time to prepare' and 'time to execute', implemented using the personality attribute 'OccupiedUntil'.
[Short essay: What are a Verb's TimeToPrepare and TimeToExecute?]
[Short essay: What are StoryMinutes and StoryDays?]


How space is handled

One of Crawford's most daring simplifications was to eliminate continuous space, replacing it with a small network of points. From the perspective of naturalism, this is a painful sacrifice, but for the purpose of storytelling it's an enormous 'win', because almost any interesting story can be told with very little reference to precise locations.

The point-locations in the Erasmatron are called "stages". The author can define up to eight custom attributes that differentiate stages. And characters are expected to prefer some stages over others, as specified by a set of territoriality values. A special 'personality attribute' called DontMoveMe can be used when a character is imprisoned or unconscious, to prevent the story-engine from moving the character off that stage.

[Short essay: What is a stage? (including Nowhere and Limbo)]
[Essay: How does the engine move actors?]
[Short essay: What does DoorOpen mean?]
[Short essay: What is territoriality?]
[Short essay: What are stage attributes?]

An unusual characteristic of space is implemented via the personality attribute "SpyingOn". When a character is declared to be spying on another character, the story engine will guarantee that the spy remains unobserved, while automatically following the target from stage to stage.


Memory and Gossip

The data structures that require the most space, in interactive fiction, are those that record events, and characters' knowledge of events.

Crawford's primary solution is called the "historybook", which records all events in chronological order, one per 'page' (including some that happened only in the fallacious reality of lies). Each event's page includes its time and place, and specifies a causal event and some number of consequent events.

[Very short essay: What is a HistoryBook?]
[Very short essay: What is a PageNumber?]
[Essay: What is an Event?] (linked above under Verbs, too)
[Author how-to essay: How do I search the HistoryBook?]
[Short essay: What is an Event's Time and Location?]
[Short essay: What is the EventCount?]
[Short essay: What is a CausalEvent vs. a ConsequentEvent?]
[Interface docs: The historybook display]

Each character has a one-bit flag for each event, called "IKnow", that remembers if they're aware of the event. Another data structure called the "grapevine" allows lies or betrayals of secrets to be traced to their source. (Secret events must be so specified by the actors before the event takes place.) Various flags specify events as fallacious or gossip-worthy, and characters as gullible or implausible. There's even a special verb for BelieveToldEvent.

[Short essay: What is the grapevine?]
[Essay: How do actors tell each other about events?]
[Short essay: What does Secret mean?]
[Essay: What does Fallacious mean?]
[Essay: What does IKnow mean?]
[Essay: What is Implausibility?]
[Long essay: How do actors decide what to talk about?]
[Essay: What is a Verb's Import?]


Faces

Among the many breakthrus in the Erasmatron is a complex face editor that allows one to design basic faces that the story engine can then reshape with dozens of complex, convincing expressions.

[Interface docs: Face Editor]
A long theoretical justification of the need for faces (JCGD8)
Ditto, earlier (JCGD7) (short)
And a very early one (JCGD3)


Miscellaneous topics

Various introductory essays:
[Crawford's grant-proposal to the Markle Foundation]
[Introduction to Interactive Storytelling]
[What can you do with the Erasmatron?]
[Onsite index to quick overviews]
[Multi-part tutorial]
[Overview of how the storyengine works]
[Reference Manual]: How to Use the Erasmatron, and What is Erasmatronics?
[Erasmatazz Home Page]

Crawford acknowledges several important limitations in the current implementation:

[Long essay: Things you can never do]

As with text adventures, the success or failure of a given storyworld will depend on the flair with which one composes the text descriptions of places, events and things. A curious twist is that these must be rephrased from multiple points of view so others can gossip about them!
[Interface docs: Tinkertory Text Editor]
[Short essay: What is a thing?]
[Short essay: What are all these custom things?]


The interface for the Erasmatron includes many innovations that will be widely copied, most especially the drag-and-drop programming style (designed to eliminate the possibility of syntax errors). Another surprising trick is what Crawford calls "poison"-- since not all program crashes are caused by syntax errors (eg dividing by zero), instead of crashing the program when one of these occurs, the story engine just makes an internal note of the 'poison' type and carries on the best it can. There are fourteen types of poison, mainly:

[Detailed Crawford essay on the theory behind the interface]
[Short essay: What is poison?]
[Long theoretical essay on the necessity for embracing approximate solutions]

Displays:
[General Display]
[General Interface Rules]
[Background Display]
[Keys Display]
[Linkages Display]
[ScreenTest Display]
[Rehearsal Display]

Menus:
[File Menu]
[Edit Menu]
[Roles Menu]
[JumpTo Menu]
[Labels Menu]
[FBI Menu (Funky Bunch of Investigators)]

Programming internals:
[What are data types?]
[What is a Logical?]
[What are numbers?]
[What are CustomGlobals?]

Chris's announcement of his patent has already raised some hackles on rec.arts.int-fiction.
[Erasmatron patent announcement]
Earlier thoughts on software patents (JCGD5)
[About the company]



General essays by Chris Crawford

Onsite index

Fourpart essay on the evolution of the mind:
Part 1: emotion and memory
Part 2: sequential reasoning
Part 3: speech and writing
Part 4: programming as the future universal language
An excellent addendum exploring why parallel processing is easier than serial/sequential
An earlier version of the evolution of thinking (JCGD9)

A theory about entropy (JCGD9)
An observation about power vs intelligence (JCGD9)
Two moralities: the merchant's and the policeman's (JCGD9)
Intellectual integrity (JCGD7)
Egotism as a prerequisite (JCGD1)
Negativity is needed to balance creativity (JCGD7)
Book review: design lessons from comics (JCGD7)
Response-time is critical in interfaces (JCGD9)

The importance of artists learning to program (Lilan) (Two Cultures)
Again (JCGD8)
Object-people vs people-people (JCGD7)

Can we ask artists to program? (Lilan) (short)

Short reviews of two books on game programming (JCGD8)
A short piece on destructive programmer arrogance (JCGD8)
Advice to a new programmer: Don't lose perspective (JCGD9)

The growing importance of math (JCGD8)
Ditto earlier (JCGD1)
The well-trained imagination (new)
Integers or floating points? (JCGD4)
The importance of quantification (JCGD8)
Abstract math is 'god-like' (JCGD8)

'Process-intensive' design (JCGD1)
Algorithmic thinking (JCGD7)
Particular thinking vs universal thinking (JCGD7)
Some non-obvious design tradeoffs (JCGD9)
Program complexity compared to societal complexity (JCGD8)

A wood-shop random-number generator (JCGD9)
A simple trick for generating proper names (JCGD4)
Algorithms for generating a worldmap (JCGD5)
Algorithms for battle AI (JCGD2)
A fast way to do bit-mask graphics (JCGD4)
The counterintuitive nature of recursion (Lilan)
The necessity for embracing approximate solutions (Lilan)
Part one of a theory on instability in systems (Lilan)
A fiendish suite of programming tricks for defeating crackers (JCGD6)
As complexity increases, bugs grow big as "rats", requiring new debugging tools (JCGD8)

Taxonomy of early computer games (ACGD)
The history of computer games (JCGD9)
Forgotten early game whizzes (JCGD5)
From scribes to authors (JCGD1)
The economics of multiple platforms (JCGD1)

How good taste evolves (JCGD4)
Game evolution and brain evolution (JCGD7)
Games aren't yet art (JCGD5)

The irrelevance of graphics (JCGD7)
The impact of CD-ROMs (JCGD5)
Ditto, earlier (JCGD3)
Various reasons why video is clumsy for hyperfiction (JCGD7)

Spatial games/interfaces vs verbal games/interfaces (JCGD6)
Comparing the information content in images (JCGD3)
Text adventures vs graphics (JCGD8)(long and deep)
Computer games shouldn't be like videogames (JCGD5)
'Pre-Internet' essay on universal ISDN networking (JCGD6)

Myst sucks (JCGD7)
Games without interactivity? (JCGD5)
Why "The Madness of Roland" isn't interactive (JCGD7)
Exposition vs interaction (JCGD6)
An abstract taxonomy of game-types (JCGD4)

The evolution of movies (and games) (JCGD1)
Games don't need to be like Hollywood (JCGD8)
Balloooning production costs (JCGD4)

The game industry drives away customers by targeting aficionados (JCGD6)
Ditto, earlier (JCGD4)
Case-history of "Patton Strikes Back" development (JCGD5)

The ups and downs of being a designer (JCGD1)
Tips on self-publishing:
- whether to (JCGD3)
- packaging (JCGD4)
- support 1 (JCGD4)
- support 2 (JCGD4)

Bad reviewers (JCGD4)
Game-awards are a hoax (JCGD1)
Helping consumers make better choices (JCGD3)
The false promises of box-copy (JCGD7)
Author credits? (JCGD2)
Earlier, ditto (JCGD1)

Fighting an early case of government censorship (JCGD3)
The profitability of mayhem (JCGD9) (short)
The evolution of Doom (JCGD8)
Design critique of Doom (JCGD7)
Comparing the original to a Doom-clone (JCGD8)

Dying and playability (JCGD8)
An alternative to winning (JCGD2)
Excessive competitiveness (new)

How the game industry lost its soul (JCGD9) (long)
Sharing expertise (JCGD5)
The hacker ethic vs Disney's proprietary suits (JCGD7)

The coming revolution in game design (Lilan)
Ditto, earlier (JCGD7)
A nice short piece on games-as-movies vs games-as-books (JCGD9)

A short poll of the books some game-designers were reading (JCGD9)
Early predictions from various designers (JCGD1)
A summary of the 1992 CGDC (JCGD5)

Programming for people
How to make programming more modern (JCGD9)
Chaotic management of early game publishers (JCGD1)
The inevitability of auteur-driven game-design (JCGD8)
Groupthink vs personal courage (JCGD7)

Pondering why game design evolves slower than hardware power (JCGD9)
Earlier ditto (JCGD1)
When hardware plateaus, how will the game industry change? (JCGD8)

The nature of play (Lilan)
Huizinga's theories of play (JCGD8)

Networked multiplayer game theory (JCGD8)
A dialog on words (JCGD9) (short)
The esthetics of ambiguity (JCGD8)

History shows abstractions increasing in economics, politics, and computation. Storytelling needs the increased abstraction of a story-engine (JCGD9) (long)

How games are like dreams (JCGD9)
Very general essay on interactivity
Computers are for interaction (JCGD2)
Games must be interactive (JCGD2)

Topologies for hyperfiction (JCGD7)
The branching problem (JCGD3)
Pacman and Zork use the same branching-trick (JCGD2)

Interactivity requires the author give up control over the story (Lilan)
Ditto, earlier (JCGD7)
Interactivity is like free will (JCGD8)
Interactivity is like conversation (JCGD6)
Interactivity requires that the computer 'listen' (JCGD7)
Earlier, ditto (JCGD1)
Designing to reduce the asymmetry between computer and person (JCGD8) Universal interface language (Lilan)
A longer version of this, looking at esperanto etc (JCGD9)
The 'inverse parser' from Trust and Betrayal (JCGD6)

The Star Trek holodeck (JCGD1)
Interactivizing Romeo and Juliet
The complexity of the adultery theme

Chris's life-changes:

1976 Wargy
1978 Tanktics
1979 Atari 2600?
Energy Czar
Scram
Eastern Front 1941
Legionnaire
1982 Book: Art of Computer Game Design
Excalibur
1983 Gossip
1985 Balance of Power
1986 Patton vs Rommel
1987 Trust and Betrayal (Siboot)
1989 Guns and Butter
1990 Balance of the Planet
1991 Patton Strikes Back
1998 Erasmatron
199? Le Morte d'Arthur
Early days (JCGD6) (also Balance of the Planet, etc)
1976 combat game (JCGD4)
Tanktics and Legionnaire (JCGD3)
A general history of the Atari years (JCGD5)
Foreseeing the importance of interactivity (JCGD7)
Excalibur development (ACGD)
Proposing a professional association (JCGD2)
First CGDC (JCGD1)
How codesize and datasize grew (JCGD4)
Success (BoP) and Failure (T&B) (JCGD1)
First BBS (JCGD2)
JCGD progress report (JCGD2)
GEnie BBS (JCGD3)
GEnie BBS (JCGD3)
GEnie, CGDC, JCGD (JCGD3)
JCGD changes (JCGD4)
JCGD changes (JCGD5)
East Coast Game Developers' Conference: (JCGD8)
Kicked out of CGDC (core of long essay (JCGD9))
1993: JCGD becomed IED (JCGD6)
Ending IED (JCGD9)


Altavista's known links to this page:

[Up- Story AI] [Map] [No next] [Robot Wisdom home page] (Feedback)

Search the Robot Wisdom pages:

Robotwisdom.com hosting generously donated by Prosthetic Monkey Productions
SPECIAL ANNOUNCEMENT: The Robot Wisdom Pages include far more text than anyone could be expected to read online, so within the next few months we hope to offer most of it in a $20 hardcopy edition-- some two megabytes of text in a 240-page, large-size format, divided four ways between James Joyce, artificial intelligence, internet culture/ hypertext design, and miscellaneous topics. If you'd like to be informed by email when this becomes available, please send me email with the words 'hardcopy list' as the subject or in the body. [More on the hardcopy edition]