Difference between revisions of "GSoC Ideas"

From ScummVM :: Wiki
Jump to navigation Jump to search
(delete, rearrange, destroy!)
(Change link to 2018 page)
(28 intermediate revisions by 9 users not shown)
Line 1: Line 1:
This page contains a list of ideas about projects/tasks for the ScummVM and the ResidualVM projects which we feel are relatively substantial (and so appropriate for at least ''part'' of a Google [[Summer of Code]] project), and accessible to newcomers with good C++ knowledge.
 
 
 
----
 
'''See [[Summer of Code/GSoC Ideas 2018|GSoC Ideas 2018]]''' for the 2018 version of this page.
 
----
 
 
 
 
 
 
 
 
 
 
<!--This page contains a list of ideas about projects/tasks for the ScummVM and the ResidualVM projects which we feel are relatively substantial (and so appropriate for at least ''part'' of a Google [[Summer of Code]] project), and accessible to newcomers with good C++ knowledge.


These are just the few projects that we have come up with ourselves, and there are many many other tasks which would be helpful to the project - many ScummVM engines have their own TODO lists, and there are large tasks related to ResidualVM engines.
These are just the few projects that we have come up with ourselves, and there are many many other tasks which would be helpful to the project - many ScummVM engines have their own TODO lists, and there are large tasks related to ResidualVM engines.
Line 141: Line 159:


