ScummVM
ScummVM (Scumm Virtual Machine, Scumm virtual machine in Spanish) is a computer program that allows you to run graphic adventures originally created for the LucasArts SCUMM engine. ScummVM also supports a variety of games that do not use the SCUMM engine, made by companies like Revolution Software or Adventure Soft.
As the name suggests, ScummVM runs games through a virtual machine, using only its data files, thus replacing the executables the game was originally released with. This allows games to run on systems for which they were never designed, such as Wii, PocketPCs, PalmOS, Nintendo DS, PSP, PlayStation 3, Linux, Xbox, or cell phones.
ScummVM is licensed under the GNU GPL so it is free software.
X-ray
This is a small study done on the free software project ScummVM.
History
Created by Ludvig Strigeus (Ludde) during September 2001, when he was trying to create his own graphic adventure engine; To carry out this, he began to investigate the internal functioning of the Scumm (owned by LucasArts), in order to borrow ideas from it, but during this stage an idea arose in Ludde's mind, that of creating an interpreter able to run the game Monkey Island 2 (MI2), so he started using a disassembler and working on his idea.
Its initial version was 0.0.1, which began to be distributed among the community of fans of graphic adventures, specifically among those who were developers. It contained very limited functionality but it served as inspiration for them to join the project, managing to release its first public version on January 13, 2002, and its name was ScummVM 0.1.0. This version was very functional and had basic support for games up to version number 7 of Scumm (LucasArts), then over time compatibility for various games and various platforms has been added.
Development
The ScummVM virtual machine or emulator is a project that many of its collaborators have described as a fascinating and learning experience, not only because they have to learn new programming techniques and reverse engineering to be able to collaborate on it. themselves, but also because they must study the programmers they are trying to emulate (the ones at LucasArts) and figure out ways their original methodologies and techniques can be improved.
ScummVM started out primarily being developed in the C language, encapsulated within a few C++ classes, but then as the project matured and new programmers joined who brought new perspectives to it (such as James Brown), the project was migrated. to C++. This migration was done primarily because they wanted to add support for new cross-platforms and games to the program, and C++'s object inheritance made the code easier to understand by other developers. Although C++ was the language chosen for its implementation, the use of other languages during its development was crucial, for example Perl was used several times to carry out prototypes and test various functionalities; They also proceeded to use tools written in other languages such as Delphi, developed by people close to the project, whose only function was to collect information on the internal functioning of the Scumm so that, together with the information obtained from the disassembler, they would allow engineering tasks to be carried out. reverse of it.
Similarly, code belonging to other free software projects was used to develop ScummVM, such as the Simple DirectMedia Layer (SDL) library, the advanced 2x scaling and interpolation engine (Kreed's 2xSaI), the Ogg Vorbis codec and the MAD audio decoding library, mainly to provide audio compression with the idea of making them more portable and can be executed on mobile devices such as iPAQs or cell phones.
Another important thing is that the original LucasArts Scumm has about 8 versions each of which has its own quirks, modifications, quirks and was sometimes modified for just one game. Each game has a different Scumm interpreter, so one of the problems ScummVM ran into was how to support these multiple versions of the interpreter in a single source tree.
Project Decision Structure
The ScummVM project has properties of a meritocracy, that is, the more achievements a person has, the more weight their opinion has. For example, someone who has written two libraries and maintains one port (platform-specific version) has a more weighty opinion than someone who has never written a line of code and just reports bugs.
In the project there is no authority that controls the processes that are being developed or strictly plans what is going to happen. Leadership and decision making has the characteristics of a decentralized benevolent dictator in a bazaar environment, according to Max Horn alias fingolfin (one of the project's benevolent dictators), where all work is divided into sub-teams that decide how to do things. things their way, but sometimes they are told how the project leaders would like things done or what they don't like about something. Newly submitted patches are reviewed and forced to meet the project's coding guidelines before being accepted.
In terms of communication between project developers, their main method is the #scummvm IRC channel on irc.freenode.net, where they discuss all the work being done. However, for major decisions they post a draft proposal to the -devel topic, and a wiki for the proposal is probably created, and then all interested parties make comments and give feedback. An example of this is when they proposed to switch from CVS to SVN: they collected arguments among developers for and against both, to later make a decision as to which one to use.
Current state
Over time, ScummVM has evolved from an attempt to write a LucasArts Scumm interpreter into a free and portable program that allows you to play the usual point and click adventure games like Simon the Sorcerer 1 & 2 (Adventure Soft), Monkey Island (LucasArts), The Day of the Tentacle (LucasArts), Sam and Max (LucasArts) and any other Scumm-based game on various operating systems or platforms and most languages in which they were released maintaining the original fidelity of the title.
Currently the latest version of ScummVM released is 1.9.0 under the GNU license, which has support for more than 80 games and 20 supported platforms included and others in unsupported experimental versions and also has work in development for support new games and in process the development of a new GUI environment for it.
Analysis of the source code
The ScummVM project in its version 0.8.2 has been applied the COCOMO model to estimate the investment and effort that would be necessary to use in the generation of software of identical size, as well as its SVN repository has been studied source code to get some of its stats.
Website | http://www.scummvm.org |
---|---|
Start of the Project | 2001 |
License | GNU v2 or later |
Current version | 0.8.2 |
Source code lines | 299.729 |
Cost estimate | $10,769.780 |
Estimated development effort | 79.73 person/years (956.70 person/months) |
Estimated implementation time | 2.83 years (33.93 months) |
Estimate of approximate number of developers | 28,19 |
Approximate number of developers | 41 |
Development aid tools | CVS at first, SVN currently, mailing lists, forums, wikis. |
According to the estimates of the COCOMO model, a company that wanted to create software of approximately 300,000 lines of code like ScummVM would have to invest almost 11 million dollars to obtain it. The time that would have to wait is around three years, the average number of full-time programmers that should be employed would be around 140 and the estimated development effort would be 79.73 person/years.
Programming Language | Code lines | Percentage |
---|---|---|
C++ | 268319 | 89.52% |
C | 24396 | 8.14% |
Ensambling | 4139 | 1.38% |
Shell | 2362 | 0.79% |
Perl | 513 | 0.17% |
Regarding the programming languages, C++ and C are correspondingly the most used languages (as explained in the ScummVM Development section), this is because the project makes use of C++ code to carry out an implementation oriented to software objects, it is also noted that a language used with some regularity is the assembler and the others perform extra tasks such as helping in its installation/compilation.
As a last point, this project has daily snapshots and game completion tests, and also has the following activity in its SVN repository (to which they were migrated on February 6, 2006) at February 25, 2006 at 7:00 p.m.:
Category | Value |
---|---|
Commits of the day | 47 |
Commits of the previous day | 50 |
Week commits | 154 |
Total Commits | 243 |
Lifetime of the repository | 1.6 Weeks (SVN when on that date) |
Average estimated time between commits | 1.1 h between messages |
Platforms supported by the official version
With portability in mind, there are official versions of ScummVM for the following platforms:
- Beloved
- Bada
- Beos
- Dreamcast
- FreeBSD
- Linux
- Mac OS X
- Nintendo 3DS
- Maemo
- Morphos
- OS/2
- Palm OS
- PlayStation 2
- PSP
- Symbian OS
- Solaris
- WinCE
- Windows
- Gp2x F100
- Gp2x F200
- Gp2x Wiz
- Nintendo DS
- Wii
- iPhone, iPhone 3G
- Android
Platforms supported by unofficial versions
- GP2X and GP2X Wiz
- GP32
- Sony PSP
- Nokia 770 Internet Tablet
- Tapwave Zodiac
- Xbox
- Wii
- Dingoo A-320
- slatedroid Eken M001
Supported games
For a complete and up-to-date list, see the official compatibility list.
LucasArts SCUMM Games
- Maniac Mansion
- Zak McKracken and the Alien Mindbenders
- Indiana Jones and the Last Crusade: The Graphic Adventure
- Loom
- Indiana Jones and the Fate of Atlantis
- The Secret of Monkey Island
- Monkey Island 2: LeChuck's Revenge
- The Curse of Monkey Island
- Day of the Tentacle
- Sam & Max Hit the Road
- Full Throttle
- The Dig
- Passport to Adventure
Sierra AGI Games
- The Black Cauldron
- The Bizarre Adventures of Woodruff and the Schnibble
- Gold Rush!
- Gobliiins
- Gobliiins 2: The Prince Buffoon
- Goblins Quest 3
- King's Quest I
- King's Quest II
- King's Quest III
- King's Quest IV
- Leisure Suit Larry in the Land of the Lounge Lizards
- Lost in Time
- Mixed-Up Mother Goose
- Manhunter 1: New York
- Manhunter 2: San Francisco
- Mickey's Space Adventure
- Playtoons 1: Uncle Archibald
- Playtoons 2: The Case of the Counterfeit Collaborator
- Playtoons 3: The Secret of the Castle
- Playtoons 4: The Mandarin Prince
- Playtoons 5: The Stone of Wakan
- Police Quest I: In Pursuit of the Death Angel
- Space Quest I: The Sarien Encounter
- Space Quest II: Vohaul's Revenge
- Winnie the Pooh in the Hundred Acre Wood
- Fanmade Games
Games from other developers
Several Humongous Entertainment games use the SCUMM engine, so support for them has been added. In addition, these games are also supported:
- Beneath to Steel Sky
- Broken Sword: The Secret of Templars
- Broken Sword II: The forces of evil
- Elvira
- Elvira 2
- Flight of the Amazon Queen
- Future Wars
- Gobliiins
- Gobliiins 2: The Prince Buffoon
- Goblins Quest 3
- I Have No Mouth, and I Must Scream
- Inherit the Earth: Quest for the Orb
- Lost in Time
- Lure of the Temptress
- The Neverhood
- Nippon Safes Inc.
- Simon The Sorcerer
- Simon the Sorcerer II: The lion, the magician and the closet
- Simon the Sorcerer's Puzzle Pack
- The 7th Guest
- The Bizarre Adventures of Woodruff and the Schnibble
- The Feeble Files
- The Legend of Kyrandia Book One
- The Legend of Kyrandia Book Two: The Hand of Fate
- The Legend of Kyrandia Book Three: Malcolm's Revenge
- Touché: The Adventures of the Fifth Musketeer
- Waxworks (Elvira 3)
- Ween: The Prophecy
Getting the games
Due to copyright restrictions, ScummVM does not include game data, so users must have the original games.
During the development cycle of version 0.5.0 which was released on August 2, 2003, Revolution Software helped ScummVM developers add support for Beneath a Steel Sky by giving them the free original source code. In addition, they decided to offer the game for free, available for download from the ScummVM website. A few months later, the owners of Flight of the Amazon Queen did something similar.
Unfortunately, the cutscenes for Broken Sword 1 and 2 do not work as they come on the original discs. This is because the scenes are encoded using the Smacker video format, which requires specialized software to decode. RAD Game Tools does not seem interested in providing the source code for old versions of its format, and has expressly asked the ScummVM team not to reverse engineer it. However, Revolution Software has allowed the recoding of the videos and their hosting on the ScummVM page.
Contenido relacionado
NetBEUI
Fourth generation of computers
Forth