{"id":157,"date":"2023-08-27T14:46:11","date_gmt":"2023-08-27T14:46:11","guid":{"rendered":"https:\/\/blogs.scummvm.org\/ankushdutt\/?p=157"},"modified":"2023-09-03T09:15:30","modified_gmt":"2023-09-03T09:15:30","slug":"final-submission","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/ankushdutt\/2023\/08\/27\/final-submission\/","title":{"rendered":"End of GSoC &#8217;23: Final Submission"},"content":{"rendered":"<p>Google Summer of Code is coming to an end. Thanks to my mentors, it has been a pleasant experience.<\/p>\n<p>Here are the things I have worked on during this Summer:<\/p>\n<h4>Universal Packaging Script<\/h4>\n<p>Code: <a href=\"https:\/\/github.com\/scummvm\/scummvm\/pull\/5300\">https:\/\/github.com\/scummvm\/scummvm\/pull\/5300<\/a><\/p>\n<p><strong>Tasks Done<\/strong><\/p>\n<ol>\n<li>Identify metadata requirement for DLC download support for various distribution stores. It has been compiled <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1JMh8SNANgmUq-TZv5KvzNOJFNoVZtuHerza1R_XksHA\/edit#gid=0\">here<\/a>.<\/li>\n<li>Create schema for metadata and JSON files like <code>dlc-games.json<\/code> and <code>export-platforms.json<\/code> to maintain all required metadatas for games and how to process those metadatas for different distribution stores.<\/li>\n<li>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 <code>export-platforms.json<\/code> and <code>dlc-games.json<\/code>. E.g. For Android Play Store, we will get a new AAB file bundled with games.<\/li>\n<li>Add entry for Android Play Store in <code>export-platforms.json<\/code> and all required dependencies (bundletool.jar, python scripts, etc.).<\/li>\n<\/ol>\n<p><strong>Possible Improvements<\/strong><\/p>\n<ol>\n<li>It takes a lot of time to package games one by one. Create an option to mass package games from a folder.<\/li>\n<li>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.<\/li>\n<\/ol>\n<h4>In-app DLC Downloader<\/h4>\n<p>Code: <a href=\"https:\/\/github.com\/scummvm\/scummvm\/pull\/5134\">https:\/\/github.com\/scummvm\/scummvm\/pull\/5134<\/a><\/p>\n<p><strong>Tasks Done<\/strong><\/p>\n<ol>\n<li>Create GUI dialogs and widgets to interact with the DLC Downloader and to show download progress, in-progress DLCs, etc.<\/li>\n<li>Create DLC Manager to manage downloading DLCs.<\/li>\n<li>Create an abstract class called <code>Store<\/code>. Different distribution store will need to implement this class using their store-specific API\/SDK.<\/li>\n<li>Create a new path called <code>dlcspath<\/code> for storing the downloaded DLCs.<\/li>\n<li>Create a new compile time flag, <code>USE_DLC<\/code> for including DLC downloading support. This is disabled by default. To enable it, use <code>--enable-dlc<\/code> with <code>.\/configure<\/code>. It will only be included on backends where it is supported (<code>kFeatureDLC<\/code> is true).<\/li>\n<\/ol>\n<p><strong>Possible Improvements<\/strong><\/p>\n<ol>\n<li>GUI dialog for DLC Downloader could see some visual overhaul like list with game icons.<\/li>\n<li>Generalize DLC to allow other types of data like themes, icons, shaders, etc. Currently, only games is supported.<\/li>\n<\/ol>\n<h4>ScummVM Cloud Integration for DLC Downloader<\/h4>\n<p>Code: <a href=\"https:\/\/github.com\/scummvm\/scummvm\/pull\/5134\">https:\/\/github.com\/scummvm\/scummvm\/pull\/5134<\/a><\/p>\n<p><strong>Tasks Done<\/strong><\/p>\n<ol>\n<li>Implement ScummVM Cloud to download games from a URL (ScummVM&#8217;s server) by utilizing existing networking methods.<\/li>\n<li>Handle zip extraction and deletion of zip after extraction.<\/li>\n<li>Improve existing method <code>Archive::dumpArchive()<\/code>.<\/li>\n<\/ol>\n<h4>Android Play Store Integration for DLC Downloader<\/h4>\n<p>Code: <a href=\"https:\/\/github.com\/ankushdutt\/scummvm\/commit\/c313a43cf1415598144c816474eb38ddbe56a8b1\">https:\/\/github.com\/ankushdutt\/scummvm\/commit\/c313a43cf1415598144c816474eb38ddbe56a8b1<\/a><\/p>\n<p><strong>Tasks Done<\/strong><\/p>\n<ol>\n<li>Implement Play Store DLC support by using Play Core SDK for Java.<\/li>\n<li>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.<\/li>\n<\/ol>\n<p><strong>Possible Improvements<\/strong><\/p>\n<ol>\n<li>Create script to generate the list of assets with required details like &#8211; <code>id<\/code>, <code>name<\/code> and detection keys for ScummVM configuration like <code>engineid<\/code>, <code>gameid<\/code>, <code>extra<\/code>, <code>guioptions<\/code>, <code>language<\/code>, <code>platform<\/code> and <code>description<\/code> directly by utilizing the <code>dlc-games.json<\/code>.<\/li>\n<\/ol>\n<h4>Documentation<\/h4>\n<p>Link: <a href=\"https:\/\/wiki.scummvm.org\/index.php?title=Game_Packaging\">https:\/\/wiki.scummvm.org\/index.php?title=Game_Packaging<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-157","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/posts\/157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/comments?post=157"}],"version-history":[{"count":6,"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/posts\/157\/revisions"}],"predecessor-version":[{"id":163,"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/posts\/157\/revisions\/163"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/media?parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/categories?post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/ankushdutt\/wp-json\/wp\/v2\/tags?post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}