Curiosity allegedly killed the cat.
But, it also pushed humanity forward since times immemorial.
The curiosity of one computer science student back in 2001, for instance, gave millions of gamers a way to play hundreds of classic adventure games…
How it all began for ScummVM
Back in 2001, Ludvig Strigeus wanted to play a classic adventure title, Monkey Island 2: LeChuck’s Revenge. And in order to learn about game engines, he decided to reverse-engineer it. He managed to make the game run and then joined forces with Vincent Hamm, who coincidentally was reverse engineering The Secret of Monkey Island, the prequel.
SCUMM (Script Creation Utility for Maniac Mansion), the engine behind the Monkey Island series, was used for many other legendary titles that came out from LucasArts’ kitchen. Titles such as the titular Maniac Mansion, Full Throttle, and many others.
Together, Strigeus and Hamm created ScummVM, an interpreter used for playing classic adventure games on modern platforms.
Both founders became less active in the project in 2002. Strigeus left for good, but Hamm made a few sporadic contributions over the years and brought more stuff to the project later. For instance, he added Cine in 2006 and CruisE engine in 2007.
Strigeus would later create the most popular torrent client at the moment, µTorrent. He was also the leading member of the team that created Spotify. Hamm worked on Heavy Rain (a notable PS3 adventure made by Quantic Dream). Today, he’s a software engineer at Oculus VR.
Luckily, ScummVM continued to thrive, thanks to its fabulous community.
More than a hundred people contributed or continue to contribute to the project. They do the work completely pro bono and without expecting any kind of compensation. Thanks to this community-oriented development, ScummVM is an open-source project often used by teams for re-releases of classic adventure games. ScummVM is licensed under GPL and requires releasing the full source code of a game’s binaries and inclusion of the license file.
Today, the program is available on many different platforms including Windows, Linux, macOS, iOS, Android, Switch, and many more. New games and engines are added on a regular basis.
If you have a classic adventure title that you cannot play on your OS of choice, check out the ScummVM compatibility page. Chances are, the game you own is supported.
What ScummVM is and how developers make games playable on modern platforms
As we said, ScummVM is an interpreter for classic adventure games, not an emulator.
In other words, ScummVM doesn’t emulate original game platforms such as DOS or Amiga. It includes rewritten versions of executables, which can run on different platforms. It includes certain emulators (like for different sound engines) but games run natively.
While it provides executables, users have to provide game files in order to play supported games. This means lower CPU requirements compared to emulators, such as DOSBox.
Only a few supported games became freeware in the meantime. The rest can be legally purchased from online distributors, typically GOG or Steam. Further, before deciding to buy a specific game, check out the demos on the ScummVM website. There’s a chance you’ll be able to try the game before buying it.
The process of making games playable is not simple at all: it includes long times writing hundreds or thousands of lines of code.
Developers have to reverse engineer the game’s engine, which often is a long and arduous process. Occasionally, the team sometimes gets access to source codes for specific games. This makes the process much easier but still time consuming.
But the helping hand can come too late.
“Sometimes we’re getting access to the sources when we basically finish the whole engine,” explains Eugene Sandulenko (sev), current project leader. “This, for instance, happened with Horror Soft games, when we obtained sources for Simon 1 and Simon 2 [Simon the Sorcerer series] when our engines were complete. We got sources for their less popular titles along the way.”
In a perfect world, ScummVM developers would receive source codes for each game but that’s not the case. When it comes to collaboration with developers and companies holding the rights for games the ScummVM tries to make playable “there is no typical process.”
According to Eugene, “Everything is ad-hoc. What we do is, we try to search for contact info of people who were working on the titles some developer is interested in, and we’re inquiring access to their original source code, if it still exists somewhere. Then we start working on it at our own pace.”
And that’s one great thing about ScummVM. Not a single game and engine include deadlines. The team worked years on single projects, but every time the hard work is worth it at the end. For instance, the work on Blade Runner, one of the best adventures of all time, took more than eight years.
The personal joy of making a classic game available for young gamers is priceless.
“Working on the ScummVM Blade Runner engine specifically is one of the best collaborations I’ve had since I’ve been a software engineer and that is about a sixteen years span,” explains Thanasis Antoniou, one of the members of the Blade Runner Team. “I’m really happy with the quality of the end result of the game too,” he concludes.
But once a game has been released, the work doesn’t stop.
Members of the ScummVM team will go the extra mile to squash every bug and include additional features in every game they port.
While Blade Runner is playable Thanasis is still working “on the engine for bug fixes, performance improvements, translations support and content restoration.”
The reason for going the extra mile is because the job isn’t soulless grind for some huge corporation.
Instead, Thanasis is “having a great time with these tasks and it’s been rewarding to gain an insight about the game’s complex and ambitious design, and how the original developers come up with clever solutions to technical hurdles of that era.”
And this is the reason why ScummVM is still always evolving. The people who are members of the project do it not for the money. They do it for many other reasons which are, in the end, more rewarding.
Each contributor has unique reasons for joining the project, but most of them learned about ScummVM when they worked on their personal projects.
“It was in 2003. I purchased a Russian localization of Full Throttle, and since I was on a FreeBSD back then, I started to look for a way to play the game. Google search showed up quickly ScummVM, I downloaded the sources, tried to compile, had a couple of compilation fixes, and then had the game crash almost immediately on the subtitle display. I fixed that: the localized fonts had a slightly different format, the original code was forgiving, and ScummVM reimplementation was not. Then I played the game, but a message popped up: “Set MineRoad – You can now jump the gorge.”, the bike fights were not implemented. I decided to pause my playing the game and implement it, and that is how I got hooked to the project.”
This is the story of how the current project leader, Eugene Sandulenko got into the ScummVM project.
He continued contributing because “I always liked adventure games, in my teenage age I was playing Space Quests, Gobliiins and Larry [Leisure Suit Larry titles], and those games brought my love to the genre.”
He also wanted for future generations to experience classic adventure titles.
“Later I discovered the whole world of Humongous Entertainment characters, and I wanted my kids to grow on those, this is where we spent countless evenings with Travis Howell aka Kirben and implemented those.”
Other people wanted a challenge. “Back when I’d first graduated university, I’d been drifting through doing various open source projects. Among other things, I’d created a tool for editing Ultima 6‘s maps and NPCs, and experimented with creating games in AGS. But my true passion has always been reverse engineering, going all the way back to my first computer in my youth, an Apple //e,” Paul Gilbert (dreammaster), who worked on porting 19 different engines to ScummVM, told us.
He then decided to “try tackling reverse engineering an entire DOS adventure game, and looking around, happened to settle on Lure of the Temptress. It was a game by Revolution Software that they’d made freely available.”
That’s where he “learned about ScummVM, which already supported Broken Sword 1 and 2, two other games by the company.”
“It [ScummVM] already supported two other Revolution games, in addition to other engines, but not Lure of the Temptress,” which was a reason enough for Paul to join the project.
“It seemed a good fit for the work I wanted to do. There was already a nice abstraction of the input/output layers, and backends for compiling ScummVM on multiple different systems, meaning the work I did would be able to be played by many different people.”
Other members of the community were a great help.
“The community was also very helpful in helping me to understand how ScummVM’s codebase was ordered, and giving me encouragement to keep working on re-implementing the game.”
The work on porting Lure of the Temptress proved to be quite a challenge, but a rewarding one.
“For me, completely re-implementing the game was the first significant disassembly I’d done, so there were many times when parts of the game were difficult to understand, and their support helped me stick with it.”
“I first learned about ScummVM while working on a side-project for the fan translation to Greek of a few classic LucasArts games (LOOM and Indiana Jones and the Last Crusade) around 2006,” is how Thanasis stumbled upon ScummVM.
“I needed to find more information about the structure of these games’ resources and how their engines worked, so ScummVM’s codebase, along with a few other sites that provided partial documentation, were really helpful.”
ScummVM was a great source of information for Thanasis, as well as an indispensable learning tool.
“As a software programmer I learn a lot from working with the other members of the team, studying the code, especially the smart techniques and solutions employed, and discussing future enhancements and expansions to the feature set.”
And, of course, there’s the love for the classics and open-source projects. “I was attracted to the idea behind the project, supporting beloved classic games on modern platforms, even platforms that they were not originally designed for, like mobile phones, tablets and consoles, while also providing fixes and quality of life improvements to the original experience.”
Thierry Crozat was a Mac user who wanted to play classic games on new Macintosh computers.
“I am a long-time Mac user, as I have been using those, and playing on those, since the late 80s. During that period Apple made several big transitions, both with their hardware and with their operating system. While they initially provided backward compatibility with some emulation those were eventually phased out. In particular when I bought my first Intel Mac in 2006 I found that I could no longer run old Mac OS 9 applications. Amongst those was one of my favorite game: Les Chevaliers de Baphomet. And that was the reason I eventually got involved with the ScummVM project.”
He then found out that his favorite game, that was in fact Broken Sword, couldn’t run on new Macs powered by Intel CPUs.
That’s when he decided to single-handedly make it happen.
“While at that point I had been using ScummVM for a few years, I had not realized that one of the games it supported, Broken Sword, was the same game I knew as Les Chevaliers de Baphomet. I only found out when I started to actively search for a way to run this game on my new Intel Mac. And at that point I also found out that it only supported the DOS version of the game. Since I could not find any other way that worked to play the game, and since I knew a bit of software development, I decided to have a stab at adding support for my Mac version of the game. This turned out to be quite easy, and a few weeks later I provided a patch to the ScummVM team to add support for that version. When that was accepted in November 2006, they also asked me if I wanted to join the team, and I did.”
Fond memories and frustrating experiences
Once a part of the project, people involved stay because of positive experiences and fond memories of working on various games.
They often work on their own favorites, something that is the best motivation a person can have. Because what’s better than making your favorite game available to new audiences. For people who wouldn’t be able to enjoy it without your commitment?
Eugene has lots of fond memories. He “loved the event-based system developed by Daniel Fox for Inherit the Earth, as part of his re-inherit project.” But also, the “best ROI which I got was from working on SCUMM engine for the Humongous Entertainment titles in 2005-7, as my kids were playing those.”
And finally, there’s the challenge part. “Also, it was kind of fun to work with Full Pipe, as the engine internals are quite challenging. It got me both joy and frustration, as it is over-engineered, especially their path finding.”
Paul holds the Discworld series of games closest to his heart. He’s a huge Discworld fan and his “favourite was working on the Tinsel engine for the Discworld games. As a Discworld fan, and not having previously played either game, I rewarded myself by being able to play through the games as we gradually added support for them.”
Projects like this one are the essence of the rewarding experience developers have while working on games they hold dear. “Even getting the game introductions to play, and then the first game room, and finally getting interactivity going were each eagerly anticipated.”
As with Eugene, Paul values the challenge. “The second game [Discworld II] in particular had its own issues. The original games had two separate sources, and whilst much of the engine was the same in both, there were still key differences.”
This led him to “Figuring out how the two games differed, and gradually retrofitting code from the second game into our re-implementation.” The task “proved both challenging and satisfying as we also got the 2nd game to play.”
Thanasis worked only on Blade Runner, making this title his favorite. But in the future, we hope he will be a part of many other projects that will bring him as much joy as porting Blade Runner.
But working on your dream open-source project isn’t a fairy tale and, at times, you will get mad as hell. For Eugene “The WORST game we were working on was Drascula. We worked from the original sources, and it was HORRIBLE and painful.”
But he wasn’t the only one left with lasting consequences. “I think Pawel Kolodziejski aka aquadran, who did most of the work, still wakes up at night in terror.”
For Paul, the MADS engine, which was used in adventure games made by MicroProse (studio founded by Sid Meier) and Sanctuary Woods, is his featured nightmare. As he explains, “as with the tSage engine, the MADS games also all have hard-coded logic.” But MADS had additional ways to complicate the reverse engineering attempts. “In the case of MADS, though, the core engine that the games share in common proved particularly difficult to reverse.”
This led to writing a new version of the MADS engine because “There was actually originally a combined engine of MADS and M4 [MADS version used by Sanctuary Woods], for their later games like Orion Burger.” The team cancelled the attempt to combine two versions of the engine. Maintaining it in working order was impossible because of the complexity of MADS. This meant that “work on a stand-alone MADS engine restarted from scratch.”
As you can see, even your passion project can give a serious headache. But you put aside any negative experience the moment your favorite game starts working. Or when you enable your kids to play games you played when you were their age.
Joys and quirks of working on ScummVM
Working with other people, who are located all over the world can be difficult at times. But mostly, it’s fun times.
For Eugene “There were ups and downs, we had people join, do a gig and go, some stayed for all these years, some left with a drama, but in overall it was a pleasant experience.”
Paul’s experience is a positive one.
“It’s been fun. Many of the engines I’ve worked on since have been mainly on my one, but a few of the more interesting ones have been in groups.”
He remembers working on the Tinsel engine, the one used for Discworld titles. “There was a larger group of us working on the engine, and it required work to make sure we didn’t end up working at cross-purposes. Even with the original sources, it took us a lot of work to clean up the code and refactor it. Some parts of the video code was even written in assembly, and we had to write new C code from scratch for it.”
Another Paul’s cooperation was also a fun and positive experience. “I’ve also worked on several engines with another co-developer, Strangerke. Those too have been fun, in their own way.”
The unique way of having fun grew from unique challenges that stemmed from porting those engines.
“We worked on the TsAGE engine together, which implements several adventures from Tsunami Media. Each of these games had logic for the games hard-coded into the games’ executables, rather than in the games’ data files. Which meant that re-implementing each game required laboriously disassembling the game scripts for each of the games’ scenes one at a time.”
Ultimately, for Paul, “Having a co-developer helped immensely, as we could encourage each other, share our understanding of how the scripts commonly worked, and compete to finish half of the game each.”
Thanasis also describes working with other members in positive ways. “My experience working with other members of the team is absolutely positive.” He goes even further, explaining that “working on the ScummVM Blade Runner engine specifically is one of the best collaborations I’ve had since I’ve been a software engineer and that is about a sixteen years span. I’m really happy with the quality of the end result on the game [Blade Runner] too.”
Thierry had mostly positive experiences.
“Working with other contributors has been sometimes fun, rewarding, challenging, and frustrating. Communication has been one of the main challenges as most of us don’t know each others personally, and there is a lot of scope for misunderstanding when communicating mostly by writing (emails, chats, bug tracker, pull requests, …).”
One of his remarks puts into perspective the uniqueness of working on a project that has developers from all over the world. “You also need to deal with cultural differences as the project as developers from all around the world, and with strong characters. So it has been quite different from my day job working in an open space with my colleagues right next to me, and I have learned a lot.”
Despite some negative experiences, Thierry grew as a person while working on ScummVM.
The project also allowed him to learn a lot of new stuff. “Since my background is actually not in computer science, and the ScummVM project is one that can be quite technical, I have learned a lot in software development, reverse engineering, and quirks of exotic platforms as well.”
Lack of contributors and other hurdles for ScummVM
The biggest hurdle is the lack of developers and contributors.
Eugene says that this “comes from the lack of low-hanging fruits.”
In other words, most popular games are already ported. What’s left is either less popular titles or those who are extra challenging to reverse engineer. “That makes the threshold to enter the project relatively high.”
Paul Gilbert expresses similar thoughts.
But, he’s more concerned about maintaining ScummVM usable on various supported platforms in the future: “[The biggest hurdle for ScummVM is] finding developers willing to maintain the various backends we support for running ScummVM on various different computers, game consoles, and portables.”
The issue is that even slight changes in operating systems supported by ScummVM can lead to the program failing to work. And “if we don’t have anyone maintaining the system, there’s no easy way for us to know how to update our code.”
Thierry notes that “There is always a worry that the project may decay due to a diminishing number of contributors and lack of activity.”
But the team behind ScummVM is “also always interested in expanding ScummVM’s support to entirely new systems as well.” If you’re interested in ScummVM and are part of the development community of a system that isn’t supported at the moment you’re welcome to join the team. You can do that by visiting the ScummVM Discord server and official forums.
Thanasis concurs with his peers. “Within my small time involvement with the project I’d say one big challenge is to get volunteers engaged in contributing with aspects of ScummVM that can improve people’s experience and understanding of the software.”
He clarifies that “it is quite a challenge to keep the project’s documentation on the wiki or the website updated and at the same time organized and presented in a user friendly and easy to understand manner.” If you want to help, contact the community via official channels listed above.
Thanasis lists another issue preventing users from experiencing ScummVM in all its glory. “I also often get the impression that a few people who use our software to play classic games may not be aware of the extra options and features that ScummVM offers, or how to access them, or their functionality may be unclear, and there have been occasions where people will speak of having difficulties even with setting up the games with ScummVM.”
Joining the ScummVM developer community
Everyone with programming knowledge is welcome to join the ScummVM developer community.
Eugene is crystal clear when he says that “We need devs. Especially Android and iOS devs. The work for somebody who knows these platforms well is not that big, and these ports are quite popular. The frustration around the lack of devs for Android is especially big since we have over 500,000 installations.”
You don’t have to be an expert coder in order to contribute. According to Thanasis “Our team welcomes suggestions for improvement and appreciate any contribution, however small, that is in the spirit of improving or expanding the project. It’s a great way to practice and perfect one’s programming skills and a very rewarding experience to have helped so that a lot of people will get to play the best version possible for the supported games.”
But if you’re not a programmer, don’t worry, the project is in need of many other specialists. Paul states that “There are improvements that could be done to audio code for the audiophiles among you, or supporting text to speech or subtitles in more of the game engines.”
“There are subsystems like the graphical filters that graphic enthusiasts could work on. So all you graphic designers, feel free to join the project.” Eugene also thinks they could provide beneficial work. “We would benefit a lot from design work, particularly help with redesigning of our internal GUI to make it modern and touch-friendly.”
All three of them are also calling all those who would want to help with the Wiki page and documentation. “We need documentation writers. Our User Manual is ever getting obsolete, and we also would like to start developing initial tutorials for people who install ScummVM. So, even non-devs could help.” And if you have lots of free time to test games and submit bugs, the team always needs more testers.
Paul also calls everyone who might provide official source files for adventure and role-playing games (ScummVM team started porting classic RPG games a while ago). “The group is also always on the lookout for original sources for any adventure or role-playing games. If anyone previously worked in a game company in the previous decades, and still has access to the source code for any of the games, we’d love to hear from you.”
What’s the future for ScummVM?
Despite the chronic lack of contributors, the future looks bright for ScummVM. Eugene and Paul are excited about bringing RPG games to the ScummVM family. “Since a couple of years, we started to embrace RPGs, and that will keep us busy for a while.” Some RPG games are already supported such as Might and Magic titles. Others, such as Ultima games, are in the process of being ported.
For Thanasis, the future is all about improving accessibility. “I am a big fan of the recent work on accessibility features, such as the Text to Speech support which is already expanding to include speech support for old games that only had text interface and subtitles.”
The team is also working on implementing subtitle support to more and more engines: “I want to see more engines including support for subtitles, even if the original titles did not offer it, for multiple languages with the help from fans in the gaming community.”
For Paul, the dream is for “the sister project ResidualVM, which focused on 3D adventure games, to be merged back into ScummVM sooner or later. So I foresee that eventually ScummVM will stand as a central hub for playing any kind of story-based game, be it text adventure, point-and-click, or role playing, 2D or 3D.”
Finally, Thierry believes that “In the future [ScummVM] will probably be expanded to include some other related genres, such as hidden object games or visual novels.”
Unlike Paul, Thierry believes that ScummVM and ResidualVM will stay separate. “There have also been discussions of merging it with ResidualVM, which would bring support for 3D games and not just 2D into ScummVM instead of having two separate projects. But while some fairly recent game get supported, and some engines such as Wintermute have authoring tools that allow making new games, I think the project will remain focused on support for old video games, and helping preserve those, and I don’t see ScummVM shifting its focus to making or supporting new games.”
ScummVM started as a humble project of two students, Vincent and Ludvig, who wanted to re-engineer adventure games. Almost two decades later, the project grew exponentially.
Recently, they started adding classic RPG titles to ScummVM. Their goal is creating a universal platform capable of playing any kind of story-based game. A platform that’s free and available to everyone. That’s a selfless goal if we’ve ever seen one.
So we wish them the best of luck and hope that, in the future, ScummVM will only grow and become better and better!