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

Jump to navigation Jump to search
(2 intermediate revisions by the same user not shown)
Line 51: Line 51:
[[Director/Games|Many 90s-era adventure games]] were developed using the Macromedia (now Adobe) Director tool. We added so far support for Director 3 and Director 4, but there is much more work related to the specific Xtras, increasing compatibility and working on Director 5 support.
[[Director/Games|Many 90s-era adventure games]] were developed using the Macromedia (now Adobe) Director tool. We added so far support for Director 3 and Director 4, but there is much more work related to the specific Xtras, increasing compatibility and working on Director 5 support.


These days, due to the relatively high compatibility our approach is taking an interesting Director title, trying to play it and fix any issues along the way, thus making the process pretty fun. During playback, we often compare the titles and behaviours with the original.
For this year, it would be great to have Total Distortion fully working and Meet MediaBand. The latter will require working with QuickTime playback code.
Often we implement stubs for XObjects which are extensions for Director functionality.


=== Amnesia: The Dark Descent and A Machine for the Pigs (HPL2 engine) ===
=== Amnesia: The Dark Descent and A Machine for the Pigs (HPL2 engine) ===
Line 146: Line 151:
* Technical contacts: sev
* Technical contacts: sev
* Difficulty: Easy
* Difficulty: Easy
* Size: 175 or 350 hours, depending on number of games
* Size: 175 or 350 hours, depending on the number of games


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 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.
Line 158: Line 163:


One of the main bottleneck in term of performances for AGS games in ScummVM lies in the way sprites are blended together. The AGS engine has 10 different blending modes, and they are currently implemented in a generic way with the colors for both sources being decomposed into their RGBA components before being blended, and then the resulting color being composed back. Those generic decompositions and composition operations are slow and in many cases could be eliminated when implementing specialised versions of the blending functions for a specific pixel format. The task will consist in first changing the blending code so that it can benefit from specialised implementations (for example use template functions or a function pointer). Then specialized optimized implementations of the blending functions can be added for the most commonly used input and output pixel formats combinations.
One of the main bottleneck in term of performances for AGS games in ScummVM lies in the way sprites are blended together. The AGS engine has 10 different blending modes, and they are currently implemented in a generic way with the colors for both sources being decomposed into their RGBA components before being blended, and then the resulting color being composed back. Those generic decompositions and composition operations are slow and in many cases could be eliminated when implementing specialised versions of the blending functions for a specific pixel format. The task will consist in first changing the blending code so that it can benefit from specialised implementations (for example use template functions or a function pointer). Then specialized optimized implementations of the blending functions can be added for the most commonly used input and output pixel formats combinations.
=== Add Text-to-Speech to more games ===
* Technical contacts: sev
* Difficulty: Easy
* Size: 175 or 350 hours, depending on the number of games
ScummVM has Text-to-Speech functionality that we are using for the games that have no speech (or limited options for speech). That improved usability of the games and obviously, their accessibility.
So far, TTS was added to the following engines:
CGE, CGE2, Dreamweb, GLK, Griffon, Lure, MADS, Mortevielle, SCI, Sherlock, Supernova, TwinE
And we identified that it potentially could be added to at least:
ADL, AGI, Chamber, CinE, CruisE, DM (?), Draci, Dragons (?), EFH (?), Gob, Hugo, Immortal (later), Lab (?), MADE, MM, Parallaction, Prince (for non-Polish), SCUMM, SLUDGE, Startrek (?), Sword25 (for langs other than English or German), TeenAgent, Trecision (?), WAGE
For each engine, the task varies from straightforward to a mid-complexity:
  1. Identify routines that show text on screen
  2. Potentially, clean up text from things like colors and fonts
  3. Feed this text to TTS
  4. Define GUI options for triggering the option


== Infrastructure Tasks ==
== Infrastructure Tasks ==

Navigation menu