Zork White House

Just Adventure +


||  Adventure Links   ||  Archives  ||  Articles   ||  Independent Developers   ||  Interviews   ||   JA Forum   ||
|| 
JA Staff/Contacts   ||  The JAVE   ||  Letters   ||  Reviews   ||  Search   ||   Upcoming Releases   ||  Walkthroughs   ||
|| 
What's New / Home
  || Play Games!
  ||
Over 1 Million Visitors a Month!

Buy Games at Just Adventure+!

SCUMM: Adventure--LucasArts Style

By Adam Rodman

A long time ago (1987) in a galaxy far, far away, a small division of LucasFilm--LucasFilm Games--released an adventure game that would revolutionize the genre: Maniac Mansion. Why? Maniac Mansion introduced a brand spankin' new control system that was light-years above the current parser interface--point and click. The engine that drove this masterpiece? SCUMM.

SCUMM. Quite an odd name for something that would change the landscape of adventures forever. Actually, it is an acronym for Script Creation Utility for Maniac Mansion. Developed by Aric Wilmunder and Ron Gilbert for Maniac Mansion, SCUMM would become the jewel in LucasFilm Games' (later called LucasArts) crown for years to come. Whether SCUMM is actually a game engine or just the language is debatable; at any rate, it is obviously a script creation utility.

Though the details of the internal workings of SCUMM are a little sketchy, it is known that the scripts are compiled in a low-level format, comparable to Java bytecode. Basic codes are included for arithmetics, jumps, calling statements, arrays, and functions (typical functions from The Curse of Monkey Island include WalkActorToXY, GetTimeDate, LoadCostume, etc.). A typical SCUMM game would have anywhere between 250 and 350 of these functions. An example of decompiled code from The Curse of Monkey Island, kindly given by Jimmi Thøgersen, looks as follows:

Actor.Init(4); Actor.Face(180); SayLineSimple(4,'/B3Kn399/Just
because you're a grownup...'); Wait.ForMessage();
SayLineSimple(4,'/B3KN400/... doesn't mean that you can waste
my time.'); Wait.ForMessage(); Actor.Init(1); Actor.Turn(180);
If(!BinVar583){ SayLineSimple(1,'/TWGT462/Hey! There's no
bottom to this mug!'); BinVar583 = 1; }

He goes on to explain what each line does:

Line 1: Choose actor number 4 for the next Actor function.
Line 2: Make actor number 4 face 180 degrees (relative to straight left)
Line 3: Make actor number 4 say this line (the /B3KN399 stuff is used for identifying the file with the spoken dialogue).
Line 4: Waits for spoken dialogue to finish.
Line 5: Speaks another line.
Line 6: Waits again.
Line 7: Choose actor 1.
Line 8: Turns actor 1 180 degrees.
Line 9+: These last lines only show the text is BinVar583 is 0 (it's set to 1 if Guybrush has already looked at the mug) in order to avoid using the surprised line when he already knows there's no bottom.

LucasArts' original script would have had a more descriptive name for BinVar583, but it was lost in the compiler. SCUMM allowed several scripts to be run at once--the script could control background information, sounds at random, etc., without causing any disturbance to the console commands. Also, contrary to common belief, The Curse of Monkey Island, Sam and Max Hit the Road, and The Dig are SCUMM games despite the fact that they do not use the verb/noun structure of the earlier games. In those cases, the interface is actually written in SCUMM.

Like seemingly every game engine, SCUMM has evolved over the years of its existence, staying in sync with the evolution of computer systems. Though no two SCUMM engines are exactly the same, the original SCUMM games are considered to be Maniac Mansion and Zak McKracken. They sported 16-color graphics and a 320×200 resolution. The next game, The Secret of Monkey Island, added a more hierarchical file format that simplified the adding of sounds, rooms, and character animations. Monkey Island 2 not only refined the file format even further, it also added iMUSE. iMUSE stands for Interactive Music Streaming Engine, and it allows for the MIDI music to change depending on the characters' actions. In the later LucasArts games of all genres, iMUSE used digital music instead of MIDI. During the years between the release of Indiana Jones and the Fate of Atlantis and The Dig, SCUMM was rewritten multiple times to incorporate new engines including INSANE (which added streaming video), FLEM (which handled the placement and naming of objects) and CYST (which probably handled character animation). SCUMM, INSANE, FLEM, and CYST? LucasArts is also well-known for its unusual engine names. These games used a 256-color, 320×200 resolution.

The final step in the evolution of SCUMM was The Curse of Monkey Island. The engine was ported to a 32-bit platform, and the scripting language was reimplemented to support the 640×470 256-color graphics. Alas, The Curse of Money Island was the last SCUMM game; LucasArts' latest adventure, Grim Fandango, used an engine called GrimE.

SCUMM unarguably changed the face of adventure gaming forever. The 12 games it fathered are all classics in their own right, not to mention all of the games influenced by its verb/noun point-and-click interface. SCUMM is certainly one of the fathers of adventure games. It will be missed sorely ...