Difference between revisions of "Summer of Code/GSoC Ideas 2018"

Jump to navigation Jump to search
Try to expand a bit the required skills paragraph in the introduction
(Try to expand a bit the required skills paragraph in the introduction)
 
(9 intermediate revisions by 4 users not shown)
Line 3: Line 3:
We've had a lot of successful student projects as part of Google's Summer of Code in previous years -- we hope to inspire you to work with us and (hopefully) add your own success.
We've had a lot of successful student projects as part of Google's Summer of Code in previous years -- we hope to inspire you to work with us and (hopefully) add your own success.


For any work on ScummVM, you'll probably need to already be comfortable with a basic level of C++. Some of the tasks might need more specialised knowledge (for example, working with ResidualVM may need you to understand some OpenGL and 3D math); we give our thoughts about this alongside each suggested task, below.
We often get asks by students with no experience with ScummVM whether they have the necessary skills to participate with us. The idea of GSoC is to introduce students to open source development, so we are not expecting you to have experience with ScummVM. You will have time during the application and community bonding periods to familiarize yourself with the project. The technical skills required to work with us varies from task to task. For any work on ScummVM, you'll probably need to already be comfortable with a basic level of C++. Some of the tasks might need more specialized knowledge (for example, working with ResidualVM may need you to understand some OpenGL and 3D math, and some engine tasks may require some assembly or reverse engineering knowledge); we give our thoughts about this alongside each suggested task, below.


Most importantly, we'd like you to join our community. There are many previous GSoC participants who are still involved in our project, and whether or not you participate as part of Summer of Code, we'd love for you to get involved too.
Most importantly, we'd like you to join our community. There are many previous GSoC participants who are still involved in our project, and whether or not you participate as part of Summer of Code, we'd love for you to get involved too.
Line 29: Line 29:
== Tasks ==
== Tasks ==


General contacts: Our IRC channel, our mailing list, or contact [[User:Sev|Eugene Sandulenko]], [[User:DJWillis|John Willis]], [[User:Strangerke|Arnaud Boutonné]], [[User:LordHoto|Johannes Schickel]]
General contacts: Our IRC channel, our mailing list, or contact [[User:Sev|sev]], [[User:DJWillis|John Willis]], [[User:Strangerke|Arnaud Boutonné]]


The ideas here are meant to be just that - '''ideas'''. We hope they help inspire your proposals, but you should also consider suggesting your own completely new project ideas. Pick something you really want to see improved/fixed, and come and talk to us about it!
The ideas here are meant to be just that - '''ideas'''. We hope they help inspire your proposals, but you should also consider suggesting your own completely new project ideas. Pick something you really want to see improved/fixed, and come and talk to us about it!
Line 43: Line 43:
=== Improve touchscreen GUI ===
=== Improve touchscreen GUI ===


Technical contacts: [[User:Sev|Eugene Sandulenko]].
Technical contacts: [[User:Sev|sev]].


Difficulty level: Easy (code) / medium (architecture). You'll need a touchscreen device which can run ScummVM, to test on.
Difficulty level: Easy (code) / medium (architecture). You'll need a touchscreen device which can run ScummVM, to test on.
Line 56: Line 56:
=== Improve Main GUI ===
=== Improve Main GUI ===


Technical contacts: [[User:Sev|Eugene Sandulenko]].
Technical contacts: [[User:Sev|sev]].


Difficulty level: Easy.
Difficulty level: Easy.
Line 70: Line 70:
== Game Tasks ==
== Game Tasks ==


Technical contacts: Our IRC channel, our mailing list, or contact [[User:Sev|Eugene Sandulenko]], [[User:DJWillis|John Willis]], [[User:Strangerke|Arnaud Boutonné]], [[User:Md5|Filippos Karapetis]],
Technical contacts: Our IRC channel, our mailing list, or contact [[User:Sev|sev]], [[User:DJWillis|John Willis]], [[User:Strangerke|Arnaud Boutonné]], [[User:Md5|Filippos Karapetis]],


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.
Line 77: Line 77:


=== Macromedia Director ===
=== Macromedia Director ===
Technical contacts: [[User:Sev|Sev]]
Technical contacts: [[User:Sev|sev]]


Difficulty level: Medium. You'll need a reasonable level of programming experience, and probably some Director games.
Difficulty level: Medium. You'll need a reasonable level of programming experience, and probably some Director games.


