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

Jump to navigation Jump to search
Updated to the current status
(Copy from 2024 ideas page)
 
(Updated to the current status)
Line 85: 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 bug fixing, or additional portability fixes.
ScummVM currently has a number of engines that 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 94: Line 94:
* [[Comprehend]], finishing support for Transylvania (V2), and adding support for the 16-color Apple IIgs versions
* [[Comprehend]], finishing support for Transylvania (V2), and adding support for the 16-color Apple IIgs versions


=== Porting qdEngine to ScummVM ===
=== Implementing minigames in qdEngine ===


* Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]]
* Difficulty level: Medium or High
* Difficulty level: Medium
* Size: 350 hours
* Size: 175 hours
 
Last year, we successfully ported qdEngine to ScummVM. However, there are a few smaller tasks left:


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.
* Implementing advanced mini-games
* Fixing pathfinding
* Fixing actor lighting in some circumstances
* Adding more features to debugger.


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.  
This could be a good introductory task into general engine development for a well-established engine codebase.


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].
If you can understand Russian, you may also help with playtesting the rest of the games and perhaps fixing any issues that we discover.


The purpose of this task is to port this engine to ScummVM.


=== Porting ADL to ScummVM ===
=== Porting ADL to ScummVM ===
Line 161: Line 165:


The goal of this project is porting the engine code to ScummVM's OSystem framework.
The goal of this project is porting the engine code to ScummVM's OSystem framework.
 
o
=== 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.
The goal of this project is to rewrite/convert all of this into C++ and add to ScummVM.
Line 194: Line 192:


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.
The current status can be found at [[Keymapper_and_TTS_status]] page.




Line 201: Line 201:
* Size: 175 or 350 hours, depending on the number of games
* 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.
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 the usability of the games and, obviously, their accessibility.


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]]
The current status per engine can be found on the [[Keymapper_and_TTS_status]] page.


For each engine, the task varies from straightforward to a mid-complexity:
For each engine, the task varies from straightforward to a mid-complexity:


# Identify routines that show text on screen
# Identify routines that show text on the screen
# Potentially, clean up text from things like colors and fonts
# Potentially, clean up text from things like colors and fonts
# Feed this text to TTS
# Feed this text to TTS
Line 214: Line 214:
== Infrastructure Tasks ==
== Infrastructure Tasks ==


Finally, there's always plenty of other practical tasks on our wishlist!
Finally, there are always plenty of other practical tasks on our wishlist!




Line 220: Line 220:


* Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]]
* Languages: PHP, C++, some Python
* Languages: Python, optionally C++
* Difficulty: Medium
* Difficulty: Medium
* Size: 175 hours
* Size: 175 hours
Line 228: Line 228:
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.
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 already have a bulk of this task implemented but not yet fully integrated with ScummVM. There are two parts: [https://github.com/scummvm/scummvm-sites/tree/integrity Server], written in Python, and [https://github.com/scummvm/scummvm/pull/5247 the original ScummVM Pull Request].


We need to complete this task and make it fully functional.
We need to complete this task and make it fully functional.

Navigation menu