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

Jump to navigation Jump to search
(→‎Infrastructure Tasks: -- removed shaders as done)
(5 intermediate revisions by 3 users 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 66: Line 71:
=== YAGA engine ===
=== YAGA engine ===


* Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]] or [[User:Strangerke|strangerke]]
* Difficulty level: Medium.
* Difficulty level: Medium.
* Size: 175 hours
* Size: 175 hours
Line 78: Line 83:
=== Finishing implementation of incomplete engines ===
=== Finishing implementation of incomplete engines ===


* Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]] or [[User:Strangerke|strangerke]]
* Difficulty level: Medium or High
* Difficulty level: Medium or High
* Size: 175 hours or 350 hours
* Size: 175 hours or 350 hours
Line 89: Line 94:
* [[Avalanche]], some engine parts like Outro are not finished. Complete list is [[Avalanche#TO-DO|here]]
* [[Avalanche]], some engine parts like Outro are not finished. Complete list is [[Avalanche#TO-DO|here]]
* [[DM]]
* [[DM]]
* [[Comprehend]], finishing support for Transylvania (V2), and adding support for the 16-color Apple IIgs versions


=== Porting qdEngine to ScummVM ===
=== Porting qdEngine to ScummVM ===


K-D Labs, a Russian company has created a qdEngine that was used for number of point-and-click adventure games, primarily in Russian, but they were translated into Lithuanian and Czech.
* Technical contacts: [[User:Sev|sev]]
* Difficulty level: Medium or High
* Size: 350 hours
 
K-D Labs, a Russian company, has created a qdEngine that was used for number of point-and-click adventure games, primarily in Russian, but they were translated into Lithuanian and Czech.
 
The rough list of games built on this engine could be found [https://questzone.ru/enzi/engin/QD%20Engine at this link].
The rough list of games built on this engine could be found [https://questzone.ru/enzi/engin/QD%20Engine at this link].


Line 98: Line 109:


The purpose of this tasks is porting this engine to ScummVM.
The purpose of this tasks is porting this engine to ScummVM.
=== Porting ADL to ScummVM ===


* Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]]
* Difficulty level: Medium or High
* Difficulty level: Medium or High
* Size: 350 hours
* Size: 350 hours
ADL (Adventure Definition Language, not to be confused with [[ADL|Sierra's ADL]]) was created in 1987 by Tim Brengle and Ross Cunniff and released as freeware. Subsequent modifications to the engine have been made since and released under GPL. Documentation as well as a compiler and interpreter can be found [https://adl.sourceforge.net/ at this link].
Only one commercial game is known to have been released using ADL: Transylvania III. The previous 2 entries in the series use the [[Comprehend]] engine.
The purpose of this tasks is porting this engine to ScummVM's Glk engine.




Line 131: 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 143: 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