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

Jump to navigation Jump to search
m
Fixed my nick
(Copied from 2017 page, removed SLUDGE)
 
m (Fixed my nick)
(10 intermediate revisions by 4 users not shown)
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 ===


Technical contacts: [[User:Sev|Sev]]
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.


We got hold of the original source code written in C with some x86 assembler. We need to rewrite these in a portable C++ and add support both Missions in one engine. If possible, a translation of the game texts into English, or developing tools for performing such translation could be a great advantage.
We got hold of the original source code written in C with some x86 assembler and Mission Supernova was ported to ScummVM and translated to English as part of GSoC 2017. We now need to rewrite the second game as well in a portable C++ and polish its English translation.


=== Bring your own Adventure or RPG ===
=== Bring your own Adventure or RPG ===
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.

Navigation menu