Open main menu

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

Adding list items for the starting info
(→‎Penumbra: Overture (HPL1 engine): Expanding the Penumbra: Overture description)
(Adding list items for the starting info)
Line 44: Line 44:


=== Macromedia Director===
=== Macromedia Director===
Technical contacts: [[User:Sev|sev]]


Difficulty level: Medium. You'll need a reasonable level of programming experience, and probably some [[Director]] games.<br/>
* Technical contacts: [[User:Sev|sev]]
Size: 175 or 350 hours
* Difficulty level: Medium. You'll need a reasonable level of programming experience, and probably some [[Director]] games.
* Size: 175 or 350 hours


[[Director/Games|Many 90s-era adventure games]] were developed using the Macromedia (now Adobe) Director tool. It would be nice to be able to play these games in ScummVM! We have a WIP engine in ScummVM tree, but it requires much more work in order to implement all hundreds of Lingo commands.
[[Director/Games|Many 90s-era adventure games]] were developed using the Macromedia (now Adobe) Director tool. It would be nice to be able to play these games in ScummVM! We have a WIP engine in ScummVM tree, but it requires much more work in order to implement all hundreds of Lingo commands.


=== Enhance SAGA engine for supporting Amiga Inherit the Earth ===
=== Enhance SAGA engine for supporting Amiga Inherit the Earth ===
Technical contacts: [[User:Sev|sev]]


Difficulty level: Medium.<br/>
* Technical contacts: [[User:Sev|sev]]
Size: 175 hours
* Difficulty level: Medium.
* Size: 175 hours


We have been supporting the [[Inherit the Earth]] game for a long while. However, Amiga versions are not yet supported by this target. We have the original source codes, and the main difference is the data bundles format.
We have been supporting the [[Inherit the Earth]] game for a long while. However, Amiga versions are not yet supported by this target. We have the original source codes, and the main difference is the data bundles format.
Line 61: Line 61:
=== The Immortal ===
=== The Immortal ===


Technical contacts [[User:dreammaster|dreammaster]] or [[User:Sev|sev]]
* Technical contacts [[User:dreammaster|dreammaster]] or [[User:Sev|sev]]
 
* Difficulty level: Hard. Good knowledge of C++ and assembly (x86 or 68K or 6502) is required.
Difficulty level: Hard. Good knowledge of C++ and assembly (x86 or 68K or 6502) is required.<br/>
* Size: 350 hours
Size: 350 hours


The immortal was released in 1990 by Electronic Arts. It's a mix of genres involving RPG elements with action and puzzles.
The immortal was released in 1990 by Electronic Arts. It's a mix of genres involving RPG elements with action and puzzles.
Line 76: Line 75:
=== Penumbra: Overture (HPL1 engine) ===
=== Penumbra: Overture (HPL1 engine) ===


Technical contacts [[User:aquadran|aquadran]] or [[User:Sev|sev]]
* Technical contacts [[User:aquadran|aquadran]] or [[User:Sev|sev]]
 
* Difficulty level: Hard. OpenGL knowledge is required
Difficulty level: Hard. OpenGL knowledge is required<br />
* Size: 350 hours
Size: 350 hours


Frictional Games has released full sources for their [https://en.wikipedia.org/wiki/Frictional_Games#HPL_Engine HPL1 engine] under GPLv3 license ([https://github.com/FrictionalGames/HPL1Engine link]), around 100k lines of code. This is accompanied with around 37k lines of game-specific code for ''[https://en.wikipedia.org/wiki/Penumbra:_Overture Penumbra: Overture]'' ([https://github.com/FrictionalGames/PenumbraOverture link]).  
Frictional Games has released full sources for their [https://en.wikipedia.org/wiki/Frictional_Games#HPL_Engine HPL1 engine] under GPLv3 license ([https://github.com/FrictionalGames/HPL1Engine link]), around 100k lines of code. This is accompanied with around 37k lines of game-specific code for ''[https://en.wikipedia.org/wiki/Penumbra:_Overture Penumbra: Overture]'' ([https://github.com/FrictionalGames/PenumbraOverture link]).  
Line 91: Line 89:
=== Bring your own Adventure or RPG Reimplementation (only existing games) ===
=== Bring your own Adventure or RPG Reimplementation (only existing games) ===


Technical contacts: Talk to us on Discord, or send us an email.
* Technical contacts: Talk to us on Discord, or send us an email.
 
* Difficulty: Hard. You'll need good knowledge of C++, as well as knowledge of (reading) assembly.
Difficulty: Hard. You'll need good knowledge of C++, as well as knowledge of (reading) assembly.<br/>
* 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
Line 114: Line 111:


=== Add Keymapper to more games ===
=== Add Keymapper to more games ===
Technical contacts: sev


Difficulty: Easy<br/>
* Technical contacts: sev
Size: 175 or 350 hours, depending on number of games
* Difficulty: Easy
* Size: 175 or 350 hours, depending on 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 123: Line 120:


=== Support Unicode input in GUI ===
=== Support Unicode input in GUI ===
Technical contacts: [[User:Sev|sev]]


Difficulty: Medium<br/>
*Technical contacts: [[User:Sev|sev]]
Size: 175 hours
* Difficulty: Medium
* Size: 175 hours


Last year we enhanced our GUI for supporting Unicode output. Now we need to enhance our input system, so Unicode input is supported as well. This includes RTL support (we have FriBiDi employed for output).
Last year we enhanced our GUI for supporting Unicode output. Now we need to enhance our input system, so Unicode input is supported as well. This includes RTL support (we have FriBiDi employed for output).
Line 136: Line 133:
=== Automated system for packaging freeware games with ScummVM ===
=== Automated system for packaging freeware games with ScummVM ===


Technical contacts: [[User:Sev|sev]] or [[User:DJWillis|DJWillis]]<br/>
* Technical contacts: [[User:Sev|sev]] or [[User:DJWillis|DJWillis]]
Size: 350 hours
* Size: 350 hours


==== Background ====
==== Background ====
Line 163: Line 160:
=== Support for shaders and arbitrary scalers ===
=== Support for shaders and arbitrary scalers ===


Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]]
 
* Difficulty: Medium
Difficulty: Medium<br/>
* Size: 175 hours
Size: 175 hours


ScummVM uses software scalers for graphics enhancements. In 2012 we were running GSoC for turning them into plugins. [https://github.com/scummvm/scummvm/pull/271 That work] It was recently merged in ScummVM but could require some more love like adding xBRZ scalers.
ScummVM uses software scalers for graphics enhancements. In 2012 we were running GSoC for turning them into plugins. [https://github.com/scummvm/scummvm/pull/271 That work] It was recently merged in ScummVM but could require some more love like adding xBRZ scalers.
Line 179: Line 175:
=== System for checking the game files integrity ===
=== System for checking the game files integrity ===


Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]]
 
* Difficulty: Medium
Difficulty: Medium<br/>
* Size: 350 hours
Size: 350 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.
TrustedUser
567

edits