81
edits
Strangerke (talk | contribs) m (moved GSoC Test to GSoC Ideas 2016: Make it final) |
|||
(35 intermediate revisions by 6 users not shown) | |||
Line 14: | Line 14: | ||
== Introduction == | == Introduction == | ||
We have a list of potential tasks further down on this page, but before you look at them, perhaps you'd like to take a look at some of the successful projects from previous years! We encourage all of our students to maintain a blog during their summer work, which is a nice way to get some sense of what they accomplished. | |||
One popular type of task is to improve our support for the games you love, whether this means a new game engine, or helping us to perfect an existing one. | One popular type of task is to improve our support for the games you love, whether this means a new game engine, or helping us to perfect an existing one. | ||
Sometimes source code is available - in recent summers, students integrated code supporting games such as [[Sfinx]], [[The Prince and the Coward]] and [[Avalanche]] into ScummVM. In fact, our support for the [[Wintermute]] engine was not only started by a GSoC student, who integrated the code into our tree, but also [[Wintermute/Games|drastically improved]] by another student a year later. | Sometimes source code is available - in recent summers, students integrated code supporting games such as [[Sfinx]] ([http://urukgsoc.blogspot.hu/search/label/CGE2 blog]), [[The Prince and the Coward]] ([http://lukaslwgsoc.blogspot.com/ blog]) and [[Avalanche]] ([http://urukgsoc.blogspot.hu/search/label/Avalanche blog]) into ScummVM. In fact, our support for the [[Wintermute]] engine was not only started by a GSoC student ([http://summermute2012.blogspot.com/ blog]), who integrated the code into our tree, but also [[Wintermute/Games|drastically improved]] by another student a year later ([https://icodelikeacow.wordpress.com/ blog]). | ||
[[File:GSOC_EMI.png|160px]] [[File:GSOC_zvision.png|152px]] [[File:GSOC_EMI_asm.png|147px]] | [[File:GSOC_EMI.png|160px]] [[File:GSOC_zvision.png|152px]] [[File:GSOC_EMI_asm.png|147px]] | ||
A more challenging (but hopefully rewarding) idea is to start (or continue) reverse engineering a game where no source is available. Two good examples are the pair of students who drastically improved ResidualVM's support for Escape from Monkey Island, and the work on improving [[Operation Stealth]]. Another option is to work on merging someone else's reverse engineering work, such as was done with the [[ZVision]] engine. | A more challenging (but hopefully rewarding) idea is to start (or continue) reverse engineering a game where no source is available. Two good examples are the pair of students who drastically improved ResidualVM's support for Escape from Monkey Island ([http://diggingemi.blogspot.com/ blog], [http://akzgsoc.blogspot.com/ blog]), and the work on improving [[Operation Stealth]] ([https://buddhahacks.wordpress.com/ blog]). Another option is to work on merging (and improving) someone else's reverse engineering work, such as was done with the [[ZVision]] engine ([http://richiesams.blogspot.com/search/label/ScummVM blog]). | ||
If you'd prefer to improve ScummVM more directly, there are even more options available there; in the past, students have improved our OpenGL support, added a testing framework, written a new GUI framework, | If you'd prefer to improve ScummVM more directly, there are even more options available there; in the past, students have (to give some examples) improved our OpenGL support, added a testing framework ([http://jakimushka.blogspot.com/ blog]), improved our scaler code ([http://singron.blogspot.com/ blog]), written a new GUI framework, added loadable modules for embedded platforms ([http://tonypuccinelli.blogspot.com/search/label/ScummVM blog]), rearchitected our keyboard input code ([http://kenny-gsoc.blogspot.com/ blog]) and added support for high-colour (16bpp and above) graphics. It's difficult for us to imagine ScummVM as it was before some of these projects, you can make a huge difference! | ||
== Tasks == | == Tasks == | ||
Line 97: | Line 99: | ||
In 2012, support for games using the Wintermute engine was merged into ScummVM, but it still lacks support for games which use 3D graphics. It would be great to be able to play these games in ResidualVM! | In 2012, support for games using the Wintermute engine was merged into ScummVM, but it still lacks support for games which use 3D graphics. It would be great to be able to play these games in ResidualVM! | ||
See [http://wiki.residualvm.org/index.php/GSoC_Ideas#Wintermute_3D_port Wintermute 3D] for more details. | '''ResidualVM project.''' See [http://wiki.residualvm.org/index.php/GSoC_Ideas#Wintermute_3D_port Wintermute 3D] for more details. | ||
=== In Cold Blood engine refactor === | === In Cold Blood engine refactor === | ||
Technical contacts: [[User:somaen|Einar Johan Trøan Sømåen]], [[User:aquadran|Paweł Kołodziejski]], [[User:joostp|Joost Peters]] | Technical contacts: [[User:somaen|Einar Johan Trøan Sømåen]], [[User:aquadran|Paweł Kołodziejski]], [[User:joostp|Joost Peters]] | ||
Difficulty level: | Difficulty level: Medium/hard. You'll need to be able to understand the relevant parts of the engine. | ||
ResidualVM project. See [http://wiki.residualvm.org/index.php/GSoC_Ideas#In_Cold_Blood_engine_refactor ICB engine refactor] for more details | '''ResidualVM project.''' See [http://wiki.residualvm.org/index.php/GSoC_Ideas#In_Cold_Blood_engine_refactor ICB engine refactor] for more details | ||
=== Improve SCI support === | === Improve SCI support === | ||
Technical contacts: | Technical contacts: Our SCI team; talk to us on IRC, or send an e-mail. | ||
Difficulty level: Hard. Good C++ knowledge and some knowledge of x86 assembly. | Difficulty level: Hard. Good C++ knowledge and some knowledge of x86 assembly. | ||
ScummVM has stable support for the older Sierra SCI games, but the newer ones -- such as Space Quest 6, Quest for Glory 4, Gabriel Knight 1 -- still need extensive work. As this is also something we are very actively working on ourselves, please come talk to us if you would be interested in helping out with reverse engineering and re-implementation. | ScummVM has stable support for the older Sierra SCI games, but the newer ones -- such as Space Quest 6, Quest for Glory 4, Gabriel Knight 1 -- still need extensive work. As this is also something we are very actively working on ourselves, please come talk to us if you would be interested in helping out with reverse engineering and re-implementation. | ||
=== Dink Smallwood engine (Cancelled) === | |||
Technical contacts: [[user:strangerke|strangerke]], [[User:dreammaster|dreammaster]] | |||
Difficulty level: Medium. Good C++ knowledge. | |||
<strike>Dink Smallwood is an action RPG video game, developed by Robinson Technologies, at the time consisting of Seth Robinson, Justin Martin, and Greg Smith. It was first released in 1998 before being released as freeware on October 17, 1999. The game has a small but constant fan following that continues to develop add-ons for the game more than 15 years after its release. The game is also notable for its humorous dialogue and surrealistic themes in various scenes between the gameplay.</strike> | |||
<strike>The purpose of the task is to port the available sources of Dink Smallwood on top of ScummVM's OSystem framework and to make sure it also have a good support of fan's MOD. (about 350 games currently)</strike> | |||
'''''This task has been cancelled due to the existence of the very good and active project [http://www.gnu.org/software/freedink FreeDink]. The scope of this project has been misunderstood when the task was added. All our apologies.''''' | |||
=== Dungeon Master engine === | |||
Technical contacts: [[user:strangerke|strangerke]], [[User:dreammaster|dreammaster]] | |||
Difficulty level: Medium. Good C++ knowledge. | |||
Dungeon Master was released on 15 December 1987 on the Atari ST, and by early 1988 was a strong seller, becoming the best-selling game for the computer of all time. | |||
It then was ported to Amiga, PC DOS and many other platforms, with the same success. It's considered nowadays to be a reference in RPG game, possibly the title who made the genre popular. | |||
The purpose of the task is to port Dungeon Master's engine and implement it on top of ScummVM's OSystem framework and to make sure it also have a good support of fan's MOD. | |||
=== Bring your own Adventure or RPG === | |||
Technical contacts: Talk to us on IRC, or send us an email. | |||
Difficulty: Hard. You'll need good knowledge of C++, as well as knowledge of (reading) assembly. | |||
Our project consists of re-implementations of classic games, and we have listed | |||
a number of potential new game engines that you could work on here on our ideas | |||
page. However, you may have a classic 2D Adventure game or Role Playing Game | |||
(RPG) you are interested in yourself that is suitable for ScummVM that you | |||
would like to reverse engineer and re-implement. If so, great! | |||
Adding a completely new game engine is not easy, and you will have to convince | |||
us that you are aware of the challenges involved, that the game you are | |||
interested in is feasible, and that you have the necessary skills. Preferably, | |||
you will already have done some preliminary investigation, into for example | |||
data file formats, disassembly, etc. | |||
Please come talk to us to see if we have a mentor who would be interested in | |||
working with you on such a game. We'd be happy to help out. | |||
== Infrastructure Tasks == | == Infrastructure Tasks == | ||
Line 125: | Line 171: | ||
Our current Android port is in need of improvement, especially combined with modern versions of Android. We'd like to improve the GUI and the input code in particular, but hopefully you also have your own ideas if you've tried the port (if you haven't: do so!). There are some patches already available, and it should be possible to merge code from other projects (such as SDL 2). A native configuration GUI could also be an option. | Our current Android port is in need of improvement, especially combined with modern versions of Android. We'd like to improve the GUI and the input code in particular, but hopefully you also have your own ideas if you've tried the port (if you haven't: do so!). There are some patches already available, and it should be possible to merge code from other projects (such as SDL 2). A native configuration GUI could also be an option. | ||
=== Improve audio device configuration === | === Improve audio device configuration === | ||
Line 170: | Line 206: | ||
We have two suggested tasks in the direction of text-to-speech: | We have two suggested tasks in the direction of text-to-speech: | ||
'''Adding text-to-speech support in Mortville Manor''' | |||
Difficulty: Easy (depending on how you want to approach the task); just knowledge of C++ and some experience programming should suffice. | Difficulty: Easy (depending on how you want to approach the task); just knowledge of C++ and some experience programming should suffice. | ||
Line 178: | Line 214: | ||
Our hope for this task would be to replace this obsolete speech synthesis with an external dependency which would allow the implementation of modern text-to-speech generation, in (at least) French, German and English. We have some ideas for which libraries would be suitable, but we're also open to suggestions (and offering the option of platform-specific APIs is also a possibility). | Our hope for this task would be to replace this obsolete speech synthesis with an external dependency which would allow the implementation of modern text-to-speech generation, in (at least) French, German and English. We have some ideas for which libraries would be suitable, but we're also open to suggestions (and offering the option of platform-specific APIs is also a possibility). | ||
'''Adding speech synthesis of on-screen text for people with reduced sight or for learning to read''' | |||
Difficulty: Medium. You'll need to be comfortable enough with C++ to be able to (quickly) understand enough of the existing engine code in order to add this functionality. | Difficulty: Medium. You'll need to be comfortable enough with C++ to be able to (quickly) understand enough of the existing engine code in order to add this functionality. | ||
Line 187: | Line 223: | ||
Alternatively (or additionally), you could consider adding other accessibility features. | Alternatively (or additionally), you could consider adding other accessibility features. | ||
=== Cloud integration === | |||
Technical contacts: [[User:Sev|Eugene Sandulenko]], [[User:uruk|Peter Bozso]] or talk to us on IRC or send an e-mail | |||
Difficulty: Medium. You'll need knowledge of C++, and learn or know about APIs of selected cloud services. | |||
Cloud integration would make it possible to transparently share savegame and game data files between devices. The more providers (Google Drive/Dropbox/OneDrive/OwnCloud/etc...) we could support, the better. ScummVM supports many platforms (Windows, Mac OS X, Linux, iOS, Android, and many others), so any solution would also need to be sufficiently portable. | |||
It would be also nice to have an option for users who don't want to use a cloud service or can't access their device's file system fully (for example on iOS), where they can configure their own server as the data provider. | |||
=== SCI tools === | |||
Technical contacts: our SCI team; talk to us on IRC, or send an e-mail | |||
Difficulty: Medium. You'll need to know or learn about SCI internals. | |||
We're in the process of reverse engineering modern SCI games (SCI32 games, from the generation of Gabriel Knight 1, Quest for Glory 4, Space Quest 6, etc.). For testing and debugging purposes, having access to good tools to study data files, resources, scripts, and run-time behaviour can be very useful. A number of such tools already exist, including some of our own tools, tools from FreeSCI which need porting to ScummVM, and a few external tools. You may identify gaps in the currently available tools, and in discussion with our SCI development team, propose ways of improving or integrating these tools, with the goal of making it easier to develop support in ScummVM for SCI32 games. |
edits