SCUMM, the
Script
Creation
Utility for
Maniac Mansion, is an engine
for creating graphics adventure games.
It is well known that the best way to perform some very complex task is to
start out by building a tool to help you with that task. In the same way, two
programmers at LucasArts back in 1988 decided that rather than write a single,
complicated program for their new graphic adventure game, they should instead
build an generic engine that would play any graphic adventure game, if given
the proper data files; this would let them concentrate on the game design,
rather than the details of the programming.
It worked. And so SCUMM was born.
The way the SCUMM engine works is that there is a single executable program,
called the interpreter, that operates on some data files. The data files
contain images, dialogue, details of object behaviour, and so on. The
interpreter then brings all this to life and handles the details of drawing it
all, animating the characters, processing user input, and all the other details
that a graphic adventure game needs dealt with in order to work properly.
Because the data files contain no executable code, it turns out to be trivial
to port the game to a new platform: just port the interpreter, and use the same
data files. You will get exactly the same game on the new system.
Aric Wilmunder and Ron Gilbert's original SCUMM has been expanded
a bit since 1988, of course. Every time a game required some feature
that SCUMM had not previously supported, the interpreter was extended
and the data file format expanded. The whole system was redesigned
from scratch twice. Even now that LucasArts has finally retired SCUMM
for their latest games, such as Grim Fandango, the
interpreter/data file philosophy is still in use and you can see SCUMM
design decisions in the data file format.
This document attempts to document the SCUMM data file format. With
reasonably complete documentation, it becomes possible to do all sorts
of exiting things: like write a free, portable interpreter that will
play and SCUMM game on any platform (such as ScummVM, written by Ludvig Strigeus and the ScummVM team),
or to create your own SCUMM games from scratch.
The information obtained here was almost all obtained by other people. All
I have done is to collate it into one place. Among the many who have been
working on the SCUMM file format, Ludvig Strigeus, Jimmi Thøgerson and Peter
Kelly have performed incredible tasks of reverse-engineering, and I am indebted
to them.