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

Jump to navigation Jump to search
m
(Add HDB)
 
(13 intermediate revisions by 3 users not shown)
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 <span style="color:red">(To be confirmed)</span>===
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 <span style="color:red">(To be confirmed)</span>===
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 <span style="color:red">(To be confirmed)</span>===
=== 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 <span style="color:red">(To be confirmed)</span>===
=== Networking code for Moonbase Commander===
Technical contacts: [[User:Sev|sev]]
Technical contacts: [[User:Sev|sev]]


Line 107: Line 74:


=== Maupiti Island ===
=== Maupiti Island ===
Technical contacts: [[User:Strangerke|Strangerke]] or [[User:dreammaster|dreammaster]]
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.
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.
Line 113: Line 80:
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.
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.


The original DOS sources of Maupiti Island have been secured recently. They are written using a mix of Pascal and assembly. The blitting part of the game shares a lot with Mortevielle Manor and the speech synthesis is not in the scope of the task, so it may not be required to reimplement this assembly code.
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.
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.
Line 120: Line 87:


=== Hyperspace Delivery Boy ===
=== Hyperspace Delivery Boy ===
Technical contact: [[User:sev|sev]]
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.
Difficulty level: Medium to hard. Good knowledge of C++ and some knowledge of Lua are required.
Line 134: Line 101:
=== Mission Supernova games ===
=== Mission Supernova games ===


Technical contacts: [[User:Strangerke|Strangerke]] or [[User:Criezy|Criezy]] - <span style="color:red">Criezy will most likely not be available</span>
Technical contacts: [[User:Strangerke|Strangerke]] or [[User:Criezy|Criezy]]


Difficulty level: Medium. Good knowledge of C++ and basic knowledge of C and ASM is required. Some knowledge of German language would also 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.  
Line 141: 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 167: 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 <span style="color:red">(To be confirmed)</span>===
=== Improve Android port</span>===
<span style="color:red">Fuzzie is certainly not available. Is there a mentor for this one?</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 176: Line 155:
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.


=== Game packaging system <span style="color:red">(To be confirmed)</span>===
=== 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 184: Line 163:
Examples are: Linux packages, Google Play, Apple App Store, Steam, ForgeTV store, and anything beyond that.
Examples are: Linux packages, Google Play, Apple App Store, Steam, ForgeTV store, and anything beyond that.


=== Support for shaders and arbitrary scalers <span style="color:red">(To be confirmed)</span>===
=== Support for shaders and arbitrary scalers ===


Technical contacts: [[User:Sev|sev]]
Technical contacts: [[User:Sev|sev]]
Line 197: 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 <span style="color:red">(To be confirmed)</span>===
Technical contacts: Our IRC channel, our mailing list, or contact [[User:Strangerke|Arnaud Boutonné]] or [[User:criezy|Thierry Crozat]] - <span style="color:red">Criezy will most likely not be available</span>
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