Gaming —

Maniac Tentacle Mindbenders: How ScummVM’s unpaid coders kept adventure gaming alive

For 10 years, the ScummVM project has made beloved adventure games playable on …

Maniac Tentacle Mindbenders: How ScummVM's unpaid coders kept adventure gaming alive
Photo illustration by Aurich Lawson

ScummVM was born on September 17, 2001, at 5:57pm GMT+1. The program was meant as an interpreter that could play classic LucasArts point-and-click adventure games such as Monkey Island, Sam & Max Hit the Road, and Day of the Tentacle in a virtual machine (VM).

As for the name, "SCUMM" was the "Script Creation Utility for Maniac Mansion," itself a reference to the first LucasArts game that relied on the company's proprietary game design tool. Expanded and revised through the years, SCUMM helped LucasArts build a huge line of popular adventure games in the 1980s and 1990s, but the DOS-based games became increasingly difficult to play on modern systems.

ScummVM addressed this problem. Little did its earliest developers know, however, that it would grow far beyond its origins, taking on a life of its own as more than 100 people contributed a million lines of code over the next decade. Today, ScummVM has become almost a general-purpose adventure game interpreter that can run on nearly any architecture. How did an ever-changing group of volunteers manage to do it—and avoid being sued out of existence?

Early days

ScummVM owes its birth to the drive of computer science student Ludvig Strigeus, who wanted to write his own adventure game engine. Strigeus thought it would be a good idea to first learn about the inner workings of SCUMM in order to borrow some of its ideas and features, so he started writing an interpreter capable of playing Monkey Island 2.

Vincent Hamm had been trying in parallel to build a SCUMM interpreter of his own, using as a model the limited documentation available online, in conjunction with whatever insights he could gain from reading the scripts buried inside the code for Maniac Mansion and Zak McKracken and the Alien Mindbenders. But Strigeus was miles ahead, and soon after learning about the other project, Hamm dropped his own efforts and joined Strigeus—initially as a beta tester, then as a co-author.

One of the earliest screenshots of ScummVM in existence—this one's from version 0.0.2 in November 2001.
One of the earliest screenshots of ScummVM in existence—this one's from version 0.0.2 in November 2001.

Before Monkey Island 2 support was completed, Hamm grew interested in adding support for Indiana Jones and the Fate of Atlantis, which had a very similar engine. He got the game to work with the ScummVM project, but his code remained separate until Strigeus could review it.

Hamm recalls that "[These] early stages were completely dis-coordinated. We didn't even have a proper code repository." But then the team would have a "magic moment" when a game finally started working, and they were rejuvenated.

In October 2001, the pair started using a CVS (Concurrent Versioning System) repository to store their code and its revisions. Strigeus worked on the "official" source tree while Hamm experimented on his own. Once Hamm's Indiana Jones work was playable, it was added to the official source tree.

On November 3, 2001, ScummVM was picked up by popular tech news website Slashdot. The project immediately attracted developer attention. "This got a lot of people interested, and next thing I knew, there were developers working on all aspects of the project," said Hamm. ScummVM had shot its way into the big time. The userbase exploded, and calls to "please support game x" became common.

Strigeus managed to complete support for LucasArts' patented iMUSE technology, a SCUMM component that varied the game's music in response to player actions, but he delayed adding it to ScummVM because he worried that he could be sued for infringement. After looking at the iMUSE patent, and going on advice from other developers and Slashdot commenters, Strigeus went ahead with his code. But the threat of legal action from LucasArts still lurked in the background, as it had since the very first release of ScummVM code. The developers simply plowed ahead, hoping that a lawyer's call to shut down the project would never come.

Simon says

New games—and even entire game engines—were added. The first non-SCUMM engine added to ScummVM actually came quite early in the project's life. ScummVM 0.2.0, released on May 14, 2002, added support for Adventure Soft's popular point-and-click adventure Simon the Sorcerer, renowned for its humor, puzzles, story, and visuals. This sparked arguments within the team, which grew more serious as pressure and interest grew in expanding the scope to other non-SCUMM games. Were they building a "SCUMM" interpreter or a general purpose old-school gaming emulator? And should the name of the project be changed to reflect a broader focus? The move to add a non-SCUMM engine became a key point of debate for the fledgling project.

Co-founder Vincent Hamm now says that the decision not to change the name was a mistake. "If I could go back," he said, "this is what I would have changed."

