So is it possible to use addressables to load and manage Asset Bundles that weren’t built within the primary project.
We’re currently manging thounsands of asset bundles and due to this scale we have a completely seperate project which we use for the whole content management and creation of these assets. They then get pushed to a remote service where we download on startup and consume at Runtime.
Does this sound like a viable situation for addressables?
Having the same problem here. Except that we don’t even have a system yet to load the asset bundles that were built in other projects. So were are on the decision to either write our own Asset Bundle Manager or somehow use Adressables for that.
@RWatling Can you give me a short hint on how you currently manage the assetbundles built in other projects? Did you built upon the AssetBundleManager provided by unity or developed a completely custom one yourselves?
Essentially we have a requirement to pre-process a lot of our assets and then generate the asset bundles for them with their dependencies. After that we then have a post process stage that does some renaming and encryption of the asset bundles.
Wrote it from scratch as I had some experience prior but it was still a learning curve.
edit:
Actually, looking into the way everything related to addressables is designed, it looks like this is more like a sort of extension to asset-bundles, and not intended to completely replace them.
Addressables are using plain old asset bundles under the hood, so they won’t be removed anytime soon, right?
For now I’ve found how to replace addressable bundles, with same names from different projects
It’s all about making correct catalog_1.json file that contains sources from both projects.
Lets say we have 2 projects: Game & Editor. Make some addressables and give tham same names and put to equal named remote groups. In the Game project assets are simple primitives boxes and spheres and in the Editor we put some nice meshes with materials. Build both projects.
Calc MD5 of catalog_1.json and replace value in catalog_1.hash
Upload all to the web server
Now if we run build of the Game - we see our nice meshes from the Editor project
I’m looking for how to add catalog_1.json completly new bundles from Editor if Game don’t know names of addressames. I think we need to edit “m_bucketDataString” and “m_entryDataString” somehow. Any ideas?
Addressables.InitializeWithAdditionalData can be used to additively load runtime data (settings.json files) in order to support split projects. You can divide the data up as you need and then copy all of the settings.json files into your project (with unique names). Once the addressables initialization is complete, call Addressables.InitializeWithAdditionalData to load your additional catalogs.
Thanks Paul. That’s awesome solution. Unfortunatly I get StackOverflowException every time when I call Addressables.InitializeWithAdditionalData (Unity 2018.2.2f1, Addressables System 0.2.1 preview)
Looks like there is unlimited recursion at Packages/Addressables System/Runtime/Addressables.cs (ln: 187)
public static void InitializeWithAdditionalData(string runtimeDataPath)
{
if (!InitializationOperation.IsDone)
InitializationOperation.Completed += (op) => InitializeWithAdditionalData(runtimeDataPath);
else
InitializeWithAdditionalData(runtimeDataPath);
}