Skip to content

Instantly share code, notes, and snippets.

@msciotti
Last active August 2, 2019 18:14
Show Gist options
  • Save msciotti/2194e8e2a00fd9b421a57b7542c12ac2 to your computer and use it in GitHub Desktop.
Save msciotti/2194e8e2a00fd9b421a57b7542c12ac2 to your computer and use it in GitHub Desktop.

So, the thing that's gonna help us here is making use of multiple manifests. When you create a config.json file to upload your game, you've got something that looks like this.

{
  "application": {
    "id": your_app_id,
    "manifests": [
      {
        // a bunch of stuff
      }
    ]
  }
}

"manifests" is an array, which means it can contain multiple items. What you'll want to do is create two manifests: one for your base game, and one for your DLC. Depending on how your build folder is set up, you can exclude the DLC files from being uploaded when you upload the base game. Let's pretend your build folder—the one on your local computer that you're uploading from—looks like this:

deep-sky-derelicts/
|_ config.json
|_ build/
   |_ Deep Sky Derelicts_data
      |_ StreamingAssets/
          |_ AssetBundles/
             |_ Base/          
             |_ DLC/   

Your manifest would look something like this:

{
  "application": {
    "id": your_app_id,
    "manifests": [
      {
        "label": "My Base Game",
        "local_root": "build",
        "file_rules": {
          "mappings": [
            {
              "local_path": ".",      // This makes the files appear in the base content/ directory, trust me :D
              "install_path": "."
            }
          ],
          "exclusions": [
            {
              "local_path": "./Deep Sky Derelicts_data/StreamingAssets/AssetBundles/DLC"    // This manifest will NOT include the DLC
            }
          ]
        },
        // The rest of the config with launch options, etc.
      },
      {
        "label": "My DLC", // Now we have a second manifest for the DLC files
        "local_root": "build/Deep Sky Derelicts_data/StreamingAssets/AssetBundles/DLC", // Uploading files from the DLC folder
        "file_rules": {
          "mappings": [
            {
              "local_path": ".",
              "install_Path": "./Deep Sky Derelicts_data/StreamingAssets/AssetBundles/DLC" // Puts stuff in the right place, trust me :D
            }
          ]
        }
      }
    ]
  }
}

So, what we've done is defined two manifests—or bundles of files—in one config. Now, how do we make 'em work?

When you create SKUs in the dev portal, you assign manifests to SKUs:

You'll want to assign My Base Game ​ to your base game SKU, and My DLC ​to your DLC. Now, when players buy your base game, they'll get entitlement to the "My Base Game" manifest, and Discord will only download that one. Once they purchase "My DLC", they'll become entitled to that manifest, and Discord will patch the game with the new content they received.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment