Stories around the SCUMM engine

image



SCUMM can be considered just “one of” video game engines, but this engine causes almost as many feelings as games made on its basis.



Speaking of the golden age of LucasArts adventure, you can not ignore the SCUMM engine, "Script Creation Utility for Maniac Mansion" ("Script Creation Utility for Maniac Mansion"), which was used in the most memorable games of all time, such as Full Throttle , Day of the Tentacle , Sam & Max Hit the Road , and, of course, Maniac Mansion .



They wrote SCUMM Aric Wilmunder (Aric Wilmunder) together with the famous game designer Ron Gilbert (Ron Gilbert), thus providing the opportunity to create these games. Recently, Wilmunder and journalist Mike Bevan contacted each other by email and discussed SCUMM and the stories surrounding it. The article presents selected fragments of this conversation, recorded from the words of Wilmund.



We decided that it was important to convey the words of Wilmund, because SCUMM is not just an engine or technology. For many developers, this was a way to convey their artistic vision to thousands of people in one of the most memorable periods in the history of video games.



The evolution of the engine



One of the features that distinguished LucasArts from most other developers was that many of us came from mainframes, so we developed tools and compilers on Sun workstations, and then created equipment that allowed us to load code and data on the right platforms. It all started with the Atari 800, then Ron [Gilbert] was hired to work with the C64, so a similar system was created for this platform.



The most important advantage was that we could develop tools in C, or, as in the case of SCUMM, use YACC for processing and marking code. Most developers used the same machine to write and execute code, so their tools used the capabilities of only one platform.



After the first few years of PC product development, the PC itself became as powerful as our first workstations, so one by one we started migrating our tools and gradually abandoned Sun workstations.



The evolution of opportunities began very early. I was the first internal developer to work on a PC, and at that time the tools and compilers were very rough. For example, C compilers, in the event of errors, produced very “detailed” descriptions. On the PC, you could get a message like “File: walk.c Line: 409 Error: 4004”, after which you had to go into the code and figure out what the problem was, or get the manual and turn the error code into something more understandable. Sometimes the error descriptions were also confusing. Since we didn’t have good editors to write code on a PC, I used the editors on Sun, and then transferred the files. When errors occurred on the PC, I recompiled and debugged the code on the Sun workstation. It stimulated me to write cleaner code that would work on two very different machines from the very beginning.



There were still many additional difficulties on the PC, because the controls, sounds and graphics were completely different. For example, mice were not always standard equipment, so control was designed for a mouse, joystick, or keyboard. This simplified the transfer of the game engine to other platforms, because management has become modular. For sound, we supported the internal speaker, it also seems to be the CMS sound card (predecessor of Adlib), as well as the sound system for Tandy computers. The graphics were modular too, because we supported Hercules black and white displays, four-color CGA graphics, 16-color EGA, VGA in 16-color mode and Tandy Graphics in another graphic mode. To accomplish this, all graphics were rendered into a memory buffer, and then very specialized procedures copied the buffer into a video card. We used the so-called “dirty rectangles” system, tracking those areas that were updated, so we copied only the necessary parts of the screen.





Arik wilmunder



SCUMM communication



SCUMM was a compiled language. For example, the “walk dr-fred to laboratory-door” command converted the Walk command into a one-byte command. The next byte determined for which actor or character this command was, and the “laboratory-door” object was converted into a two-byte number, that is, the whole command was reduced to four data bytes. Bytes, if you do not know - this is a fragment of computer memory, which can contain a numerical value from 0 to 255. As we can see, the marked-up language is very effective. The interpreter never knew what actor was “dr-fred”; it was just the number of the actor, so we always tried to avoid the hard task of any specific information about the game directly in the interpreter.



The only exception to this rule in Maniac was the color with which the actor displayed the text ...



When developing Maniac , we had a couple of exceptions to the rule that the interpreter should never have coded game values. It had to specify the colors used for the actors, and the color of the display of their phrases. The source code embedded these values ​​into the interpreter. After transferring Maniac to the PC and before the release of Zak McKracken , two new commands were added so that these values ​​could be controlled from the scripts. "Set-actor-talk-color" and "set-actor-color" removed specific game commands from the interpreter so that everyone could control the script.



I'm talking about the interpreter, so let's look at it in more detail. An interpreter is a program launched by an end user. It initializes the graphics and sounds, reads files from the disk and interprets the scripts in these files to execute the game. When the game was released, we renamed the interpreter to “Monkey.exe” or “Dig.exe”, but during development this tool was called SPUTM, which stands for “SCUMM Presentation Utility (tm)”. The name is not really a trademark (TM), but we just wanted to name it as another body fluid.



SCUMM, or Script Creation Utility for Maniac Mansion, was a script-marking tool and merged all game resources into files that we released on disks. The version of SCUMM used for Maniac must have contained about 80% of the teams used in subsequent games such as Full Throttle . After completing the development of a language, most important commands never changed. “Walk bernard to clock” and “walk ben to motorcycle” were essentially no different.



SCUMM multitasking



Probably the most outstanding part of SCUMM was multitasking. This meant that at the same time it was possible to execute several scripts. You could create a clock on the wall in Zack McCracken’s office and animate it. There was a simple, very simple script specifically for the clock, which told the animation engine to change one clock image to the next, instructed the sound engine to reproduce the sound of a tick, then ordered the “sleep-for 1 second” script, and repeat the actions. The Sleep commands were deceptively simple commands that told the system that the script was completed and you need to go back after a while and continue executing the script from the point where the exit was made. “Sleep” expected a specified amount of time.



There was also the possibility of "Wait". It was often used when the actor was ordered to go to an object or turn in the right direction. The script simply commanded the actor to go, then gave the command “wait-for actor”, which plunged the script into sleep until the actor reached the desired point or turned in the right direction. This allowed us to write scripts in a very linear style, reflecting the sequence of actions that the actor had to perform.



All sorts of useful tools with disgusting names



Along with SCUMM and SPUTM there were many other tools that we developed for creating games. SPIT was a simple font editor for creating different text formats for different parts of the interface. The dialog at the top of the screen could have one font, another could be used to save the game, and the third was used for interface verb commands at the bottom of the screen (Walk-To, Pick-Up, Look At, etc.). FLEM was a graphical tool used to manage rooms. It was possible to mark objects in the room, their states (closed or open doors) and thus create areas that define the places available for moving the actors. FLEM also made it possible to view the clipping planes, which were layers that hid the actor who ran behind objects or surfaces. In Maniac there was only one surface, but in subsequent games there could be up to three planes behind which an actor could be hiding.





Maniac mansion



MMUCUS was the helpers of FLEM. MMUCUS captured the image of the room and the data of the objects, the data of the clipping planes and areas in which you can walk, and compressed the data into a file “room” containing all this information. This was important because connecting together compressed data allowed script creators to make quick changes to the script, after which it was necessary to simply compile it for the changes to take effect. The room file remained unchanged; it changed only when objects were added or areas that were available for movement were changed.



BYLE is our original animation tool used for drawing and animating actors. BYLE had a simple animation engine that could be programmed to cycle the animation from one frame to another. In addition, he understood the “direction”, that is, it was possible to change the direction in which the actor was turned. It was possible to compress actors in various ways, and this made it possible to make very simple and fast animations, for example, as at the beginning of Day of the Tentacle, took up little space, and for multicolored characters, for example, for Ben Trottle (Ben Throttle), another compression method required only with 16 or 32 colors. Over time, we had a need for more complex animations, so a new CYST tool was developed, using the same data format, but managing large images was much easier.



Very short time we had a tool called SMEGMA. One of the programmers had a child, and he told us that the first intestinal secretions of the infant consist of this substance. It turned out that he was wrong, and the substance is called Meconium (meconium). We did not figure out what Smegma is, we just liked the name. But once they checked the meaning of the word, and a couple of days later they changed the name. You can probably imagine that standing next to us in the dining room was rather unpleasant, we discussed SCUMM, BYLE, MMUCUS, FLEM and so on. [Approx. lane: one of the values ​​of scum - seed, bile - bile, mucus - mucus, FLEM consonant with phlegm - sputum.]



SCUMM update



SCUMM is criticized for not making revolutionary changes, and instead it has been gradually improved. A clear example of this is graphics. We started with the support of 16-color graphics in the resolution of 320x200. With the increase in the number of graphics cards, we switched to 256 colors and a resolution of 640x480. In the sound system, we started with the internal IBM speaker and switched to multi-channel stereo sound. Characters that used to be only a few pixels high could now grow to almost the entire height of the screen. The interfaces have also evolved: from the initial interface with verb commands to complex UI based on icons similar to the modern Mac style.



