Downloadable content

Hello,

I very interested in the DLC capabilities of unity3d. Is the following scenario possible with unity3d on all platforms (iphone, android and webplayer)

  1. We have an basic application that needs to be installed as usual.
  2. After the player starts the application and descides for A or B we need to download scenes, models, textures, sounds AND scripts according to A or B and store them locally for later use.

Is this possible with unity3d ?

kind regards

knoggly

I believe what you’re asking for can be achieved via the use of AssetBundles (for packing/retrieving assets such as scenes, models, textures, and sounds) and WWW (for downloading assemblies that you can dynamically load into a new or existing appdomain for execution). A basic example of the latter is Angry Ant’s Hydra. You may even be able to do away with WWW alltogether by saving your assemblies as assets with a .bytes extension (which in theory should work) but I haven’t tried that yet. Whichever approach you choose, keep in mind that AssetBundles requires Unity Pro.

If you’re using Unity Free, then I believe you have no choice but to create your own custom importer for retrieving external resources via WWW, which is not a trivial feat.

Hello diablo,

thanks for your answer. As far as I understand the article I would have to create both, an asset-package and an assembly with logik to have my DLC-Package ready ?

I found another, quite new post, stating that you can bundle dll’s with assets (http://answers.unity3d.com/questions/30143/how-can-i-put-components-in-external-dlls-and-stor.html). Can anyone confirm, that this is a working method to build complete DLC-Packages INCLUDING script-code ?

kind regards

knoggly

That link contains the question “how can i put components in external dlls and store dlls in asset bundles”, which is really two questions. They answered “how can i put components in external dlls” but didn’t quite answer how to “store dlls in asset bundles”. One answer hinted at the method I proposed, which is to save each dll as an asset with a .bytes extension and loading/executing it at runtime.

First things first… do you have Unity Free or Unity Pro? If free, do you intend on purchasing Pro anytime soon? If not, the situation becomes dire.

I’m evaluation solutions for our current product prototype which will be a commercial application, so buying the pro-version shouldn’t be the main obstacle. It is far more important for us that this kind of DLC-mechanism will work reliable on all targeted platforms. Unfortunately we had several cases where in the beginning we were told everything will work fine, and in the end it failed at some small, but important point. So this is why I try to get a most specific answer as possible. We just don’t have time to test 5 different platforms.

For the second option, I think you are right, the question is nearly the same as mine, but the answers are targeting component-bundling.

kind regards

In that case, the answer to your question is yes, Unity (Pro) will allow you to 1) dynamically load external assets (via AssetBundles) and 2) dynamically load/execute external dll’s (via WWW as proven in the Hyrdra link or via AssetBundles if you save each dll as a .bytes asset).

Allright,

thats the kind of answer I hoped to get, and even better, the answer is positive :slight_smile:

thanks

knoggly

Actually, using the byte function on the Parse SDK, you should be able to easily download data within your unity game.:sunglasses: