Game Packaging/ScummVM Cloud

From ScummVM :: Wiki
Jump to navigation Jump to search

ScummVM Cloud is one of the target platforms to allow downloading DLC from a URL. Games are hosted on ScummVM's server rather than on a distribution store like Play Store.

ScummVM Cloud uses the existing networking methods to download the games from a web link, and it is supported on various backends where cURL is supported in ScummVM. Due to potentially substantial bandwidth expenses, this feature is disabled by default.

To enable the DLC download feature using ScummVM Cloud, use --enable-scummvmdlc parameter with the ./configure.

How To Add Games

The game must be uploaded on the web, and its details must be added in a JSON response. The following details are needed for a new JSON entry:

  1. id (Required): It could be any string to uniquely identify the game. The download key for the game entry in ScummVM configuration file will equal to id.
  2. name (Required): Name of the game visible on DLC modals.
  3. size (Required): The size of game zip file in bytes (This is required for now, but later can be removed since it is already available in Content-Length of HTTP header)
  4. url (Required): The URL for the zipped game. This doesn't necessarily required to be on ScummVM's server.
  5. The detection data for ScummVM config game entries: description, engineid, extra, gameid, guioptions, language, platform. For the data not available leave them as empty string. You might need to run the game detection code by adding a game to get these values.

Here is an example for an entry in the JSON response:

{
	"description": "Lure of the Temptress (VGA/DOS/English)",
	"engineid": "lure",
	"extra": "VGA",
	"gameid": "lure",
	"guioptions": "sndNoSpeech gameOption1 lang_English",
	"id": "lure-1.1-vga",
	"language": "en",
	"name": "Lure of the Temptress - Freeware Version (English)",
	"platform": "pc",
	"size": 5678861,
	"url": "https://downloads.scummvm.org/frs/extras/Lure%20of%20the%20Temptress/lure-1.1.zip"
}

To add a new game entry in the JSON response, you need to check where the HTTP request needs to be sent. Look at ScummVMCloud::getAllDLCs(...) function for the HTTP link. You will need to have permission to edit the JSON entry there or ask someone with permission to add a new entry.

At the time of writing this, getAllDLCs(...) currently make request to a temporary firebase instance whose entries can be easily edited from the browser. This will be changed later.