One of the important steps was the integration of the INSANE engine, a video system developed for Rebel Assault. I originally hired Vince Lee to work on the version of one of the SCUMM games for Amiga, but he quickly proved his programming skills on various platforms. When working on SCUMM, he saw how I was committed to isolating the primary machine-dependent parts of the system to simplify portability to other computers. When developing INSANE, he tried to bring this approach to a new level and added the ability to stream video playback and branching, so we thought it very important to implement this system in SCUMM. Full Throttle was the first step in this process. Thanks to the rock and roll soundtracks of Gone Jackals, when someone ran a game in the next room, people quickly noticed this. The Throttle engine was clearly not perfect: when INSANE was running, the SCUMM system had to be stopped. Therefore, between Throttle and Monkey 3, I tried to fully integrate the two systems. I threw out the original system of videos and cursors, even the font system, so SPUTM was actually running on top of INSANE. It turned out that we put more and more eggs in one basket, but the benefit was huge. For example, if I added support for Japanese or Korean, then the products on the Rebel Assault engine and products on SCUMM could support Japanese and Korean.



Impressive multiplatform



Thanks to the ease of porting, SCUMM games have worked on more than a dozen systems and about a dozen languages. We started with Commodore 64, then there was an IBM PC, an Atari ST, an Amiga, an eight-bit Nintendo console, Fujitsu Towns, [Fujitsu] FM Marty, a Sega CD, CDTV, Mac, and recently an iPhone with an iPad was added. Not bad for a system developed 25 years ago.



In the presence of such projects as ScummVM, written by fans of the SCUMM interpreter, support for new platforms is possible. It was Monkey Island that was chosen as one of the five games on display at the Smithsonian Museum of American Art and proving that a good story is often more important than new technologies for one-day games.



Not everyone was aware that SCUMM was also the basis for many popular educational games such as Putt-Putt , Freddi Fish and Spy Fox , as well as the Backyard Baseball / Football / Soccer series developed by Humongous Entertainment. If you look inside, you can find the same commands and almost the same code as their brothers from LucasArts.



SCUMM study



At that time, all designers were also programmers, so SCUMM, although it was unique in many aspects, was quite simple to learn and code. During Maniac or Zak , the engine did not have a manual, but a group of 6-8 new script creators were hired in front of Monkey . They wrote a manual for them and conducted a week-long study (Scumm University, “Scumm University”). For courses, Ron took the most recent game, deleted everything from it except for one room and placed objects in it showing the capabilities of the engine.



New creators of the scripts (“sclets”) started from this room and learned the basics. For several days they were taught how to add new rooms, create areas of movement. Some had artistic skills and created their own animations, others were engaged in writing dialogs. Usually, by the end of the week, we already had a pretty good understanding of the skills that the scaffolds had, after which the leaders of various projects chose which of them would work in their projects.



It seems to me that the first “University of Scumm”, or “Scumm U”, began with a standard interface with verbs. One of the first projects has always been the analysis of the interface. Therefore, usually one or two script creators started by making the system work. Speaking about the training of scamlets, I recall that it was once held at the Ranch [George Lucas Ranch]. All gathered on the third floor of the main building. George’s offices were on the second floor, so they had to behave very well.





Secret of monkey island



SCUMM advantage



One of the biggest advantages of SCUMM was its high prototyping speed. The designer came up with ideas for rooms and locations, then the lead background artist began to make sketches. When a sufficient number of sketches were ready, they were scanned, very quickly added and connected using SCUMM. Usually within a few weeks after the start of the design process there were already several dozen rooms, sometimes they were just pencil sketches. We took actors from another game and started to connect them together. Sometimes it turned out that the room needed to be turned over or redrawn if it didn’t fit very well, but you could still prototype a huge part of the game.



The creators of the scripts could now create preliminary areas of motion, so that the actor could move around the room, the background artists could begin to convert the sketches into the final graphic, and the animators began to work on character animation. Since the final characters were still in the process of being created, at this stage of development one could wander around in Full Throttle’s painted pencil room, but Guybrush from Monkey Island games could take the place of the main character. Such replacements allowed designers to experiment and make changes and improvements with very low labor costs.