But the original name stuck—and has led to some confusion among users who assume that a game is based on SCUMM because it is supported by ScummVM. The counter-argument says that most people know nothing about the names of engines used in classic graphic adventure games, SCUMM or otherwise. For those who are in the know, the ScummVM name increases awareness and exposure—SCUMM games are likely to be the first graphic adventures people type into a search engine when trying to play old titles.

<em>Simon the Sorcerer</em> (Amiga version pictured) was the first non-SCUMM game supported by ScummVM.
Simon the Sorcerer (Amiga version pictured) was the first non-SCUMM game supported by ScummVM.

At this point, with ScummVM more than ten years old and supporting 34 different engines, the argument is pointless. The project's scope expanded years ago and, for better or worse, no name-change occurred. Developers have, however, dreamed up a creative list of alternate SCUMM explanations—such as the delightfully self-deprecating "Self-inflicted Creative Urge to Make More Virtual Machines."

A new adventure

The project founders gradually lost interest and drifted away from the project. Strigeus, who left in early 2002, went on to develop several more open-source projects, most notably OpenTTD—a remake and expansion of Chris Sawyer's classic sim game Transport Tycoon Deluxe. He also authored BitTorrent client µTorrent, which was purchased by BitTorrent, Inc. in 2006, and was chief architect of the Spotify beta.

Hamm lasted a little longer, making his last code commit to ScummVM on July 15, 2002, and his final commit to sister project Residual on October 1, 2003. He briefly returned to the project in 2007 to "fix a few things" on the engines used for Future Wars, Operation Stealth, and Cruise for a Corpse. Hamm had co-developed separate engine re-implementation projects for all three of these games and finally agreed to merge them into ScummVM—despite his continuing objection to the name. He later worked on big-budget adventure Heavy Rain. He remains in the games industry, although he's not working directly on a game at this time.

But even as the founders left, ScummVM grew tremendously. There were a dozen active contributors by the middle of 2002, with hundreds of commits per month and nearly 70,000 lines of code. A major rewrite from almost entirely C to predominately C++ began in early 2002 (to make the code cleaner, more maintainable, and more readable), with new project lead James "Ender" Brown managing releases, PR, and the politics of an open project ruled by meritocracy.

ScummVM 0.3.0 added a GUI launcher, which used a font similar to that found in the SCUMM games.
ScummVM 0.3.0 added a GUI launcher, which used a font similar to that found in the SCUMM games.

In July 2002, a total GUI rewrite, led by Max Horn, joined the main code rewrite. (The old GUI was little more than a save game dialog.) Weeks of detailed discussions went by as a few coders started the work. The overhauled GUI made its first appearance in the December release of version 0.3.0, which is notable as the first release to include a launcher frontend—previously, games were launched from the command line. The foundations put in place here lasted for numerous releases before the 2005 rebranding of ScummVM ushered in a new overhaul. By 0.9.0, Johannes "LordHoto" Schickel and Eugene "sev" Sandulenko had implemented the "modern" GUI, based on mockups from a user called Krest. Sandulenko says his version was pixel-perfect with the mockups, a feat not matched by a vector-based rewrite that followed in 2008. Sandulenko still works on the interface from time to time, hoping to restore its "former glory" in the new vector format. He's quick to point out that the GUI TODO page is around three screens high, and the team could use some help from a designer.

The ScummVM launcher screen from version 0.9.0.
The ScummVM launcher screen from version 0.9.0.

I fought the law

LucasArts took notice of ScummVM in June 2002. The company's legal team sent a takedown notice to ScummVM's lead developers, believing the project to be in breach of LucasArts' "intellectual property ownership interests." LucasArts implied (incorrectly) that ScummVM included some of its proprietary binary content. Then-lead developer James "Ender" Brown recalls how the "great nature" of the retro gaming community helped the team avoid some major problems. It helped that developers had already entered into dialogue with some of the games' original authors. ScummVM managed to avoid being "blown out of the Internet" like many fan project, Brown said, but the team had difficulty explaining the issues around open source projects to lawyers not versed in the topic.

Not that discussions were always adversarial. "LucasArts were really trying to be accommodating, and seemed to understand our honest desire to keep their older games alive," Brown said. He dealt with four different lawyers over a period of about four years as discussions dragged on. ScummVM development continued more or less unabated, and, after an initial delay caused by the legal uncertainties, ScummVM releases kept coming.

Channel Ars Technica