Assorted Questions

After getting the Addressables + Cloud Content Delivery + Cloud Build combo working, I have a few questions about how it works that would help speed up my workflow and prevent broken builds due to misunderstandings.

  • I’ve had builds that I configured incorrectly and they were not able to load asset bundles from Cloud Content Delivery. However, these builds still passed all unit tests in Cloud Build despite those tests being dependent on content within those asset bundles. With the build not configured properly to access the assets that the unit tests were reliant on, I assume that the unit tests are performed on a local build of those assets?

  • For Cloud Builds that are set to Content Only Build, are unit tests performed using a previous known good player build?

  • For Cloud Builds that are set to not have Build Addressable Assets checked, are unit tests performed using a previous known good content build?

  • If I create a new variable in my Addressables Profiles window, can I reference that variable in my other variables using the bracket notation? e.g. Some/Path/{MyVariable}/SubFolder/etc

  • I’ve read that square brackets are build-time and curly are runtime, does runtime mean I can swap out that variable using Remote Config?

  • Can I configure Cloud Build to not create a new Cloud Content Delivery release if the assets have not changed between two builds?

  • To clarify, if I make two builds and the assets have not changed, I would like to skip creating a new release in the CCD bucket. I am aware that I can uncheck Build Addressable Assets in my UCB build target however I would like to know if the process can be automated depending on whether or not my assets have changed. This may simply be me misunderstanding the intended workflow.

  • Where are assets stored after my player downloads them from their RemoteLoadPath?

  • I am testing load screens at the moment and would like to know where the asset bundles are being stored after download so I can download them again.

  • Only asset group schemas with Bundle Naming set to Append Hash to Filename work in Cloud Build and I have no idea why. Any other setting will cause a cloud build to fail building addressables on that bundle. Is this me misunderstanding of how the system works or a bug?

  • How do I deal with exceptions while loading content that does not exist? I though that it would simply make it so handle.Status was Failed but it throws an exception that I can’t catch because it occurs in a coroutine and I need to yield.

I’m loving this combo so far but due to the documentation not quite being all there I’ve done an enormous amount of trial and error this week. These are the questions I still have off the top of my head but I’m sure I’ll remember more things that I got working but didn’t quite understand why.

Hey @Jmangles , great questions all. I’m on the Addressables team so I’ll try and answer your Addressables questions and leave the more CCD questions to those with more knowledge than I.

So,
4. Yes, you can. However, to reference other custom variables you want to use square brackets [ ]. For example, if I have 2 profile variables:

Then variable2 here will resolve to http://fullurl.com/testpath

  1. Unity uses a UnityWebRequest to fetch and download remote bundles. Our UnityWebRequest works with our built in Caching API and will automatically cache AssetBundles. The path that this is set to by default varies from platform to platform. If you want to know where the current cache is you can do Debug.Log(Caching.currentCacheForWriting.path); to find the path. You can also create your own custom cache paths if you want them to go somewhere specifically. Here’s some more in-depth examples that may be of use to you: Unity - Scripting API: Caching

  2. This may not be something I can answer but I will say that sounds like it should work to me. It may be a bug on our end or the CCD side.

  3. Something that may help you is this page in our docs about using a custom exception handler ResourceManager.ExceptionHandler | Addressables | 1.17.17. Also on the AddressableAssetSettings ScriptableObject there is a setting under general called “Log Runtime Exceptions” that you can turn off if you just don’t want errors to log. If that doesn’t work for you let us know.

1 Like