Difference between revisions of "Game Packaging"

From ScummVM :: Wiki
Jump to navigation Jump to search
Line 12: Line 12:
# Set the <code>dlcspath</code> in appropriate backends.
# Set the <code>dlcspath</code> in appropriate backends.
# Use <code>#ifdef USE_DLC</code> where applicable. Before building, make sure to enable DLC support by using <code>--enable-dlc</code> with <code>./configure</code>.
# Use <code>#ifdef USE_DLC</code> where applicable. Before building, make sure to enable DLC support by using <code>--enable-dlc</code> with <code>./configure</code>.
# Add new entry to <code>packaging/export-platforms.json</code> for how to prepare, package and/or upload DLC packages for this specific distribution platform. You can include the 3rd party SDK/scripts/tools or self-written scripts in <code>packaging/scripts</code> directory. It is possible that you might need to change the schema for <code>export-platforms.json</code> and adapt the <code>packaging/package.py</code> accordingly. For more details and reasoning, you may read [https://blogs.scummvm.org/ankushdutt/2023/06/03/week-1/ this blog].
# Add a new entry to <code>packaging/export-platforms.json</code>. The <code>export-platforms.json</code> consists of the description of scripts that eventually prepare and package the game in a specific format recognized by the distribution store and, if possible, upload the game directly to the distribution store. You can include the 3rd party SDK/scripts/tools or self-written scripts in the <code>packaging/scripts</code> directory. Here is an example for an entry to <code>export-platforms.json</code> (The single $ means variable from <code>packaging/package.py</code> context, double $ means variable from <code>packaging/dlc-games.json</code>, and triple $ means it is an environment variable):
<syntaxhighlight lang="json">
"android": {
"target": "android",
"prepare": {
"type": "python-script",
"location": "android/generate_asset_pack.py",
"options": {
"--packagename": "org.scummvm.scummvm",
"--assetpackname": "$$packname",
"--deliverymode": "on-demand",
"--assetsdir": "$game_location",
"--outdir": "output/android"
},
"successMessage": "Asset pack required for bundling stage is successfully created!"
},
"bundle": {
"type": "python-script",
"location": "android/add_packs.py",
"options": {
"--androidsdk": "$$$ANDROID_SDK_ROOT",
"--sdkver": "33",
"--buildtoolsver": "33.0.2",
"--bundletool": "scripts/android/bundletool-all-1.15.1.jar",
"--inputbundle": "$binary_location",
"--packdir": "output/android",
"--packnames": "$$packname",
"--output": "output/android/scummvm-bundled.aab"
},
"successMessage": "Android App Bundle is successfully created in output/android. You can now manually upload this file on Google Play Console."
},
"upload": {
"type": "none"
}
}
</syntaxhighlight>
It is possible that you might need to change the schema for <code>export-platforms.json</code> and adapt the <code>packaging/package.py</code> accordingly. For more details and reasoning, you may read [https://blogs.scummvm.org/ankushdutt/2023/06/03/week-1/ this blog].

Revision as of 03:24, 29 August 2023

Introduction

This page contains information for packaging and distributing freeware games & demos (as DLCs) through in-app DLC downloader.

Platform-specific Guides

  1. ScummVM Cloud
  2. Android

How to extend DLC support to more distribution stores

The general steps/tips are:

  1. Identify if the store have DLC support and have appropriate API or SDK for managing on-demand downloads. You may check this sheet containing information about various distribution stores for reference (might be outdated).
  2. Create a new class that implements backends/dlc/store.h. See backends/dlc/android/playstore.cpp as an example.
  3. Set the dlcspath in appropriate backends.
  4. Use #ifdef USE_DLC where applicable. Before building, make sure to enable DLC support by using --enable-dlc with ./configure.
  5. Add a new entry to packaging/export-platforms.json. The export-platforms.json consists of the description of scripts that eventually prepare and package the game in a specific format recognized by the distribution store and, if possible, upload the game directly to the distribution store. You can include the 3rd party SDK/scripts/tools or self-written scripts in the packaging/scripts directory. Here is an example for an entry to export-platforms.json (The single $ means variable from packaging/package.py context, double $ means variable from packaging/dlc-games.json, and triple $ means it is an environment variable):
"android": {
		"target": "android",
		"prepare": {
			"type": "python-script",
			"location": "android/generate_asset_pack.py",
			"options": {
				"--packagename": "org.scummvm.scummvm",
				"--assetpackname": "$$packname",
				"--deliverymode": "on-demand",
				"--assetsdir": "$game_location",
				"--outdir": "output/android"
			},
			"successMessage": "Asset pack required for bundling stage is successfully created!"
		},
		"bundle": {
			"type": "python-script",
			"location": "android/add_packs.py",
			"options": {
				"--androidsdk": "$$$ANDROID_SDK_ROOT",
				"--sdkver": "33",
				"--buildtoolsver": "33.0.2",
				"--bundletool": "scripts/android/bundletool-all-1.15.1.jar",
				"--inputbundle": "$binary_location",
				"--packdir": "output/android",
				"--packnames": "$$packname",
				"--output": "output/android/scummvm-bundled.aab"
			},
			"successMessage": "Android App Bundle is successfully created in output/android. You can now manually upload this file on Google Play Console."
		},
		"upload": {
			"type": "none"
		}
	}

It is possible that you might need to change the schema for export-platforms.json and adapt the packaging/package.py accordingly. For more details and reasoning, you may read this blog.