SCUMM long life



I don’t think that any of us thought that SCUMM games would be with us for so long. I worked on the system for about twelve years, and constantly sought to prepare the code for long-term use, testing it on as many platforms as possible. When developing for Windows, I tested it in Windows NT, even if it was not one of our target platforms. But NT required more stringent code standards. Therefore, if the game worked in NT, the chances that it would work on future Windows operating systems increased.



I also tried to avoid too frequent code tricks that could cause crashes on the computers of the future. For example, you can write a self-modifying code, but for certain sizes and types of processor caches, it will cause a crash. Therefore, instead, I wrote five or six slightly different variations of one procedure, each of which was specially optimized for a specific situation. For example, there were many versions of the actor drawing code. If the actor was in full screen mode and was not hiding behind other objects, I used the same version of the code. If the actor went beyond the left or right edge of the screen, I made another version. To scale the actor was another version. It seems there were eight variations of what the actor could look like, and I had eight versions of the code, each of which was optimized for the fastest execution of the task. I also originally wrote C code to make it work and optimize. Then I rewrote the code in assembly language to achieve maximum speed. The C code was handy when we were developing SCUMM for other computers, because the developers could run this code and it worked, after which it could be optimized.



Scumm 2.0 was called the system for Zak . Maniac used version 1.0, in Zak - 2.0, in Monkey - 3.0, and in Indiana Jones and the Last Crusade - something like 3.0 or 3.1. I need to dig a little bit to find the exact version numbers. In addition, there were numbers of special issues. The first 256-color version of Indiana Jones was an advertisement for a video card manufacturer. I made the code work, but at that time there were few 256-color cards on the market, so we made a deal and delivered the game along with the video card.



Benefits of interpreted languages



Ron worked with interpreters for a while. He developed new commands that could be added to Commodore Basic, so he performed the reverse engineering of this system. When creating Maniac, he thought that this would be the best approach, and Chip Moningstar (Chip Morningstar) had experience in working with compilers of languages, so the language was mainly developed thanks to their collaboration. The irony is that at that time Chip was working on a Habitat project, in which instead of the interpreted code, fragments of assembler code 6502 were supported, which were changed and moved into memory. The failure of any of these fragments caused the entire system to fail. On the other hand, only 80 commands were used in SCUMM, and the commands were packed in bytes with values ​​from 0 to 255. If the command value was greater than 80, the system reported an error, so SCUMM could very quickly indicate that it was performing the wrong commands . And Habitat just “fell out”, and it was very difficult to track errors in it. I think that in retrospect Chip would decide to use an interpreted language.







Another advantage of the interpreted languages ​​is the easy migration between different hardware platforms. The interpreter was written in conveniently portable C code, and is very easily analyzed through a set of command markers. Another huge advantage was that the whole game was data. When developing for new machines, we knew that all the data was correct, so it was necessary to work and look for errors only in a very small amount of code.



Work with the inimitable Ron Gilbert



Working with Ron was incredibly fun. Here are a couple of tales ...



Most of our early graphics were created with traditional art technologies. Pencils, pens, paper, and occasional errors were corrected with an Exacto knife. Once Ron pulled one of the blades and played with him on his desk for several days. He used to keep the knife between the teeth with the blade stuck out of his mouth when writing the code. One day I heard a loud sigh, turned around and saw blood streaming onto the floor from Ron's hand. After I helped bandage my arm, we were worried about the possibility of tetanus, so I called my wife and asked for a shot of Ron. Ron's hair fell on his face, but he forgot that he had a blade between his teeth, made a movement with his hand to straighten his hair and stuck the blade right into his palm. After that, the knives did not leave the art department.



***



Another time, Ron and I worked in the evening in a building on Kerner Boulevard, near Industrial Light & Magic, and we had a serious disagreement about how to implement the code snippet. Ron and I often worked until ten or eleven in the evening, so we knew the cleaners well. One of them even then became a film editor. Well, that evening I was sure that my solution to the problem was correct, Ron was sure that his approach was better, for some reason the argument gradually grew and ended with a screaming contest. Finally, Ron got up, seemed to curse me, went out and slammed the door with all his might. Probably, I thought that I got rid of it, and returned to writing code. After about five minutes, Ron came back and said calmly, “Okay, we're done with this. Now let's figure out how to solve this problem. ” Within a few minutes we returned to the board and worked on the solution, listening more closely to each other. As a result, we created a hybrid solution that borrowed the best of both our ideas. Ron was a true collaboration master.



