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

Jump to navigation Jump to search
→‎Macromedia Director: -- improved wording
m (Remove extra vertical space)
(→‎Macromedia Director: -- improved wording)
 
(16 intermediate revisions by 4 users not shown)
Line 43: 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>===
=== 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.
[[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.


=== Networking code for Moonbase Commander===
=== Enhance SAGA engine ===
Technical contacts: [[User:Sev|sev]]
Technical contacts: [[User:Sev|sev]]


Difficulty level: Medium. You'll need a reasonable level of programming experience, and some network development experience.
Difficulty level: Medium.


[[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.
We have been supporting the [[Inherit the Earth]] game for a long while. However, Amiga versions are not yet supported by this target. We have the original source codes, and the main difference is the data bundles format.
 
An additional target is to support Chinese version of ITE, that would require reverse engineering with Ghidra, in order to understand how the game does rendering of CJK glyphs.


=== Wintermute 3D ===
=== Wintermute 3D ===
Line 72: Line 74:


'''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]


=== The Immortal ===
=== The Immortal ===
Line 120: Line 109:
working with you on such a game. We'd be happy to help out.
working with you on such a game. We'd be happy to help out.


== Infrastructure Tasks ==
== Smaller Tasks ==
 
=== Unicode and BiDi support for GUI ===
 
Technical contacts: [[User:Sev|sev]]
 
Difficulty: Easy. It will take up to 2 weeks to implement. C++ knowledge required.
 


Finally, there's always plenty of other practical tasks on our wishlist!
ScummVM GUI is based on char size strings, so we have to rely on code pages. With this task, you would need to switch our GUI to usage of Common::U32String, thus making it Unicode-friendly.


=== Improve Android port</span>===
Along the way, we would need support for right-to-left languages, and basically flip the widgets horizontally.


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.
== Infrastructure Tasks ==


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.
Finally, there's always plenty of other practical tasks on our wishlist!


=== Game packaging system ===
=== Game packaging system ===
Line 136: Line 131:
Technical contacts: [[User:Sev|sev]] or [[User:DJWillis|DJWillis]]  
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 9 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 describe a game, e.g. provide screenshots, game descriptions, metadata, and package it for different platforms, so we could put them to different application distribution systems bundled together with ScummVM. For example, we could have Beneath a Steel Sky bundled together with ScummVM, with its own logo, description and instructions on how to add another game along the way.
 
Potentially and in the future this system could also be used for DLC on platforms which support it, like Steam, Android Play Store or Apple App Store, though support for Android and iOS is out of scope for this project.


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.
Line 168: Line 165:
The interface needs to be bi-directional with the companion application being able to send requests to query information from ScummVM and to receive responses, but also for ScummVM to send notifications to the clients. The interface needs to be easy to integrate with from various programming languages and easy to experiment with.
The interface needs to be bi-directional with the companion application being able to send requests to query information from ScummVM and to receive responses, but also for ScummVM to send notifications to the clients. The interface needs to be easy to integrate with from various programming languages and easy to experiment with.


The scope of the project is to design and implement base system in ScummVM for Windows and Unix (using Named pipes / Unix domain sockets for communication), and to write a high quality companion application for one of the game engines in ScummVM.
The scope of the project is to design and implement the base system in ScummVM for Windows and Unix (using Named pipes / Unix domain sockets for communication), and to write a high quality companion application for one of the game engines in ScummVM.
 
=== Move Detection Code to the Main Executable ===
 
Technical contacts: [[User:Sev|sev]], [[User:Criezy|criezy]]
 
Difficulty: Medium
 
ScummVM grows every year, and for decreasing the executable size, we have dynamic plugins system in-place. During detection, we are loading every plugin and try to detect files. The relevant code interface is called MetaEngine. This is not effective and quite slow.
 
What is needed in this task, is changing our plugin system, so detection-related part of MetaEngine goes straight into the main ScummVM executable, and the engines are not required to load for detection.
 
Benefits would be faster game detection as well as the ability to detect games even if the corresponding plugin is missing, and let the user know which plugin is missing and needed to play that game.
 
You need a medium knowledge of C++ for this task. Some bash shell knowledge is a plus.

Navigation menu