Saturday 15 August 2015

SCUMM

SCUMM

Rick Lane speaks to SCUMM lord Aric Wilmunder about the definitive adventure game technology behind Monkey Island and Day of the Tentacle

Does SCUMM need any introduction? The Script Creation Utility for Maniac Mansion became the basis for all but two of LucasArts’ adventure games, including The Secret of Monkey Island, Day of the Tentacle, Sam and Max Hit the Road and Full Throttle. During its 12-year existence, SCUMM’s 2D side-scrolling graphics and verb-based interface established the basic framework for the adventure gaming genre, variations of which are still used by many adventure games today.


SCUMM was a constant presence during LucasArts’ golden years, so much so that its importance wasn’t always recognised, and during its later years, the tech was rather taken for granted as prettier technology danced before the studio’s eyes. But what made SCUMM so enduring within the studio? How exactly did it function, and in what ways did it help LucasArts’ developers to create their games?

To find out, we spoke to the man who kept SCUMM afloat during the entirety of its lifespan at LucasArts. Aric Wilmunder was manager of software tools and technology at LucasArts between 1985 and 2000. He was involved in SCUMM’s original coding, and supported and updated the engine right through to when LucasArts switched to the GrimE engine for Grim Fandango in 1998.

First programmed in 1987, SCUMM emerged from the combined efforts of Wilmunder, Ron Gilbert, creator of Maniac Mansion and Monkey Island, and Chip Morningstar, co-creator of the prototypical MMO Habitat along with Wilmunder. SCUMM was initially conceived as a scripting language designed to make game development quicker and easier.

‘A tremendous amount clearly had to do with Ron Gilbert,’ Wilmunder says. ‘One of the ways Ron taught himself about programming was by taking apart other people’s code, so a certain amount of the foundation of SCUMM and the language came from the fact that Ron had cut his teeth on developing extensions to the BASIC computer language that, I think, came out with the Commodore 64.’

SCUMM is what’s known as a ‘tokenised’ language, where instead of script commands being defined by complex explanations, they’re simply defined by a single-byte value. ‘If you have a language that only has 200 commands, you can turn all those individual commands into these individual tokens,’ Wilmunder explains. ‘As it turned out, on the Commodore 64, Commodore was only using a limited number of tokens, so the work that Ron did involved adding new tokens and new commands to the language.’

Although the team was designing games for the Commodore 64, it did the work on SUN workstations – modular computers designed by Stanford University in the early 1980s. To program SCUMM, the LucasArts team created several tools on the SUN workstations that would then communicate with the Commodore 64 with a ribbon cable.

‘Effectively, we had access to tools that many other developers, who would only use Commodore 64s as their primary development tools, wouldn’t necessarily be able to access,’ Wilmunder says. ‘So initially, Ron and Chip went through, they defined what the commands that were going to be inside the SCUMM language and, by passing them through this system, they ended up with tokenised output.’

The advantages of this tokenised approach are numerous. Firstly, it means the language is limited to a fairly small number of pre-set commands. ‘In the case of SCUMM, there were around 120 commands we had in the language. So you’d have a command such as “Walk Actor X to location Y”,’ Wilmunder says. The location to which an actor would walk could then be defined by several variables, such as an object on the screen or a specific X, Y location. Other SCUMM commands included ‘Break’, which stopped execution of a script for a single frame, and ‘Wait For’, which let SCUMM run multiple scripts simultaneously, commanding certain scripts to ‘Wait For’ other scripts when the game required.

Easy SCUMM, easy go

From a scripting perspective, coding with SCUMM was exceptionally easy, and it had the additional benefit of making prototyping speedy. In fact, LucasArts designers could go from concept art to a complete walkthrough of a game’s basic layout in a matter of days. ‘It was sometimes humorous because we would take game characters from previous games.

‘For example, when we were developing Full Throttle, we didn’t have an animated version of Ben Throttle, so we would take Indiana Jones,’ Wilmunder laughs. ‘It allowed the scripters to move quickly and not be held up by the animation efforts.’

