Google Summer of Code is coming to an end. Thanks to my mentors, it has been a pleasant experience.
Here are the things I have worked on during this Summer:
Universal Packaging Script
Code: https://github.com/scummvm/scummvm/pull/5300
Tasks Done
- Identify metadata requirement for DLC download support for various distribution stores. It has been compiled here.
- Create schema for metadata and JSON files like
dlc-games.json
andexport-platforms.json
to maintain all required metadatas for games and how to process those metadatas for different distribution stores. - Write a python script that takes game location, platform type and the ScummVM binary location as parameter. It will determine the output based on the
export-platforms.json
anddlc-games.json
. E.g. For Android Play Store, we will get a new AAB file bundled with games. - Add entry for Android Play Store in
export-platforms.json
and all required dependencies (bundletool.jar, python scripts, etc.).
Possible Improvements
- It takes a lot of time to package games one by one. Create an option to mass package games from a folder.
- There are some dependencies that are required to be installed on the host computer. E.g. specific version of Android SDK, Java, Python, etc. Utilize container based approach for quick setup.
In-app DLC Downloader
Code: https://github.com/scummvm/scummvm/pull/5134
Tasks Done
- Create GUI dialogs and widgets to interact with the DLC Downloader and to show download progress, in-progress DLCs, etc.
- Create DLC Manager to manage downloading DLCs.
- Create an abstract class called
Store
. Different distribution store will need to implement this class using their store-specific API/SDK. - Create a new path called
dlcspath
for storing the downloaded DLCs. - Create a new compile time flag,
USE_DLC
for including DLC downloading support. This is disabled by default. To enable it, use--enable-dlc
with./configure
. It will only be included on backends where it is supported (kFeatureDLC
is true).
Possible Improvements
- GUI dialog for DLC Downloader could see some visual overhaul like list with game icons.
- Generalize DLC to allow other types of data like themes, icons, shaders, etc. Currently, only games is supported.
ScummVM Cloud Integration for DLC Downloader
Code: https://github.com/scummvm/scummvm/pull/5134
Tasks Done
- Implement ScummVM Cloud to download games from a URL (ScummVM’s server) by utilizing existing networking methods.
- Handle zip extraction and deletion of zip after extraction.
- Improve existing method
Archive::dumpArchive()
.
Android Play Store Integration for DLC Downloader
Code: https://github.com/ankushdutt/scummvm/commit/c313a43cf1415598144c816474eb38ddbe56a8b1
Tasks Done
- Implement Play Store DLC support by using Play Core SDK for Java.
- Create JNI methods in C++ to interact with Java code for Play Store or vice-versa. Java code utilizes the SDK to implement functions necessary for handling download.
Possible Improvements
- Create script to generate the list of assets with required details like –
id
,name
and detection keys for ScummVM configuration likeengineid
,gameid
,extra
,guioptions
,language
,platform
anddescription
directly by utilizing thedlc-games.json
.
Documentation
Link: https://wiki.scummvm.org/index.php?title=Game_Packaging