We're back with GOG.com Affiliate Spotlight, where we're highlighting the sites that are among our affiliates and help us spread the good word about GOG.com.
This time the spotlight is on ScummVM and its creators. What is ScummVM? Quoting the project's homepage: "ScummVM is a program which allows you to run certain classic graphical point-and-click adventure games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the games, allowing you to play them on systems for which they were never designed!". The program was originally designed to play LucasArts' adventure games that used SCUMM system, but it evolved through the years and now allows to play lots of other games on platforms other than those on which they were originally designed for.
We managed to ask couple questions to the two main guys taking care of ScummVM at the moment - Max Horn and Eugene Sandulenko.
Could you briefly tell us how you started developing the ScummVM software? How many people are working on the program at the moment?
Max: To be clear, none of the currently active ScummVM developers started the project; the original founders have long left us. In my opinion, this perfectly showcases the vitality of the project: We have a constant influx of new developers, so even though some old hands "retire", the project stays alive.
If you want to know about the general origin of ScummVM, we have a short article on that on our Wiki.
As for my own starts on ScummVM: In April 2002, somehow I felt like replaying some of my most favorite games of all times: Monkey Island 1 and 2. Now I am a Mac guy through and through, but still the only versions of these games I owned were for IBM PC running DOS -- and I didn't have access to such a machine (anymore) at that time. After some searching around, I stumbled across the ScummVM project. At that time I already was involved with various open source projects (such as Exult, Fink, and others), and so this naturally intrigued me. I tried to get it to work on my Mac OS X machine, and doing so, came across some issues, for which I submitted patches. Shortly after my first contacts, I got commit access for the team. And not that long afterwards, I somehow got promoted to co-project lead. I actually don't recall when it exactly happened, but sometimes in May 2003 (about one year after I joined in), I was managing a release, and so it happened sometimes inbetween.
As for the number of active developers, I think we have about 40-50 people right now working actively on ScummVM.
Eugene: Originally the project was started by Ludvig Strigeus aka ludde and Vincent Hamm, but they left pretty soon, after the games of their interest started to work. From the early start of the project we were supporting more than one engine, when ludde started to work on AGOS which is used for Simon the Sorcerer games.
I joined the project in October of 2003, when I bought Russian version of Full Throttle and wanted to run it on my FreeBSD machine. I quickly found ScummVM, but the engine was crashing on the first attempt to show localized resources. After fixing it I started to look into INSANE subengine. I did not understand first, why everybody wishes me success with it, but later when I started to look into that insane mess, I realized both their behaviour and the nickname of the engine. In general it took me about 3 months of long evenings after my daily job to RE it. Some of our current engines are even simpler than that one.
About a year later I started to manage the release process, and soon I started to play more significant role in the team, sticking my nose in many parts of it. I still do manage releases and trying to guide folks in the overall development.
According to ohloh, we have 49 developers who recently committed their code. I'd say it's a quite big team. In our history we had over 100 contributors with SVN access, and over 130 developers submitting their patches.
What were the biggest challenges when starting the whole project?
Eugene: There were two main things. First, which lies in the core of the project in Reverse Engineering. A typical engine is a several hundred kilobytes of machine code which mainly consists of hex numbers. Out of that lump a developer has to understand the moving parts, their purpose, give them names and finally write a working and tested code which will match the original behaviour. Typically it takes several months for an experienced developer when engine starts working, and could take couple of years more to get everything fixed and ready for production.
Next challenge was to lie down architecture which could serve several conflicting requirements. One of them, which ScummVM is famous for is portability. Supporting over 30 platforms with really different internals is not piece of cake. This conflicts with maintainability, because to manage over 1.2 millions of code so it will not turn into a horrible mess is a constant fight with features and coding approaches of individual developers. Yaz0r and ludde made an extraordinary work coming up with OSystem, a framework which puts life into ScummVM.
There's a big difference between saying to yourself, "Man, someone should totally write a program so I can play Quest for Glory on my new quad core rig," and saying, "Man, I should totally write that program!" What made you decide that you were the people to do it?
Eugene: This is where power of open source lies. When developers join the project today, they need to focus only on narrow scope of their interest (if they do not happen to be co-leaders :) ). The framework is there, the portability issues are addressed, the tutorials are written. It was same for me. Most probably I wouldn't dare to start adding Full Throttle support from the scratch, but adding last 30% to its 70% seemed and turned to be absolutely doable.
I am a software developer, so I love when I am able to look into program internals and fix things than rely on someone else. Well, sometimes the architecture of a program looks horrible, so I have no choice but rely on other developers, but it was not the case with ScummVM.
Max: Well, as I explained above, we are not really the right people to ask that ;). But I can tell you how I came to say "Man, I should totally work on that program!". You see, I had this need (I wanted to play some old adventures), and there was this app that promised to satisfy this need -- if only I could get it to work smoothly on my machine. And then later I wanted to play more games, but they were only partially supported. In my case, that was "Monkey Island 3: The Curse of Monkey Island". I never had played that game, but got myself a copy from Ebay, and now I wanted to play it on my Mac. But ScummVM did not yet support it, and I was told it would be years before there was a chance for that.
Now I always liked tinkering, and if there is a problem and I feel as if I *might* be able to solve it, I like looking into it. So I did. And I quickly got some good initial results. And the fun part was that there were these other guys who also were interested in this, and I think my tinkering motivated some of them to look again at that problem. And from there it got a lot of momentum, and we had initial support for COMI in just a few weeks. It took a lot longer to make it really fully usable and supported, but this really got me hooked!
In mid-December you released a new version of ScummVM. Can you explain what changes have been made?
Eugene: December release was a maintenance release, where we added couple of GUI translations and fixed dozen of bugs, but our October release, 1.2.0 aka "FaSCInating release" was a significant milestone in the history of our project.
First of all, this was result of 1.5 years of effort of merging with FreeSCI project, and added support of more than 40 Sierra SCI games.
It was quite unexpected thing, but merge with ScummVM truly boosted SCI engine development rocket high, and the level of game support exceeded last FreeSCI release right away.
Another important thing which was introduced in that release is support from GUI translations. This was a long awaited feature, was requested practically on a monthly basis, and finally we implemented it.
Also that release had first official Android port, support for Caanoo, Dingux and OpenPandora devices. GUI was improved too. Number of improvements in majority of engines was also made, as well as improving several of our long-standing ports.
What are you working on right now? What are the most requested features by ScummVM users?
Max: The team is always busy and working on tons of stuff. For example, our next release will once more support several new games (such as Toonstruck and Urban Runner). Beyond that, support for many more new games is in the works, and hopefully will be included in a future release (but maybe not the next one). Among these are Myst, The Last Express, newer Sierra SCI adventures and the Hugo trilogy.
Of course we also work on improving support for existing games, and the overall ScummVM user experience. We have some pretty nice ideas for the latter, though it's not yet quite clear whether can implement all that.
Somehow, it's easy to find people to work on engines (that's a lot of fun, kind of like doing complicated puzzles), but it is much harder to find people who like polishing user interfaces, or ports to other platforms. :-)
Eugene: Also thanks to excellent Google Summer of Code work by Jody Northup ScummVM now supports arbitrary bit depth graphics. This opens doors to newer games from Windows era which typically used high color graphics.
Particularly already mentioned Urban Runner has 16-bit videos, and in-progress engine for fan-made game "Broken Sword 2.5" has marvelous 1024x768x16bit game.
Recently we acquired source code for several games, including Hugo trilogy and Dreamweb, and we are constantly looking forward for new additions and developers.
Moreover, next Google Summer of Code has been announced and we will apply for participation this year too. If our application will be accepted, it will speed up the development in several areas of the program.
We are getting constant flow of requests from our userbase. Particularly people are always demanding development for the most recent platforms such as Samsung Bada and Symbian^3, but it is not always easy with those since we need at least three things: the developer, the device and open legal SDK for the platform. Still from time to time we're adding new platforms.
Another big thing that the users are asking is support for additional games. Unfortunately not everyone wants to understand that ScummVM scope is 2-d point and click adventures, still even with adventures there are hundreds of not yet supported games. Of course, as it was already mentioned, it is a lot of work to add support for a completely new game, even when there is an original source code provided.
Nevertheless there are over a dozen of engines which are being developed outside of our main tree and probably will be added someday to the master repository.
Also there are some requests which we are not willing to implement for various reasons. Those are: adding support for XBox (no full-blown open SDK), adding more scalers (we need to extend our plugin architecture for that, so it's /a lot/ of work for a small gain), adding running games out of archives (we believe that it will ease life of pirates and also it is very difficult to implement in a portable way) and adding support for 'Duke Nukem Forever', because it is not an adventure game and hasn't been released yet.
What did you think about GOG.com when we first approached you and asked about using ScummVM?
Eugene: When we heard about GOG.com, that was a tremendous thing. The main reason is that we saw your intentions to revive old games and make them available. It used to be difficult to find some titles, but now it is a matter of couple of clicks and you own a legal copy of an old classic.
Max:Max: I must admit at first I was a bit skeptical. But this quickly changed to enthusiasm, and today I am very happy GOG exists, and helps keep many great classics alive, and easily accessible.
What games you'd like to see revived by GOG? And what is your favourite game of all-time?
Eugene: I would personally like two excellent adventure games to be preserved which are The Neverhood and Full Pipe. The former is an instant classic while latter is an underdog with enormous atmosphere.
As of the favorite games, those are Space Quest 3 and Full Throttle, both are supported by ScummVM now.
Max: We often have people who ask us where they can obtain games supported by ScummVM legally, and being able to point them to GOG.com is very handy. Hence, I naturally hope that you can add even more adventure games, be it old or new ones :).
As for my favorite game of all-time... I think it depends on personal mood and genre. As for ScummVM supported games, it would be Monkey Island 2, though I also like The Dig a lot.
Are you playing only old adventure games or are there some classics from other genres you love to play over and over again?
Max: Tetris! :) Ultima 7 and 8. And I wish I had time for more, e.g. Colonization, OMF 2097, ...
Eugene: I do not even have much time to play adventure games :). These days I prefer to use that time for hacking on ScummVM, though I cannot avoid playtesting sometimes. I used to love jRPGs from SquareSoft, mainly the Final Fantasy, but there is not much time for those either.
What about new games? What's your stance towards new games versus old ones?
Max: There are some absolutely fantastic new games. And pretty bad old games. In fact I think the average quality of games has tremendously improved in the past decades. StarCraft II, Heavy Rain or Mass Effect 2 just go way beyond anything that was possible back then. But at the same time, there are some real gems among old games; if you add in some childhood memories, there is really quite some attraction towards playing this.
Eugene: Oh yeah, I heard about Heavy Rain, but I don't own the console to play it. Besides, one of the engine developers of this game is Vincent Hamm aka Yaz0r, one of ScummVM founders.
I am feeling pity that FPSes killed adventure genre, and there is so much violence in modern games that I am afraid for my children. Still there are many gems, especially I am thrilled by breakthrough brought by iOS devices which made games much closer to the people. As of the particular titles, I enjoyed Portal a lot, and looking forward for the sequel.
A lot of open source projects stall out. What has kept the ScummVM project going strong for 10 years?
Max: Hard to pin it down, so I can only give my personal guess on what factors contributed to this... Like the fact that reverse engineering old games is a bit like solving a puzzle and so very attractive and fun for a certain kind of person... a lively community... good code infrastructure, which made it increasingly easier over the years to add new games and new ports... and last but not least, I think a good internal atmosphere and (here I might be biased for obvious reasons ;)
Eugene: We are constantly working on spreading the word and supporting newcomers. We do our best to be open and friendly. Of course, pretty often there is lack of time, still we have constant flow of new developers. And despite the fact that several excellent guys stepped down from the development, the team continues to increase in its size.
Another thing to mention is a really outstanding code quality. I work with commercial code as part of my daily job, and I must confess I rarely if ever saw so nicely written code and so transparent and logical architecture. I know that experience with ScummVM helped several of our team members to get a very good job, even in gaming industry.
Also there are always new devices for ScummVM to be ported on, and there are zillions of interesting adventure games which could potentially be added to the project. Thus, flow of new ideas and approaches makes ScummVM attractive for active developers.
ScummVM has moved far beyond the scope of SCUMM games. What made the ScummVM team decide to carry on after you'd gotten through all of the classic LucasArts adventure games?
Max: If you are on a streak, why stop early? :) But seriously, often it's outsiders that approach us. They have already started working on support for some game / engine and ask whether they can join the umbrella of our project. And sometimes, experienced team members start working on new games, maybe because what they worked on so far has become complete and stable enough to become boring to them, just like a solved puzzle ;-).
Eugene: Actually first non-SCUMM engine was added back in 2002, and support for Simon the Sorcerer was present in 0.2.0 release. So ScummVM always supported more than one engine.
Today it works similar to a vendor lock. If somebody wants to reimplement some game, he has to either bother about portability doing it from the scratch, or join ScummVM where all the grunt work of supporting platforms has been already done. Also learning curve for ScummVM is really sloping, not steep.
Aside of developing ScummVM, what do you do for living?
Eugene: I used to work as a software developer, and now I am on position of Program Management Director in an IT company, I manage big projects, and not even one. Also I am open to new opportunities too :)
Max: I am a mathematician, working in group theory and geometry, a part of pure math, and am currently working (read: teaching and researching) at a University in Germany. Hopefully I'll eventually manage to get a position as a tenured professor; if not, I guess I'll try to get a job at some other interesting place, such as Google ;).
Thank you both for your time and of course for the great work you're doing with the ScummVM software.