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

Jump to navigation Jump to search
→‎Smaller Tasks: added keymapper task
(→‎Smaller Tasks: added keymapper task)
 
(14 intermediate revisions by 4 users not shown)
Line 7: Line 7:
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.


You should come to our [[IRC Channel]] and introduce yourself! We're friendly, and it's often the easiest way to ask questions about the tasks and the code in general. The channel is the main form of everyday communication for the project, and there will almost always be developers there who can discuss your project ideas, answer questions and help out.
You should come to our [[Discord Server]] and introduce yourself in the #scummvm-gsoc channel! We're friendly, and it's often the easiest way to ask questions about the tasks and the code in general. The channel is the main form of everyday communication for the project, and there will almost always be developers there who can discuss your project ideas, answer questions and help out.


You can find more information about what we expect from you before you apply at [[GSoC Application]].
You can find more information about what we expect from you before you apply at [[GSoC Application]].
Line 29: Line 29:
== Tasks ==
== Tasks ==


General contacts: Our IRC channel, our mailing list, or contact [[User:Sev|sev]], [[User:DJWillis|John Willis]], [[User:Strangerke|Arnaud Boutonné]]
General contacts: Our Discord server 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 37: Line 37:
== Game Tasks ==
== Game Tasks ==


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]],
Technical contacts: Our Discord 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 50: Line 50:
[[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.


=== Enhance SAGA engine ===
=== Enhance SAGA engine for supporting Amiga Inherit the Earth ===
Technical contacts: [[User:Sev|sev]]
Technical contacts: [[User:Sev|sev]]


Line 57: Line 57:
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.
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.
=== SAGA2 engine ===
Technical contacts: [[User:Sev|sev]]


=== Wintermute 3D ===
Difficulty level: High.
Technical contacts: [[User:somaen|Einar Johan Trøan Sømåen]], [[User:aquadran|Paweł Kołodziejski]]


Difficulty level: Medium/hard. You'll need to be able to understand 3D graphics, and rearchitecture/design the relevant parts of the engine.
We have full sources for [[Halls of the_Dead: Faery Tale Adventure II]] game. This needs to be refactored and brought to ScummVM's OSystem framework. This task requires a decent knowledge of C++ and some x86 assembly (relatively little).
 
In 2012, support for games using the Wintermute engine was merged into ScummVM, but it still lacks support for games which use 3D graphics. It would be great to be able to play these games in ResidualVM!
 
'''3D Game Engine project.''' See [http://wiki.residualvm.org/index.php/GSoC_Ideas#Wintermute_3D_port Wintermute 3D] for more details.
 
=== In Cold Blood engine refactor ===
Technical contacts: [[User:somaen|Einar Johan Trøan Sømåen]], [[User:aquadran|Paweł Kołodziejski]], [[User:joostp|Joost Peters]]
 
Difficulty level: Medium/hard. You'll need to be able to understand the relevant parts of the engine.
 
'''3D Game Engine project.''' See [http://wiki.residualvm.org/index.php/GSoC_Ideas#In_Cold_Blood_engine_refactor ICB engine refactor] for more details


Beware, that the task is ''very'' big, you will have to deal with 90k lines of code and must make the game at least playable. If there is not enough time within GSoC, you would need to spend some time after the program and reach the milestone of playability.
=== Bring your own Adventure or RPG ===
=== Bring your own Adventure or RPG ===


Line 98: Line 88:
== Smaller Tasks ==
== Smaller Tasks ==


=== Unicode and BiDi support for GUI ===
=== Icon based game view and game grouping/filtering ===
Technical contacts: somaen
 
Difficulty: Easy
 
The current game list in ScummVM is a flat, but searchable list of games. Since these are games, most, if not all of them at some point came in boxes with fancy box art, and awesome logos on them,
and that art is a bit more appealing than a simple list of game titles. We currently allow for something a bit prettier for savegames, where we allow for showing a grid of screenshots. This concept
could be taken to the game list as well, allowing for replacing the list of titles with a grid of logos/box art. The logos themselves can be scraped from a variety of places online (perhaps Mobygames
or GoG?), or supplied by the end user manually. To signal the language of each title we would allow for putting a little flag on each title.


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


Difficulty: Easy. It will take up to 2 weeks to implement. C++ knowledge required.
Another point that could be worked on with the game list, is the grouping. Currently the list is sorted by title, some people with larger libraries might prefer to group by company, or game engine instead,
similar to how a file-browser allows you to select what to sort by. Perhaps also allow for foldable groups (per engine, or per company?), similar to how folders work in a file-browser. Further ideas to
allow for better library management are also welcome.
 
=== Add Text To Speech (TTS) to more games ===
Technical contacts: criezy
 
Difficulty: Easy
 
ScummVM includes text-to-speech capabilities that are currently used to improve accessibility in the GUI, and to add speech to a few games. More games could benefit from it and the task will be to add text-to-speech to those.
 
=== Add Keymapper to more games ===
Technical contacts: sev
 
Difficulty: Easy
 
ScummVM includes a global fully configurable keymapper, but this requires engines to be adapted to use it. The feature documentation: [[Keymapper]], some reference implementations: Wintermute has [https://github.com/scummvm/scummvm/blob/master/engines/wintermute/keymapper_tables.h per-game keymaps]; [https://github.com/scummvm/scummvm/pull/2428 a pull request] with adding keymapper to HDB engine; [https://github.com/scummvm/scummvm/commit/cce713ee4c73504e97eba8b0ca9190e47d279e69 a commit] with adding Keymapper to a simpler engine, Griffon.




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.
=== Support Unicode input in GUI ===
Technical contacts: [[User:Sev|sev]]


Along the way, we would need support for right-to-left languages, and basically flip the widgets horizontally.
Difficulty: Medium


Last year we enhanced our GUI for supporting Unicode output. Now we need to enhance our input system, so Unicode input is supported as well. This includes RTL support (we have FriBiDi employed for output).


== Infrastructure Tasks ==
== Infrastructure Tasks ==
Line 130: Line 145:
Difficulty: Medium
Difficulty: Medium


ScummVM uses software scalers for graphics enhancements. In 2012 we were running GSoC for turning them into plugins. [https://github.com/scummvm/scummvm/pull/271 That work] needs to be completed, basically, it is just rebasing of the patch. The rebasing was started here: https://github.com/digitall/scummvm/tree/gsoc2012-scalers-cont
ScummVM uses software scalers for graphics enhancements. In 2012 we were running GSoC for turning them into plugins. [https://github.com/scummvm/scummvm/pull/271 That work] It was recently merged in ScummVM but could require some more love like adding xBRZ scalers.


Modern systems often have OpenGL with shader support. RetroArch project shaders are standard for them in open source gaming. LordHoto started work on adding support for those to ScummVM. His unfinished work could be found here: https://github.com/lordhoto/scummvm/tree/libretro-shader
Modern systems often have OpenGL with shader support. RetroArch project shaders are standard for them in open source gaming. LordHoto started work on adding support for those to ScummVM. His unfinished work could be found here: https://github.com/lordhoto/scummvm/tree/libretro-shader

Navigation menu