[Scummvm-devel] What is happening to the ScummVM team?

Filippos Karapetis philipk79 at hotmail.com
Fri Feb 13 10:27:34 CET 2009


Good morning everyone

I've just read the very interesting e-mails sent to -devel last night, and I'd like to share some thoughts too.

I'd like to speak about ITE first, as I'm the current engine maintainer of the SAGA engine.

(note: ITE = "Inherit the Earth: Quest for the Orb" and IHNM = "I Have No Mouth, And I Must Scream")

The SAGA engine is based on the old reinherit project, plus source code which we have been given from
the current copyright holders (Wyrmkeep). The engine was used for ITE and later on for IHNM. It was
then used for another game, Nick of Time, which was sadly never released. Then, the engine was
rewritten to be more object-oriented, and two more games were based on it: Dinotopia and Faery
Tale Adventure 2: Halls of the Dead (which is in fact an RPG game, not an adventure).

Several people have worked on this engine, including h00ligan/ajax3184 (I hope I got the username
right), sev and eriktorbjorn. When I first started working on the engine, ITE was supported with some
glitches and unexpected crashes (which were related to MIDI music). IHNM was partially working, with
several glitches and major bugs.

I joined the team 3 years ago, and started working on the SAGA engine (and partially on the AGI engine)
back then. This was the first time I was involved with an OSS project. Personally, I can blame myself
for several things. For example, I haven't been very good with communication, and I wrote code which 
in retrospect I should have tested more. Speaking for myself, it has been a great learning experience
coding for a project like this. I've improved my programming skills based on the observations from others
as well as from code I have seen from other developers.

It is a fact that ITE was problematic in two major stable versions. There were several different versions
of the game, and the major differences were in the way its audio files were coded, as well as the
endianess in which its data files were saved in. In version 0.11.0, the game was not playable in some
platforms, because I had worked back then to replace the numerous different detection entries for
each version with calls to File::exists(). That proved to simplify things a lot, and everything was
working fine in the major desktop platforms (i.e. Windows, *nix and MacOS). Then, there was the
major change to the file system, based off the GSoC work. This was all great, but as LordHoto
mentioned, it broke File::exists() in several platforms. Given that SAGA is one of the few engines
that use exists(), I believe noone had tested the SAGA games in platforms where exists() was broken.
(which were less popular platforms). 

In ITE, we also bypass the copy protection of the game, with permission from the current copyright
holders of the game. This copy protection was shown halfway through the game (at a door in the rat
maze). This special door was in fact a bit different from other objects in the game, as the protection
would kick in when the player wished to open it, which lead to some glitches at that part of the game.
When trying to fix one of these glitches, I accidentally broke the game, and it would crash when
exiting the rat maze area. Hence, version 0.11.1 was released, which fixed the problem in the engine
itself, as well as the problem in the file system backend. The two issues were not related to each
other, but they affected the same game.

In version 0.12.0, another issue was fixed, which was in fact a regression from the changes with IHNM:
an animation in ITE was all wrong. That issue was reported some days before the actual release of
version 0.12.0. I then went to fix that particular issue, but this also lead to another regression, which
affected a different part of the game (an animation sequence of a storm), causing a crash. There wasn't
any subsequent stable version of ScummVM, so this problematic scene could be passed with an earlier
stable version, or the current unstable version.

The issues themselves weren't found out till after the stable versions were released, because there
wasn't sufficient testing, as LordHoto mentioned. The problem is that these games aren't as popular
as the more well-known Lucasarts games, and during testing, people didn't try to complete them in
non-desktop platforms, which were some of the reasons that the issues weren't discovered until it
was too late. Another issue is that there aren't frequent builds of the unstable version of ScummVM,
which means that issues that appear in certain platforms won't be discovered till a stable version of
ScummVM has been released.

So, to sum it up, although testing can greatly help in determining these issues, the main problem is that
all games need to be tested under all platforms that ScummVM runs under, which is a very lengthy and
hard process. Unfortunately, such bugs might pop up, especially in engines that are actively developed
and new features are added. I'm not sure what the best course of action is, other than having regular
builds of the unstable version for all platforms, so that people can test all games properly. Unfortunately,
this is not easy...

I'll try and reply to the other issues mentioned too

Regards
Filippos Karapetis


_________________________________________________________________
Windows Liveā„¢: E-mail. Chat. Share. Get more ways to connect. 
http://windowslive.com/howitworks?ocid=TXT_TAGLM_WL_t2_allup_howitworks_022009
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scummvm.org/pipermail/scummvm-devel/attachments/20090213/46162dea/attachment.html>


More information about the Scummvm-devel mailing list