See [[OpenTasks/Engine/ImproveAGI]] for more details.
See [[OpenTasks/Engine/ImproveAGI]] for more details.
=== CGE2 Engine ===
Technical contacts: [[User:Strangerke|Arnaud Boutonné]], [[User:Dreammaster|Paul Gilbert]].
Sfinx is a Polish game based on the CGE engine. The sources of the engine have been generously provided by his authors who found the sources in their archives and by the copyright owners (LK Avalon ). This engine is written in C and ASM and is an evolution of another game already supported by ScummVM, Soltys.
Here are some details concerning Sfinx: [http://www.mobygames.com/game/sfinx Sfinx].
The sources has been given under GPLv2, as well as the game data.
The important parts of this task would be to fix the extraction/compacting tools, to define how similar the engine is compared to CGE1, then to rework and refactor the sources heavily, and to integrate it into ScummVM as part of CGE or as a new engine. The use of ScummVM subsystems for graphics, audio, input, etc, will be mandatory, and it'll be required to follow our portability/style guidelines.
See [[OpenTasks/Engine/Sfinx]] for more details.


=== Adding text to speech support in Mortville Manor ===
=== Adding text to speech support in Mortville Manor ===
Technical contacts: Our IRC channel, our mailing list, or contact [[User:Strangerke|Arnaud Boutonné]]
Technical contacts: Our IRC channel, our mailing list, or contact [[User:Strangerke|Arnaud Boutonné]] or [[User:criezy|Thierry Crozat]]


The original Mortville Manor game was using a speech synthesis based on PC Speaker.  
The original Mortville Manor game was using a speech synthesis based on PC Speaker.  
Line 164: Line 168:
decent text to speech generation, in (at least) French, German and English.
decent text to speech generation, in (at least) French, German and English.


=== Adding speech synthesis of on-screen text for people with reduced sight ===
=== Adding speech synthesis of on-screen text for people with reduced sight or for learning to read ===
Technical contacts: Our IRC channel, our mailing list, or contact [[User:Strangerke|Arnaud Boutonné]]
Technical contacts: Our IRC channel, our mailing list, or contact [[User:Strangerke|Arnaud Boutonné]] or [[User:criezy|Thierry Crozat]]


Using the same library used in the previous task, add a similar text to speech generation for other games. The exact list of titles should be defined as soon as possible between the mentors and the student.
Using the same library used in the previous task, add a similar text to speech generation for other games. The exact list of titles should be defined as soon as possible between the mentors and the student.


This task would allow people suffering of sight issues to play more games in ScummVM.
This task would allow people suffering of sight issues to play more games in ScummVM, but it could also be very useful to help people to learn how to read.


=== Macromedia Director ===
=== Macromedia Director ===
Line 176: Line 180:
Many 90s-era adventure games were developed using the Macromedia (now Adobe) Director tool. They don't run any more on modern systems, and current versions of Director can't even open the files (and too much has changed; Macromedia themselves have said that "reauthoring the movie from scratch" is often more efficient). It would be nice to be able to play these games in ScummVM!
Many 90s-era adventure games were developed using the Macromedia (now Adobe) Director tool. They don't run any more on modern systems, and current versions of Director can't even open the files (and too much has changed; Macromedia themselves have said that "reauthoring the movie from scratch" is often more efficient). It would be nice to be able to play these games in ScummVM!


There is already (Python) code available which can parse and display the contents of Director 2 and Director 3 'movie' files, and the basic framework of a ScummVM C++ engine. The task would involve trying to implement enough of a SummVM engine to allow some early Director adventures to be played; for example, parsing the movie files, implementing the frame-based playback system, drawing bitmaps and shapes, playing sounds and running some basic (Lingo) scripting.
There is already (Python) code available which can parse and display the contents of Director 2 and Director 3 'movie' files, and the basic framework of a ScummVM C++ engine. The task would involve trying to implement enough of a ScummVM engine to allow some early Director adventures to be played; for example, parsing the movie files, implementing the frame-based playback system, drawing bitmaps and shapes, playing sounds and running some basic (Lingo) scripting.


=== AGS ===
=== AGS ===
Line 186: Line 190:


'''This task almost certainly needs experience in understanding/refactoring of complex existing codebases, so please contact us as soon as possible if you're interested.'''
'''This task almost certainly needs experience in understanding/refactoring of complex existing codebases, so please contact us as soon as possible if you're interested.'''
=== Port WebVenture engine ===
Technical contacts: [[User:DJWillis|John Willis]], [[User:Md5|Filippos Karapetis]].
The [http://seancode.com/webventure/ WebVenture] [https://github.com/mrkite/webventure engine] by Sean Kasun is a reimplementation of the [https://en.wikipedia.org/wiki/MacVenture MacVenture] engine from ICOM Simulations.
It was used in the late 80s and in the early 90s for 4 games. The MacVenture games are still available for purchase from [http://www.zojoi.com/ Zojoi].
The current code is written in JavaScript, which means it will have to be completely rewritten in C++ and integrated in ScummVM.
'''This task requires C++ and JavaScript knowledge.'''
=== Native OS X port ===
Technical contacts: [[User:somaen|Einar Johan Trøan Sømåen]], [[User:aquadran|Paweł Kołodziejski]].
ScummVM's current OS X port is SDL 1.2 based, which is a dead project, having been replaced by SDL2, and Apple has a tendency to change and deprecate functionality with each version of their OS, as such, the current state of the OS X port seems to degrade with each new OS X release. Functionality added in newer releases of OS X, such as the new Full-screen modes introduced in 10.7 are also not available for use in ScummVM with the current SDL1.2 port.
One option for solving this, is to create a backend for OS X that doesn't use SDL. This would mean writing replacement code for the parts where SDL currently handles things (i.e. atleast audio/video/input, but possible other details). A major aim of such a project would be to retain backwards compatibility with 10.2 as we have today, while allowing for a good user experience on the very latest OS X versions as well.
'''This task requires C++ and Objective-C/Cocoa knowledge.'''
=== Improving the iPhone/iOS port ===
Technical contact: [[User:LordHoto|Johannes Schickel]], [[User:Sev|Eugene Sandulenko]].
The current iOS port, which we still label as iPhone, is functional but feels not really polished in a number of ways. The port comes from a time when the first two generations of the iPhone were still the top models. This, for example, makes it not as nicely usable on modern iOS devices because of resolution issues. Furthermore, while the gesture input serves as a great way to, for example, change control schemes, it also has some annoying issues. The most prominent example is that the "open global main menu" gesture sometimes causes the main menu to immediately close.
Build wise the iOS port is currently only supported by using a custom toolchain. Supporting the official toolchain and XCode as development environment in '''addition''' to the current toolchain is something we would really like to see. We already have a tool to auto-generate project files for Microsoft Visual Studio. The idea would be to take the currently WIP XCode support and finish it. Building with the official toolchain on command line would also be nice to have.
Essentially, this task requires working on various aspects of the iOS port. This includes graphics, GUI, input handling, but also build related aspects. Ideally, we want our iOS port to feel much smoother for the users, but also for developers working on it.
'''This task requires C++, ObjC(++), and iOS development knowledge. It also requires access to a (jailbroken) iOS device, preferable both iPhone and iPad, and the official iOS development environment.'''


=== Sources for other ideas ===
=== Sources for other ideas ===
Line 199: Line 235:


If you already have reverse engineering experience, you could consider working on one of the external in-development game engines, or even on support for a new game. However, doing this kind of work is very difficult and time-consuming - you would have to convince us that you have the necessary skills to actually be sufficiently productive, probably by demonstrating some actual progress first.
If you already have reverse engineering experience, you could consider working on one of the external in-development game engines, or even on support for a new game. However, doing this kind of work is very difficult and time-consuming - you would have to convince us that you have the necessary skills to actually be sufficiently productive, probably by demonstrating some actual progress first.
== ResidualVM Projects ==
== ResidualVM Projects ==
This section contains project ideas for ResidualVM. You will need some basic knowledge of OpenGL and 3D math, in addition to any extra skills indicated in each entry.
This section contains project ideas for ResidualVM. You will need some basic knowledge of OpenGL and 3D math, in addition to any extra skills indicated in each entry.
Line 209: Line 246:
See [http://wiki.residualvm.org/index.php/GSoC_Ideas#Wintermute_3D_port Wintermute 3D] for more details.
See [http://wiki.residualvm.org/index.php/GSoC_Ideas#Wintermute_3D_port Wintermute 3D] for more details.


=== Implement missing features in Escape From Monkey Island ===
=== In Cold Blood engine refactor ===
Technical contacts: chkr <at> residualvm <dot> org, klusark <at> residualvm <dot> org
Technical contacts: [[User:somaen|Einar Johan Trøan Sømåen]], [[User:aquadran|Paweł Kołodziejski]], [[User:joostp|Joost Peters]]
 
We re-implemented own game engine which support "Grim Fandango", the original engine used to play this game also supports another game: "Escape from Monkey Island". The difference is that "Escape from Monkey Island" uses a newer version of the game engine, with some modifications which we still haven't implemented fully. A lot of work HAS been done towards this, but there is still a lot left to do.


See [http://wiki.residualvm.org/index.php/GSoC_Ideas#Implement_missing_features_in_.22Escape_from_Monkey_Island.22_engine Missing Features in EMI] for more details
See [http://wiki.residualvm.org/index.php/GSoC_Ideas#In_Cold_Blood_engine_refactor ICB engine refactor] for more details


=== iOS port ===
=== iOS port ===
Line 222: Line 257:


See [http://wiki.residualvm.org/index.php/GSoC_Ideas#iOS_port_of_ResidualVM iOS Port] for more details
See [http://wiki.residualvm.org/index.php/GSoC_Ideas#iOS_port_of_ResidualVM iOS Port] for more details
=== TinyGL improvements ===
Technical contacts: [[User:aquadran|Paweł Kołodziejski]], [[User:somaen|Einar Johan Trøan Sømåen]]
TinyGL is a limited OpenGL implementation which uses CPU for rendering. Original code was imported into our project.
We made adoptions and improvements for one of our game engines, but it still lacks some features and optimizations.
See [http://wiki.residualvm.org/index.php/GSoC_Ideas#TinyGL_cleanup_and_improvements TinyGL improvements] for more details
=== Multichannel 3D sound support ===
Technical contacts: [[User:aquadran|Paweł Kołodziejski]]
Currently ResidualVM has only stereo audio output for emulated 3D sounds.
See [http://wiki.residualvm.org/index.php/GSoC_Ideas#Multichannel_3D_sound_support Multichannel 3D sound support] for more details


=== Sources for other ideas ===
=== Sources for other ideas ===
Line 247: Line 267:


If you already have reverse engineering experience, you could consider working on one of the external in-development game engines, or even on support for a new game. However, doing this kind of work is very difficult and time-consuming - you would have to convince us that you have the necessary skills to actually be sufficiently productive, probably by demonstrating some actual progress first.
If you already have reverse engineering experience, you could consider working on one of the external in-development game engines, or even on support for a new game. However, doing this kind of work is very difficult and time-consuming - you would have to convince us that you have the necessary skills to actually be sufficiently productive, probably by demonstrating some actual progress first.
-->

Revision as of 21:46, 20 January 2018



See GSoC Ideas 2018 for the 2018 version of this page.