TrustedUser
567
edits
Rootfather (talk | contribs) (Created page with "If you'd like to get involved in ScummVM, we'd love to help you get started! We've had a lot of successful student projects as part of Google's Summer of Code in previous yea...") |
Thunderforge (talk | contribs) (→Add Text-to-Speech to more games: Adding mTropolis to the list of possible engines) |
||
(11 intermediate revisions by 4 users not shown) | |||
Line 49: | Line 49: | ||
* Size: 175 or 350 hours | * Size: 175 or 350 hours | ||
[[Director/Games|Many 90s-era adventure games]] were developed using the Macromedia (now Adobe) Director tool. | [[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) === | |||
=== | |||
* Technical contacts [[User:aquadran|aquadran]] or [[User:Sev|sev]] | * Technical contacts [[User:aquadran|aquadran]] or [[User:Sev|sev]] | ||
Line 81: | Line 63: | ||
* Size: 350 hours | * Size: 350 hours | ||
Frictional Games has released full sources for their [https://en.wikipedia.org/wiki/Frictional_Games#HPL_Engine | Frictional Games has released full sources for their [https://en.wikipedia.org/wiki/Frictional_Games#HPL_Engine HPL2 engine] under GPLv3 license. In 2022 we added HPL1 engine and | ||
now we could consider adding HPL2. The size of the task is huge since the engines are 275k and 240k lines od code respectively, but we already have experience from working on Penumbra. | |||
The purpose of this project is to port the HPL2 engine to ScummVM, with the goal of supporting ''Amnesia: The Dark Descent'' and ''Amnesia: A Machine for the Pig''. | |||
The purpose of this project is to port the | |||
=== 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 102: | 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 113: | 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 === | |||
* 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 engine itself is mid-size, with around 42k lines of code and is written in C++. | |||
The purpose of this tasks is porting this engine to ScummVM. | |||
=== Porting ADL to ScummVM === | |||
* Technical contacts: [[User:Sev|sev]] | |||
* Difficulty level: Medium or High | |||
* 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. | |||
=== Bring your own Adventure or RPG Reimplementation (only existing games) === | === Bring your own Adventure or RPG Reimplementation (only existing games) === | ||
Line 141: | 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. | ||
=== | === Optimize blending code for AGS games === | ||
* Technical contacts: [[User:Criezy|Criezy]] | |||
* Difficulty level: Medium | |||
* Difficulty: Medium | |||
* Size: 175 hours | * Size: 175 hours | ||
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. | |||
* Difficulty | === Add Text-to-Speech to more games === | ||
* Size: 175 hours | * Technical contacts: sev | ||
* Difficulty: Easy | |||
* Size: 175 or 350 hours, depending on the number of games | |||
ScummVM has [https://en.wikipedia.org/wiki/Text-to-speech Text-to-Speech] (TTS) 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 has been [[:Category:Engines Supporting Text-to-Speech|added to a number of engines]]. Additional engines where it could be potentially added include: [[ADL]], [[AGI]], [[Cine]], [[CruisE]], [[DM]] (?), [[Draci]], [[Dragons]] (?), EFH (?), [[Gob]], [[Hugo]], [[Immortal]] (later), [[Kult]] (?), [[Lab]] (?), [[MADE]], [[MM]], [[mTropolis]], [[Parallaction]], [[Prince]] (for non-Polish), [[SCUMM]], [[SLUDGE]], [[Startrek]] (?), [[Sword25]] (for languages other than English or German), [[TeenAgent]], [[Trecision]] (?), [[WAGE]] | |||
For each engine, the task varies from straightforward to a mid-complexity: | |||
# Identify routines that show text on screen | |||
# Potentially, clean up text from things like colors and fonts | |||
# Feed this text to TTS | |||
# Define GUI options for triggering the option | |||
== Infrastructure Tasks == | == Infrastructure Tasks == | ||
Line 202: | Line 211: | ||
Potentially and in the future this system could also be used for DLC on platforms that support it, like Steam, Android Play Store or Apple App Store. However, DLC support for Android and iOS is out of scope for this project. | Potentially and in the future this system could also be used for DLC on platforms that support it, like Steam, Android Play Store or Apple App Store. However, DLC support for Android and iOS is out of scope for this project. | ||