Alongside its efficiency on the development side, SCUMM was also an efficient user of memory. ‘It was probably one of the very first multitasking languages,’ Wilmunder says. Game scripts were attached to specific rooms within the game world. For example, rooms would have an ‘Enter’ script that set up the room’s animations, sounds and objects – any part from a character exclusive to the room, to an object such as a ticking clock. ‘The other benefit of these room entry and exit scripts was that, as soon as you walked out of that room, that script would go away; that clock would effectively cease to exist, and no other part of the system had to be aware of it,’ Wilmunder adds.

Structuring the technology in this way was hugely beneficial when working with limited memory, as was the case during SCUMM’s early years. SCUMM was also extremely easy to debug because of its relatively small number of commands. ‘If you have a byte that can hold 256 commands, but you’re only using 120 of them, all you had to do was put in a very simple test to say, “Hey, if I’m executing something that’s not in these 120 commands, something’s wrong. Let me know about it.”’

But SCUMM was more than just a scripting language, although giving it a precise definition requires a little explanation. It wasn’t a game engine like we’re used to seeing today – a fully integrated game-making utility such as Unreal or Unity. Instead, it comprised a series of individual tools, some of which were developed by LucasArts, while others were third-party tools. Wilmunder refers to these tools collectively as the SCUMM ‘system’.

The ‘Guy Brush’

Scripting in SCUMM was performed with off-the-shelf text editors, while characters were drawn with DPaint. With this setup, it was possible to create ‘brushes’ that enabled artists to paint a drawn image multiple times on a background.

In fact, when the protagonist for The Secret of Monkey Island was drawn for testing, he didn’t have a name, so the artist simply named the character brush ‘Guy’. During testing, the developers ended up referring to him as the Guy Brush. ‘Then we needed a name for the character, and we kind of looked at each other and somebody said, “Well, why don’t we just call him Guybrush?’” Wilmunder says.

Although the LucasArts team used some off-the-shelf tools for SCUMM, most of its tools were bespoke, and named in typical LucasArts fashion. Themed around bodily fluids, the script interpreter was named SPUTM. Likewise, its first animation system was known as BYLE, and when it was updated for Day of the Tentacle, it was renamed CYST. LucasArts also developed an object marker for defining different art objects in its various animation states called FLEM, and a tool that compressed completed artwork, animation and so on into an RU file, which was called MMUCUS.

SCUMM employed two other file types during the development process. SCU files were script files, and LFL (LucasFilm Limited) files were room files. ‘When you took an entire game, and you looked at it from the developer’s side, there would be one file that was the directory of all these pieces, and then everything beyond that was each room being an LFL file. So you’d see all these individual LFL files, and then when we finally shipped the game, we’d take all the LFL files and bundle them all up into one single file,’ Wilmunder says.

Walk to Monkey Island

This is essentially how SCUMM functioned, and how the developers used it behind the scenes. But what about its most famous feature, the verb-based interface? Although this interface debuted in Maniac Mansion, it was initially designed for an earlier game that was never made. That game was I Was a Teenage Lobot, set on a space station where criminals were punished by having their brains removed and placed in the bodies of stationserving robots.

Wrongfully convicted of a crime, your character has his brain placed inside a shoe-buffing robot, and must reunite with his body before it’s incinerated. ‘A shoebot could say very simple phrases, such as “Polish your shoes, sir?” or “Could you let me through this door?” – very simple commands, so the interface had to be simplified’, Wilmunder points out. This situation formed the basis of the interface that eventually found its way into Maniac Mansion, and almost every other LucasArts adventure game after that.

What’s interesting about this interface is that it isn’t an overlay, an additional part of the game developed separately from the rest. It was coded directly into SCUMM. ‘SCUMM knew two worlds,’ Wilmunder says. ‘SCUMM knew that line you typically saw on the screen with the view of the room or the view of the world above it, but it also knew the screen below it.’ In other words, SCUMM could tell whether players were clicking on the game world or the verb interface, and would interpret the click differently, seeking out objects or X,Y locations in the game world, or the appropriate verb in the interface.

