The SCUMM Diary: Stories behind one of the greatest game engines ever made
July 12, 2013 Page 2 of 6
Probably the most distinctive part of SCUMM was that it was multi-tasking. This meant that multiple scripts could effectively run simultaneously. You might create a clock on the wall in Zak McKracken’s office and have it animate. There would be a single, very simple script just for the clock that would tell the animation engine to change from one image of the clock to the next, tell the sound engine to play the “tick” sound, and then tell the script to “sleep-for 1 second” and then repeat. The Sleep commands were deceptively simple commands that told the system that the script was complete, and to come back some period of time later and keep running the script from where you left off. “Sleep” would wait for a specified period of time.
There was also the ability to “Wait”. This would often be used when you told an actor to walk to an object or turn and face a direction. The script would simply command the actor to walk, and then issue a “wait-for actor” command which put the script to sleep until the actor had arrived or was facing the right direction. This allowed you to write your scripts in a very linear fashion reflecting the series of steps that you wanted the actor to follow.
All kinds of useful tools with gross names
Along with SCUMM and SPUTM, there were a variety of other tools we developed for creating the games. SPIT was a simple font editor so we could design different text formats for different parts of the interface. Dialog at the top might be in one font, but another would be used for the save game screen, and another on the bottom of the screen when we used a verb-based (Walk-To, Pick-Up, Look At, etc.) interface. FLEM was a graphical tool used for managing the rooms. You could mark the objects in the room, their different states (Doors open or closed), and also build the walk-boxes that controlled where actors could travel. FLEM also let you preview the clipping planes, which were layers used to create the appearance of the actor disappearing behind objects or terrain. In Maniac there was only one plane, but in later games there might be as many as three planes that the actor might clip behind.
MMUCUS was the partner of FLEM. MMUCUS took the room image and the object data, the clipping planes and the walk-box data and compressed the data into a 'room' file containing all of that information. This was important since having the bulk of the data compressed allowed the scripters to be able to make quick script changes and only need to compile the script before giving the change a try. The room file would remain unchanged unless objects were added or walk-boxes were changed.
BYLE was our original animation tool used to draw and animate actors. BYLE had a simple animation engine that could be programmed to cycle animations from one frame to the next and it also had a notion of 'direction' so you could change the actor's facing. You could compress actors using a variety of methods and this allowed very simple and fast animations like the beginning of Day of the Tentacle to take little space, while multi-colored characters like Ben Throttle would use another compression method that was necessary when 16 or 32 colors were used. Over time we saw the need for even more complex animation types so a new tool, CYST was developed that still used the same costume data format but it was much easier to manipulate larger images.
For a short time we had a tool called SMEGMA. One of the programmers had a child and told us that when babies are born, their first bowel movements consist of this. Well, he was mistaken and it turns out that substance is called Meconium. We hadn't bothered to look up Smegma, we just liked the sound of it. Once we did, the name changed a few days later. As you can probably imagine, standing near us in the lunch line was probably a bit unsettling as we talked about SCUMM, BYLE, MMUCUS, FLEM, et al.
One of the criticisms of SCUMM was that it didn't go through revolutionary changes and instead improved incrementally over time. A clear example of this would be graphics. We started with 16-color graphics support in a 320 by 200 resolution. As the installed base of graphics cards improved, we moved to 256 colors and 640x480 screen resolution. Acoustically, we started with the internal IBM speaker and moved to multiple channels of streaming stereo audio. Characters that were just a few dozen pixels tall could now zoom to nearly full screen height. The interfaces evolved as well from the original verb interface to more sophisticated icon-based UIs, not unlike today's Mac desktop.
One of the key steps was the integration of the INSANE engine, the video system developed for Rebel Assault. I had originally hired Vince Lee to work on the Amiga version of one of the SCUMM games and he quickly showed his programming skills across a wide variety of platforms. When working on SCUMM he saw how I had worked to isolate the primary machine-specific parts of the system making portability to other computers fairly straightforward. During the development of INSANE he took that effort to a new level and added the ability to stream and branch video and that was quickly a high priority to incorporate into SCUMM. Full Throttle was the first step in that process and with the rock-and-roll soundtracks by the Gone Jackals, when someone started the game in the next room, you quickly took notice. The Throttle engine was not quite a match made in heaven, with the SCUMM system shutting down when INSANE started to run. So between Throttle and Monkey 3, I made the commitment to fully integrate the two systems, and tossed out the original video and cursor system and even the font system so that SPUTM was really running on top of INSANE. This put more eggs into the same basket, but the advantages were that, say if I added Japanese or Korean support, now both the Rebel Assault products and the SCUMM products could now both support Japanese and Korean.
Page 2 of 6