***



Also at the beginning of development, one of our employees was supposed to give a presentation at the computer club in Berkeley. We had no serious deadlines, so we got into the car to cross the Richmond San Rafael Bridge and watch the performance. Around the middle of the post, Ron saw a car standing at the emergency stop, so I stopped. It was our employee, he had a flat tire. He didn’t have a reserve, but mine didn’t fit, but he didn’t want to leave the car, so he gave us two boxes of floppy disks and asked for a presentation instead of him.



We had no performance plan, only discs. So when we were introduced, I just started pulling out the discs and downloading everything I could find on the computer, while Ron was making a completely improvised speech. Studying in college, Ron worked on the radio, and was on the “morning team,” so he felt like a fish in water. I never liked public appearances, but I could show program demos well. The presentation was perceived very well, and we returned home inspired. We had a good mood the next morning, until ten o'clock, until our employee arrived. He was angry, and we could not understand why. We covered his ass, and the audience was pleased. It turned out that there was a friend of our employee in the hall. When asked if the demo showed any particular part, it turned out not. We did not know what was on the disks, and probably missed it. Instead of thanking us, the employee thought that we deliberately sabotaged his demo.



***





Ron Gilberg, Arik Wilmunder, Noah Falstein, circa 1985 (photo from Mobygames )



On the night of the Loma Prieta earthquake, Ron and I had to go to San Francisco to find his girlfriend. The bridges were closed, we saw that a fire had swallowed up a quarter in the Marina area, and we needed to find it. My wife was very worried, but I did not want to leave Ron alone. We were about to leave the house, but the phone rang. It was Ron's girlfriend, she got on a bus to San Rafael, and she needed to be driven.



***



At some point, Ron left LucasArts because his girlfriend had to leave to teach in China. At that time, I was working on Maniac Mansion for PC, so when I met parts of code written by Ron that I didn’t understand, I literally converted 6502 assembler code directly to C so that the system would work even if I didn’t realize what it was doing. This code was rewritten after Ron’s return, but even years later there were rumors of the 6502 code hiding in the system.



***



At the time of his departure, Ron lent his new Mazda RX7 to another colleague.Unfortunately, when he was returning home one evening, a deer ran across the road, the car flew off the road and turned over to a fence with barbed wire. Scratched body and crashed sunroof. Before Ron's arrival, a colleague repaired the whole body and repainted the car. Ron did not know about the accident and was surprised because the sunroof seemed different to him. Then a colleague told him what had happened, Ron calmed down and did not become angry.



My friend SCUMM



25 years is a very long time. I do not think that there is a general list of all the games in which SCUMM was used, but between LucasArts and Humongous there were probably 30-40 different games. I know - some designers felt that SCUMM limited their capabilities. One of them said that using SCUMM is like trying to move an elephant with an eraser gum.



But I think that the most popular game of this designer was written on SCUMM. Sometimes restrictions on work lead to a concentration of effort. SCUMM was designed to perform one task, and if your goal was to create excellent adverchur, then SCUMM was definitely the best option.



Many times I played all SCUMM games, from beginning to end, although in The Digit seems that I missed something and did not play it from the very beginning. I was disappointed that I had seen the solution of most of the best puzzles in advance, or in the development process, or when artists worked on them with the authors of the scripts. I missed some puzzles completely because I knew the solution beforehand and I didn’t need to look for clues. In addition, I played games in many languages ​​and on different machines, because I was responsible for international versions and cross-platform development.



image



My answer to the question about my favorite game on SCUMM has remained the same for many years. I always like it and I am most proud of the latest game we are working on. With each new game we tried to push the boundaries and do what no one had done before us. I always thought: why work at all if we do not make a new step in art or technology? I have favorite moments, for example, the initial animation in Day of the Tentacle or the humor of Sam and Max , the music of Full Throttle or the ability to move all three Maniac characters . Each achievement was special, but all of them, like my own children, have a special place in the heart.



All Articles