Open main menu

Difference between revisions of "Summer of Code/Application/2007"

m
→‎About ScummVM: Modified wording. As this is our intro statement, text should flow with as little hickups as possible (I hope)
m (→‎About ScummVM: Modified wording. As this is our intro statement, text should flow with as little hickups as possible (I hope))
Line 30: Line 30:
== About ScummVM ==
== About ScummVM ==


The ScummVM project aims to allow users to run many old (and not so old) commercial graphical point-and-click adventure games (e.g. Monkey Island, Simon the Sorcerer, Space Quest, and many more), provided you already own their data files. To this end, the team works by either reverse engineering game executables (usually with the permission of creators of the game), or by using the original source code of the games (provided by the creators of the games, after negotiations with the team). The number of engines is constantly growing thanks to a very agile and diversified development team.
The ScummVM project aims to allow users to run on modern hardware a variety of commercially available graphical point-and-click adventure games including Monkey Island, Simon the Sorcerer, Space Quest, and many more. To this end, ScummVM features a complete reimplementation of each supported game engine (Virtual Machine - VM) in a structured fashion using the C++ language. The development team works either by reverse engineering game executables, usually with the permission of creators of the game, or by using the original source code of the games provided by the creators. The number of engines is constantly growing thanks to a very agile and diversified development team.


One of the corner stones of ScummVM's success is its extreme portability. Besides running on all mainstream desktop environments, be it Windows, Mac OS X or most Unix variants (Linux, *BSD, Solaris, ...), it works on game consoles (Nintendo DS, PlayStation 2, PlayStation Portable and more), smart phones and PDAs (WinCE, PalmOS or Symbian based), and even on many not-so-mainstream systems (like BeOS, AmigaOS or OS/2).
The VM approach followed by ScummVM results in efficient code, which has been ported to numerous Operating Systems. Besides running on all mainstream desktop environments, namely Windows, Mac OS X or most Unix variants (Linux, *BSD, Solaris, ...), ScummVM works on popular game consoles (Nintendo DS, PlayStation 2, PlayStation Portable and more), smart phones and PDAs (WinCE, PalmOS or Symbian based), and even on many not-so-mainstream systems (like BeOS, AmigaOS or OS/2).


This high portability is made possible by the flexible and modular structure of the ScummVM internals, which more or less fall into the following three categories:  
ScummVM's high portability is a direct consequence of the flexible and modular structure of its architecture, which can be roughly divided into the following three major categories:  
# Backends, responsible for support of specific target devices, like PalmOS or WinCE, etc.
# Backends, which are responsible for supporting specific target devices, like PalmOS or WinCE,
# Engines (sometimes dubbed front ends) containing the actual game specific code
# Engines, also called front ends internally, contain the actual game specific (VM) code, and
# Infrastructure code, providing portable access to audio (including MIDI), graphics, user input, data access, a custom graphical user interface, and more
# Infrastructure code, which provides easy and portable baseline functionality, such as access to audio (including MIDI), graphics, user input, data access, a custom graphical user interface, and more.


The structure of the team reflects this structure, in so far as developers can be roughly grouped into the following categories (with some people being in more than one, or being multiple times in a single category):
The large team of developers is split in groups which focus in different aspects of the architecture, in a manner derived from the above mentioned categorization. The team members are often not strictly confined to their respective group. Developers may assume different roles in several teams. Currently, the developers are split in the following subteams:
* Porters -- responsible for a specific port
* Porters: Responsible for a specific ScummVM port.
* Engine authors -- responsible for a specific game engine (includes being responsible for handling users bug reports, i.e. support)
* Engine authors: Responsible for a specific game engine and its associated bug reports (support).
* Infrastructure development -- e.g. people working on MIDI code, on the built-in custom GUI, etc.
* Infrastructure development: Includes for example developers working on MIDI code, on the built-in custom GUI, etc.
* Packagers -- not all ports require dedicated backends (e.g., we have one built around the SDL library, which itself is highly portable), but they still require somebody to test and compile them, which is where porters come in
* Packagers: Not all ports require dedicated backends. For example our SDL backend is highly portable, but it still requires somebody to test and compile it. Packagers execute this function.
* Documentation / web site management
* Documentation / web site management
* Project leads -- we currently have three, and they all are also represented in one of the above categories, but besides this organize and coordinate things, make decisions, solve disputes etc. (as one would expect)
* Project leads: There are currently three project leads. They all are also represented in one of the above categories, but besides this they organize and coordinate things, make decisions, solve disputes etc.


This structure enables us to be highly productive in a team of about 30 currently active developers (out of an all time pool of well over 60), who work together on a codebase exceeding 600,000 LOC. In addition we have many non-developer contributors, and a huge and highly active community. We are among the most active projects hosted on sourceforge.net -- well over 100,000 monthly downloads and ~9 millions project web hits per month speak for themselves, we think.
All of this enables us to be highly productive in a team of about 30 currently active developers (out of an all time pool of well over 60), who work together on a codebase exceeding 600,000 LOC. In addition we have many non-developer contributors, and a huge and highly active community. We are among the most active projects hosted on sourceforge.net with well over 100,000 monthly downloads and ~9 millions project web hits per month.


== What we hope to gain ==
== What we hope to gain ==
116

edits