SCUMM was in constant use over a 12-year period, and during that time, computing technology advanced enormously. To give you some context, upon its release Maniac Mansion was one of the most advanced games of its time. ‘Maniac Mansion on the IBM PC supported five different graphics modes,’ Wilmunder emphasises. ‘So it supported black and white, CGA four-colour mode, 16-colour Tandy graphics, 16-colour EGA graphics and 16 colours in a 256-colour mode. And at the same time, it supported the PC internal speaker, and I think it also supported a sound card.’

The GrimE is ripe

Over its lifetime, SCUMM was constantly updated. Maniac Mansion ran at a native resolution of 320 x 200, while the Curse of Monkey Island, the last LucasArts SCUMM game, ran at 640 x 480. Monkey Island also improved SCUMM’s interface over Maniac Mansion, including the addition of a dialogue tree. Other updates included the addition of the IMUSE audio system in Monkey Island 2: LeChuck’s Revenge, which synchronised the game’s music with on-screen action, smoothly changing between scenes, and a rework of SCUMM’s famous interaction system in Sam and Max Hit the Road, which bound all interactions to the mouse cursor.

SCUMM also saw the shift from floppy disk to CD-ROM, a transition that was comparatively easy for LucasArts because of the way SCUMM packaged its LFL files. ‘On a CD-ROM, especially in the early days, going from one place of a CD to the other could take between 400 and 800 milliseconds,’ Wilmunder says. ‘So, some of the benefits came from the fact that we had already prepackaged all these rooms together. It meant that the room, the animations and the sounds were already bundled tightly together anyway.’

In the early 1990s, games such as LOOM and Indiana Jones and the Fate of Atlantis saw rereleases because of technological innovations such as the switch to CD-ROM, which allowed for full voice acting, and visual upgrades from 16-colour to 256-colour art.

Yet for all these changes, the fundamental scripting language that was the essence of SCUMM barely altered at all. In fact, Wilmunder says that if you looked at ‘90 per cent of the language that was in Maniac, you could probably see the language that was in Curse of Monkey Island and say, “Yeah that’s the same Walk Actor command.”’

As time went on, however, SCUMM was increasingly seen as restricting the company’s ambition on account of it being designed to do a specific job. ‘One of the project managers at one point described SCUMM as “trying to push an elephant with a pencil eraser” and I don’t know entirely what he meant,’ Wilmunder jokes. The first development team for The Dig coded the game in a brand-new engine, but after the lead developer left the project shortly after that engine work was completed, the game’s assets were ported into SCUMM.

Eventually, SCUMM was abandoned in favour of GrimE, which formed the basis for Grim Fandango and Escape From Monkey Island, LucasArts’ final adventure games. Interestingly, Wilmunder insists that SCUMM could have been adapted into a 3D engine. ‘I was a little disappointed that Grim Fandango built a new engine because, when I look at the game, the key difference I see is that you could have put a 3D animation system on top of SCUMM, and built the same product,’ Wilmunder says. ‘But I think there was also interest on the designers’ part to see where they could go with a new system.’

The Curse of Monkey Island wasn’t quite the end for the SCUMM system though. In fact, there’s a whole alternate history of SCUMM that rarely gets any attention. Ron Gilbert left LucasArts in 1992, and founded Humongous Entertainment, producing kids’ games, sports games among other game types. Gilbert licensed SCUMM – the engine he had co-created – from LucasArts, using it to create games such as the Putt-Putt series and Spry Fox. The very last SCUMM game was released in 2001. It was called Pajama Sam: Games to Play on Any Day.

Gilbert’s work at Humongous emphasises that SCUMM had flexibility, which LucasArts never fully explored from an artistic perspective, despite making some great games. On the technical side, however, it’s that exact flexibility, that ability for SCUMM to evolve and adapt, that Wilmunder remembers above all else.

‘What was wonderful about working on SCUMM and the tools was that every year, every game there was something new that we were going to be doing. I remember at times people would often ask me, what was my favourite SCUMM game? And I quickly realised that my favourite SCUMM game was always the one we were working on right then, because there was some aspect of it that was going to move up the standard.’