Offline behaviour not as expected

Can anyone help me to understand the weird behaviour I’m seeing when offline please. I’ve got a system working, with FirebaseStorage as the hosting platform using RobinBird implementation detailed elsewhere in this forum. Works fine when online, however offline behaviour is weird.

If I run the game while online, so I know it has downloaded the current catalog and remote assetbundles, everything is fine. Then I shutdown the game completely, and switch the device into AirPlane mode, to turn off all networking. I would expect the next call to LoadAssetAsync to work fine, pulling the requested asset (that has definitely already been used while connected) from the locally cached bundles. However, what happens is, the LoadAssetAsync.Completed fails after a timeout. In XCode I can see repeated errors that appear to be related to it trying to get the catalog hash and failing. I’ve set the FirebaseStorage timeout to a lower value, 10s, as per this post, Hosting Plugin to load Addressables from Firebase Storage - #36 by robinryf , and that means when offline the load fails quicker, but I don’t understand why it should fail, surely if it’s offline it should just use the local hash/catalog/bundles?

It’s even weirder if I turn AirPlane mode off mid-execution. So, if I start in offline mode, get to the point where it needs to load an asset from the addressable bundle, and then, before triggering it, connect again, it still fails, repeatedly, I have to shut down the game and restart while online in order to get it to recover.

Paul

Hm…that doesn’t sound like intended behavior to me. Have you submitted a bug report by chance? If not, please do, so that we can dig into this further: Unity QA: Building quality with passion

I’ve also mentioned this on the thread associated with the Firebase Storage handler for AddressableAssets, https://discussions.unity.com/t/759987 , and it seems it might be related to local caching implemented in that plugin. I’ll wait until I can confirm whether the problem lies in AA or in the Firebase storage code before submitting a bug report.