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

Jump to navigation Jump to search
→‎Smaller Tasks: -- added TTS
(→‎Macromedia Director: enhanced description)
(→‎Smaller Tasks: -- added TTS)
Line 151: 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 163: 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).
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