Many 90s-era adventure games were developed using the Macromedia (now Adobe) Director tool. It would be nice to be able to play these games in ScummVM! We have a WIP engine in ScummVM tree, but it requires much more work in order to implement all hundreds of Lingo commands.
Many 90s-era adventure games were developed using the Macromedia (now Adobe) Director tool. It would be nice to be able to play these games in ScummVM! We have a WIP engine in ScummVM tree, but it requires much more work in order to implement all hundreds of Lingo commands.
=== Networking code for Moonbase Commander ===
Technical contacts: [[User:Sev|sev]]
Difficulty level: Medium. You'll need a reasonable level of programming experience, and some network development experience.
[[Moonbase Commander]] is a SCUMM-based strategy game. The original supported up to 4 network players. We have the source code for the original game, but it is based on top of Microsoft DirectPlay. We need to do a clean reimplementation, not necessarily compatible with the original. It may also require some basic server side for discovery. The networking libraries libcurl and SDL_Net are already part of ScummVM.


=== Wintermute 3D ===
=== Wintermute 3D ===
Line 98: Line 106:


'''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
=== Stark Engine improvements ===
Technical contacts: [[User:bgK|bgK]]
Difficulty level: Medium
The Longest Journey is a 2.5D point and click adventure game released in 1999 by Funcom. ResidualVM has a reimplementation for most of the game engine. However some important parts are missing:
* The original menus
The game menus allow displaying the main character's diary, viewing past cutscenes, loading and saving, ... Implementing the original menus is valuable to the players because of the very nice art they display.
The menus are semi-data driven. This task involves implementing the shared draw logic as well as the screen-specific gameplay logic.
* The characters' shadows
ResidualVM uses programmable pipeline OpenGL (shaders) to display the game world. For this task, it is required to write the code responsible for drawing the characters' shadows using a technique such as shadow mapping.
Working on Stark can be a great experience to learn game engine programming. The engine behind The Longest Journey was very well designed. Most concepts still apply in more recent 3D game engines.
'''ResidualVM project.''' For details see http://wiki.residualvm.org/index.php/TLJ_TODO_list


=== Mission Supernova games ===
=== Mission Supernova games ===
Line 103: Line 128:
Technical contacts: [[User:Strangerke|Strangerke]] or [[User:Criezy|Criezy]]
Technical contacts: [[User:Strangerke|Strangerke]] or [[User:Criezy|Criezy]]


Difficulty level: Medium. Knowledge of German language would be a help
Difficulty level: Medium. Good knowledge of C++ and basic knowledge of C and ASM is required. Some knowledge of German language would also help.


There were several adventure games by Steffen Dingel, which are freeware now: http://outpost.simplicity.de/ Among them were Mission Supernova and Mission Supernova 2.
There were several adventure games by Steffen Dingel, which are freeware now: http://outpost.simplicity.de/ Among them were Mission Supernova and Mission Supernova 2.
Line 141: Line 166:


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.
=== Native OS X port ===
Technical contacts: [[User:somaen|Einar Johan Trøan Sømåen]], [[User:aquadran|Paweł Kołodziejski]].
Difficulty level: Medium. You'll need to know C++ and Objective C (and ideally have some Cocoa experience), and have a Mac.
ScummVM's current OS X port is based on SDL 1.2, which is a dead project (having been replaced by SDL2); this means that the current state of the OS X port seems to degrade with each new OS X release. Also, functionality added in newer releases of OS X (such as the new full-screen modes introduced in 10.7) are not available for use in ScummVM.
One option for solving this would be to create a backend for OS X that doesn't use SDL. This would mean writing/porting replacement code for the parts where SDL currently handles things (i.e. at least audio, video and input, and ideally other details too). Preferably, such a project would be to retain backwards compatibility with 10.2 as we have today, while also allowing for a good user experience on the very latest OS X versions.


=== Game packaging system ===
=== Game packaging system ===


Technical contacts: [[User:Sev|Sev]]
Technical contacts: [[User:Sev|sev]]


ScummVM offers 8 freeware games for download, but they need to be downloaded and installed manually. It would be great to develop a universal system which would let us descibe a game, e.g. provide screenshots, game descriptions, metadata, and package it for different platforms, so we could put them to different applicaiton distribution systems.
ScummVM offers 8 freeware games for download, but they need to be downloaded and installed manually. It would be great to develop a universal system which would let us descibe a game, e.g. provide screenshots, game descriptions, metadata, and package it for different platforms, so we could put them to different applicaiton distribution systems.
Line 161: Line 177:
=== Support for shaders and arbitrary scalers ===
=== Support for shaders and arbitrary scalers ===


Technical contacts: [[User:Sev|Sev]]
Technical contacts: [[User:Sev|sev]]


Difficulty: Medium
Difficulty: Medium
Line 196: Line 212:


Alternatively (or additionally), you could consider adding other accessibility features.
Alternatively (or additionally), you could consider adding other accessibility features.
=== 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.
TrustedUser
2,147

edits

Navigation menu