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

Jump to navigation Jump to search
m
 
(34 intermediate revisions by 3 users not shown)
Line 1: Line 1:
If you'd like to get involved in ScummVM <span style="color:red">- or one of our sister projects, such as ResidualVM - </span> we'd love to help you get started!
If you'd like to get involved in ScummVM - or one of our sister projects, such as ResidualVM - we'd love to help you get started!


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.


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 (<span style="color:red">for example, working with ResidualVM may need you to understand some OpenGL and 3D math, and </span>some engine tasks may require some assembly or reverse engineering knowledge); 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 34: Line 34:


If you're looking for more inspiration for ideas, beware of our [[TODO]] (and the other TODO lists linked from there) and our [[OpenTasks]] pages. Many of the tasks listed there might be incomplete or outdated, or too difficult for a new developer. The best thing to do is to come and talk to us!
If you're looking for more inspiration for ideas, beware of our [[TODO]] (and the other TODO lists linked from there) and our [[OpenTasks]] pages. Many of the tasks listed there might be incomplete or outdated, or too difficult for a new developer. The best thing to do is to come and talk to us!
== GUI Tasks ==
Our current GUI could use refreshing and updating, in particular to improve how
it works with newer platforms such as iOS or Android. We have a few suggested
tasks:
=== Improve touchscreen GUI ===
Technical contacts: [[User:Sev|sev]].
Difficulty level: Easy (code) / medium (architecture). You'll need a touchscreen device which can run ScummVM, to test on.
Our launcher/options GUI has been designed for keyboard/mouse input, and does
not work well in practice on modern touchscreen devices.
Since it is theme based, part of the problem can be resolved by using a custom
theme. However, our GUI code will need extensions to allow it to behave like a
proper touchscreen application. See [[OpenTasks/Generic/Touch GUI]] for more details.
=== Improve Main GUI ===
Technical contacts: [[User:Sev|sev]].
Difficulty level: Easy.
We have a wishlist for improved GUI widgets; we'd like better sliders, multiline text widgets, an improved list widget, and better widgets for PopUps.
Also, several years ago, we switched to a new XML-based and vector-based GUI, but unfortunately during this transition number of nice touches were lost. In particular, the current GUI lacks soft shadows and antialiasing in number of places. We'd like them back! At the same time, it would be nice to add support for transparent PNG files.
Finally, it would be nice to have support for a scalable GUI which looks good at modern resolutions, which would require changes to our theme format, among other improvements.
See [[OpenTasks/Generic/Improve GUI Look]] for more details.


== Game Tasks ==
== Game Tasks ==
Line 76: Line 43:
If you don't feel quite up to that level of challenge, we have lots of other suggestions:
If you don't feel quite up to that level of challenge, we have lots of other suggestions:


=== Macromedia Director ===
=== Macromedia Director</span>===
Technical contacts: [[User:Sev|sev]]
Technical contacts: [[User:Sev|sev]]


Line 83: Line 50:
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 ===
=== Networking code for Moonbase Commander===
Technical contacts: [[User:Sev|sev]]
Technical contacts: [[User:Sev|sev]]


Line 89: Line 56:


[[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.
[[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 106: Line 72:


'''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
=== Maupiti Island ===
Technical contacts: [[User:Strangerke|Strangerke]]
Difficult level: Medium to Hard. Good knowledge of C++ and some knowledge of Pascal and Assembly are required. Some knowledge of French could also help a bit, though Strangerke could translate anything on demand.
Maupiti Island is the sequel of Mortevielle Manor, both released by Lankhor. Both games were best sellers at the time and were games of the year in France. Nevertheless, best sellers of the time were still selling low volumes and Maupiti Island is nowadays pretty rare ans unknown.
Partial Pascal sources of Maupiti Island (Atari ST) have been secured recently. Some utility functions are missing, which were written using a mix of Pascal and assembly. So, the whole harcoded logic is available with most of the utility functions. Some reverse engineering may be required if the equivalent functions in Mortevielle are not working out of the box for the DOS version.
The purpose of this task is to reimplement a Maupiti Island engine for the DOS variants of the game in at least two languages, using Mortevielle Manor and the original sources as documentation.
[https://www.mobygames.com/game/dos/maupiti-island/screenshots/gameShotId,732668/ Screenshots on Mobygames]
=== Hyperspace Delivery Boy ===
Technical contact: [[User:sev|sev]] or [[User:DJWillis|DJWillis]]
Difficulty level: Medium to hard. Good knowledge of C++ and some knowledge of Lua are required.
Hyperspace Delivery Boy if a game written by (between others) John Romero after he left ID Software. The games has been ported to multiple platforms and is somehow a zelda like, mixing RPG, action and puzzles.
The original sources have been secured. they are written in C++ and Lua.
The purpose of the task is to write an engine for ScummVM of the Windows version. Sword25 engine is also written using Lua and could be used as an example of how to proceed.
[https://www.mobygames.com/game/windows/hyperspace-delivery-boy/screenshots Screenshots on Mobygames]


=== Mission Supernova games ===
=== Mission Supernova games ===
Line 116: Line 108:


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.
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.
=== The Immortal ===
Technical contacts [[User:dreammaster|dreammaster]] or [[User:Strangerke|Strangerke]]
Difficulty level: Hard. Good knowledge of C++ and assembly (x86 or 68K or 6502) is required.
The immortal was released in 1990 by Electronic Arts. It's a mix of genres involving RPG elements with action and puzzles.
The gameplay is different one variant to the other, and all variants are written in assembly, making it more difficult to support all the variants.
In 2018, a GSoC student picked this task but, due to personal issues, didn't manage to complete the task. The purpose of the task is therefore to implement an engine for a variant of the game, using the original sources and the work of JoeFish as a documentation.
[https://www.mobygames.com/game/immortal/screenshots Screenshots on Mobygames]


=== Bring your own Adventure or RPG ===
=== Bring your own Adventure or RPG ===
Line 142: Line 147:
Finally, there's always plenty of other practical tasks on our wishlist!
Finally, there's always plenty of other practical tasks on our wishlist!


=== Improve Android port ===
=== Improve Android port</span>===
<span style="color:red">Most likely not available</span>


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


Difficulty level: Medium/hard. You'll need some knowledge of C++, Java and ideally Android development and OpenGL. Access to at least one Android device is probably also necessary.
Difficulty level: Medium/hard. You'll need some knowledge of C++, Java and ideally Android development and OpenGL. Access to at least one Android device is probably also necessary.
Line 153: Line 157:
=== Game packaging system ===
=== Game packaging system ===


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


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 172: Line 176:


We need to have it tested on desktops and at least Android, but preferably also Windows and iOS.
We need to have it tested on desktops and at least Android, but preferably also Windows and iOS.
=== Text to speech ===
Technical contacts: Our IRC channel, our mailing list, or contact [[User:Strangerke|Arnaud Boutonné]] or [[User:criezy|Thierry Crozat]]
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.
The original [[Mortville Manor]] game used a speech synthesis system based on PC Speaker.
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.
Using the same library used in the previous task, it would be nice to have similar text-to-speech generation for other games. The challenge here would (hopefully) be to add the necessary interfaces for providing the text, and any needed other information (such as timing), to individual game engines. Part of your preparatory work would be working out (with our help) which engines to target.
This task would allow people suffering from sight issues to play more games in ScummVM, and it could also be very useful to help people who are learning to read.
Alternatively (or additionally), you could consider adding other accessibility features.
208

edits

Navigation menu