1,510
edits
(Copy over 2023 ideas as is) |
(→Add Text-to-Speech to more games: update status link) |
||
(12 intermediate revisions by 2 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 | 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 behaviors 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. | 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. | ||
Line 57: | Line 57: | ||
Often we implement stubs for XObjects which are extensions for Director functionality. | Often we implement stubs for XObjects which are extensions for Director functionality. | ||
=== Amnesia: The Dark Descent and A Machine for | === Amnesia: The Dark Descent and A Machine for Pigs (HPL2 engine) === | ||
* Technical contacts [[User:aquadran|aquadran]] or [[User:Sev|sev]] | * Technical contacts [[User:aquadran|aquadran]] or [[User:Sev|sev]] | ||
Line 63: | 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 HPL2 engine] under GPLv3 license. In 2022 we added HPL1 engine and | 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 of code respectively, but we already have experience from working on Penumbra. | ||
now we could consider adding HPL2. The size of the task is huge since the engines are 275k and 240k lines | |||
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 Pigs''. | |||
=== YAGA engine === | === YAGA engine === | ||
Line 87: | Line 85: | ||
* Size: 175 hours or 350 hours | * Size: 175 hours or 350 hours | ||
ScummVM currently has a number of engines which are very close to completion. Many of them were parts of previous GSoCs. For them, we need a playthrough and slight | ScummVM currently has a number of engines which are very close to completion. Many of them were parts of previous GSoCs. For them, we need a playthrough and slight bug fixing, or additional portability fixes. | ||
Some of the engines are: | Some of the engines are: | ||
Line 104: | Line 102: | ||
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. | 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 | The rough list of games built on this engine can be found [https://questzone.ru/enzi/engin/QD%20Engine at this link]. The most known games are Pilot Brothers 3 and Pilot Brothers 3D. | ||
The | |||
The | The engine itself is mid-size, with around 55k lines of code and up to 50k for library code, and is written in C++. The repository with extra libraries like STLPort can be found [https://github.com/KD-lab-Open-Source/qdEngine here]. | ||
The purpose of this task is to port this engine to ScummVM. | |||
=== Porting ADL to ScummVM === | === Porting ADL to ScummVM === | ||
Line 121: | Line 118: | ||
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. | 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 | The purpose of this task is to port this engine to ScummVM's Glk engine. | ||
=== Porting ALIS engine to ScummVM === | |||
* Technical contacts: [[User:Sev|sev]] | |||
* Difficulty level: Medium | |||
* Size: 175 hours | |||
ALIS (Actor Language Integrated System) is an engine that was used by [https://en.wikipedia.org/wiki/Silmarils_(company) Simlarils] for most of their games and about 17 of them are expected to work on this engine. There is an engine that is almost complete, it is pretty small, less than 10k lines of code and is distributed under MIT license. [https://github.com/maestun/alis Engline] and we also have Ghidra projects for the engine. | |||
The purpose of this task is to port this engine to ScummVM as a separate engine engine. | |||
=== Porting ACK engine to ScummVM === | |||
* Technical contacts: [[User:Sev|sev]] | |||
* Difficulty level: Medium | |||
* Size: 350 hours | |||
[https://mozomedia.com/ack/ ACK (Adventure Creation Kit)] was a Pascal-written game development system. Its sources were [http://www.80sgaming.org/ack/ released] under Public Domain, and there is [https://github.com/neutromancer/ackfree a port] to Free Pascal. The whole solution is mid-size, around 16k lines of code, but it must be converted to C++ before porting. A program such as p2c (Pascal-to-C) converter could be used for the initial code conversion, but then, the manual work on making things work will follow. | |||
There are several RPG-like games build on the engine, the most notable one is Ultima-like games. | |||
The purpose of this task is to port this engine to ScummVM as a separate engine engine. | |||
=== Porting Ambermoon/Amberstar engine to ScummVM === | |||
* Technical contacts: [[User:Sev|sev]] | |||
* Difficulty level: Hard / Very Hard | |||
* Size: 350 hours | |||
[https://www.mobygames.com/game/10789/ambermoon/ Ambermoon] and [https://www.mobygames.com/game/3160/amberstar/ Amberstar] were nice Amiga RPGs created by Thalion Software GmbH, a German company in early 90s. There are complete sources released for both games: [https://github.com/historicalsource/ambermoon here] and [[https://github.com/historicalsource/amberstar here]. It is technically possible to rewrite them in C++. | |||
The task will require learning or knowledge of the beautiful Motorola Assembly language and some knowledge on how Amiga worked with graphics and sound. | |||
=== Porting FITD (Alone in the Dark) engine to ScummVM === | |||
* Technical contacts: [[User:Sev|sev]] | |||
* Difficulty level: Hard | |||
* Size: 350 hours | |||
[https://github.com/yaz0r/FITD FITD] is an engine for playing Alone in the Dark 1-3 games. It is a mid-size engine with 23k lines of code, not in active development now. | |||
The goal of this project is porting the engine code to ScummVM's OSystem framework. | |||
=== Add support for Edna & Harvey: The Breakout to ScummVM === | |||
* Technical contacts: [[User:Sev|sev]] | |||
* Difficulty level: Medium/Hard | |||
* Size: 350 hours | |||
[https://www.mobygames.com/game/34663/edna-harvey-the-breakout/ Edna & Harvey: The Breakout] is the first game in Edna series from Daedalic. The engine was written in unobfuscated Java, thus, it is pretty trivial to decompile it. Moreover, one of the demos came with the source archive. The resulting decompilation is around 10k lines of code. It is built on top of Golden T Game Engine, which is another 8k lines of code on top of that, and it was [https://github.com/google-code-export/gtge published under LGPL]. | |||
The goal of this project is to rewrite/convert all of this into C++ and add to ScummVM. | |||
=== Bring your own Adventure or RPG Reimplementation (only existing games) === | === Bring your own Adventure or RPG Reimplementation (only existing games) === | ||
Line 130: | Line 177: | ||
* Size: 350 hours | * Size: 350 hours | ||
Our project consists of re-implementations of classic games, and we have listed | Our project consists of re-implementations of classic games, and we have listed a number of potential new game engines that you could work on here on our ideas page. However, you may have a classic 2D Adventure game or Role Playing Game | ||
a number of potential new game engines that you could work on here on our ideas | |||
page. However, you may have a classic 2D Adventure game or Role Playing Game | |||
(RPG) you are interested in yourself that is suitable for ScummVM that you | (RPG) you are interested in yourself that is suitable for ScummVM that you | ||
would like to reverse engineer and re-implement. If so, great! | would like to reverse engineer and re-implement. If so, great! | ||
Adding a completely new game engine is not easy, and you will have to convince | Adding a completely new game engine is not easy, and you will have to convince us that you are aware of the challenges involved, that the game you are interested in is feasible, and that you have the necessary skills. Preferably, you will already have done some preliminary investigation, into for example data file formats, disassembly, etc. | ||
us that you are aware of the challenges involved, that the game you are | |||
interested in is feasible, and that you have the necessary skills. Preferably, | |||
you will already have done some preliminary investigation, into for example | |||
data file formats, disassembly, etc. | |||
Please come talk to us to see if we have a mentor who would be interested in | Please come talk to us to see if we have a mentor who would be interested in working with you on such a game. We'd be happy to help out. | ||
working with you on such a game. We'd be happy to help out. | |||
== Smaller Tasks == | == Smaller Tasks == | ||
Line 154: | Line 194: | ||
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 172: | Line 203: | ||
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. | 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 [[ | So far, TTS has been [[Keymapper_and_TTS_status|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: | For each engine, the task varies from straightforward to a mid-complexity: | ||
Line 184: | Line 215: | ||
Finally, there's always plenty of other practical tasks on our wishlist! | Finally, there's always plenty of other practical tasks on our wishlist! | ||
Line 216: | Line 220: | ||
* Technical contacts: [[User:Sev|sev]] | * Technical contacts: [[User:Sev|sev]] | ||
* Languages: PHP, C++, some Python | |||
* Difficulty: Medium | * Difficulty: Medium | ||
* Size: | * Size: 175 hours | ||
ScummVM requires game data files to operate. Very often, especially when copying from the old media, the files could be damaged. Thus, we need a system that could let the end-users compute all the checksums and compare them with the reference. | ScummVM requires game data files to operate. Very often, especially when copying from the old media, the files could be damaged. Thus, we need a system that could let the end-users compute all the checksums and compare them with the reference. | ||
The solution | The solution consists of two parts: server and additional functionality within ScummVM. In order to avoid any potential problems with the copyrighted material, only checksums could be passed to the server. | ||
We already have a bulk of this task implemented, but not yet integrated with ScummVM. There are 2 parts: [https://github.com/scummvm/scummvm-sites/tree/integrity Server], written in PHP and [https://github.com/scummvm/scummvm/pull/5247 the original ScummVM Pull Request]. | |||
We need to complete this task and make it fully functional. |