Hey!
We’re using Addressables to allow players to pick to play from hundreds of individual stories that are downloaded from a server.
We’ve got an lightly-tested approach that seems reasonable to us, but there don’t seem to be many best-practice guides. We figure this is a common use of the system, so we wanted to check with the community before we scale up!
Here’s the setup:
All assets for a story are part of the same Group, and have a label with the same name as the group.
This allows us to use DownloadDependenciesAsync to load all the assets required to play the story up front. (As an aside, it’s a shame you can’t just download groups, rather than having to use labels).
We’ll use GetDownloadSizeAsync==0 to check if a story is fully downloaded, and ClearDependencyCacheAsync to delete stories when they’re finished and no longer needed.
(Note that neither of these appear to be working right now!)
Content for a story can be quite big (between 50-500mb), with large individual assets (video, large images), and so we’re using the “Pack Separately” bundle mode to avoid loading it all into memory at once (which seems to crash WebGL). We figure we could split our groups up manually instead, but this seems easier.
We’ll have a few “common” assets that are used for each story (common UI elements etc)
A list of all the stories the user can load is contained in a lightweight “home page” story.
Does this sound reasonable to folks who understand the system well?
- Will this allow us to avoid app updates for anything except code changes?
- Is this approach scalable?
- Can we expect this to work across all platforms (including WebGL!)?
- Are we likely to hit any issues with updates?
- Are we walking into any potential pitfalls?
- Has this approach been done before?
Bugs:
So far we’ve found some bugs: videos loaded via Addressables don’t work on WebGL, GetDownloadSizeAsync is never 0 and ClearDependencyCacheAsync appears to do nothing.
Thanks, we’re kinda new to this and any feedback means the world to us!