Open main menu

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

→‎Infrastructure Tasks: -- updated integrity task, removed file DLC task
(→‎Smaller Tasks: removed optimized blending task)
(→‎Infrastructure Tasks: -- updated integrity task, removed file DLC task)
Line 187: Line 187:


Finally, there's always plenty of other practical tasks on our wishlist!
Finally, there's always plenty of other practical tasks on our wishlist!
=== Automated system for packaging freeware games with ScummVM ===
* Technical contacts: [[User:Sev|sev]] or [[User:DJWillis|DJWillis]]
* Size: 350 hours
==== Background ====
ScummVM is distributed on our website as a standalone app without any games included, which cannot be used until games are added.
Thanks to generous support from game authors, the ScummVM website [http://scummvm.org/games/ offers eleven freeware games for download], but they need to be manually downloaded and added to ScummVM.
==== Proposal ====
It would be great to develop a game-agnostic, automated system that would let us package a game, e.g. provide screenshots, game descriptions, metadata, and create distributables for different platforms. For example, we could have ''Beneath a Steel Sky'' bundled together with ScummVM, with its own logo, description, with the resulting distributables ready to upload to various platforms (Linux packages, Google Play, Apple App Store, Steam, ForgeTV store, and anything beyond that).
==== User Benefits ====
Users will be able to download a single distributable for a particular game, such as ''Beneath a Steel Sky'', and run it without any additional configuration. This is especially useful on platforms where apps are typically distributed through an app store (such as iOS).
For [https://www.scummvm.org/games/ freeware games that ScummVM is permitted to distribute], this would allow them to reach a wider audience by being available on more niche platforms. Should new freeware games become available, they would also be able to be distributed with minimal effort.
These automated scripts will also provide a reference for game authors who want to bundle their own games with ScummVM to be sold for their own.
==== Future Ideas ====
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.




Line 219: Line 192:


* Technical contacts: [[User:Sev|sev]]
* Technical contacts: [[User:Sev|sev]]
* Languages: PHP, C++, some Python
* Difficulty: Medium
* Difficulty: Medium
* Size: 350 hours
* 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 will consist 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.
 
The ScummVM part:
 
Calculates checksums of all files of a given game/title and submits them to the server. After receiving the response from the server, the end-user is presented with the results of the check: if all files are correct or list of files with different checksums.
 
Optionally, the users could have the possibility to give their consent to submit their checksums as the new game variant.
 
The server part:
 
It should keep checksums of all files of all known games in a DB.
 
It can receive a list of files to check against from ScummVM, perform a match with the DB and provide the result back in machine-readable form.
 
Additionally, it must support command-line utility for mass-populating the DB, performed by the developers.


Additionally, it must have a web interface that will let the authenticated users (developers) browse through the existing checksums.
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].


Optionally, it could have a way to see and approve the submitted entries.
We need to complete this task and make it fully functional.