Encapsulating scenes in Adressables to reduce loading times in Web GL
I'm currently working on a point and click adventure with ~10 different Unity scenes. It's running in WebGL due to availability demands by the client. In order to test the game, I've build Levels 1 - 4 yesterday, and it nearly took me 90 minutes to build and the result is 160MB. That's too much.
Player's will most likely not play the game in one sitting, since the game will accompany a university lecture. They will most likely play 1 level (= 1 scene) per week. My guess now is that I should build only the tutorial and main menu and put all the level specific assets into addressable ressources that will be loaded if needed, am I right? What is the best practice here?
Is it possible to bundle complete scenes as an addressable? If so, could you kindly hint me towards resources? It seems like addressables are quite new to the engine, so there are a lot of deprecated information popping up when intensively researching (google) the issue.
Update: I've created Addressable Bundles of the scenes and packed them on my webspace, www.mywebsite.com/WebGL/scene1.bundle - scene10.bundle. I'm a bit lost on how to define this remote loading path. I used this script:
IEnumerator LoadNextScene()
{
string target = "https://www.mywebsite.com/WebGL/scene1.bundle";
var asyncDependencies = Addressables.DownloadDependenciesAsync(target);
while (!asyncDependencies.IsDone)
{
Debug.Log(asyncDependencies.PercentComplete);
yield return new WaitForEndOfFrame();
}
var asyncScene = Addressables.LoadSceneAsync(target, LoadSceneMode.Additive);
while (!asyncScene.IsDone)
{
Debug.Log(asyncScene.PercentComplete);
yield return new WaitForEndOfFrame();
}
}
But this script is throwing an error that it the website is incorrect?
UnityEngine.ResourceManagement.ResourceManager+CompletedOperation`1[System.Collections.Generic.IList`1[UnityEngine.ResourceManagement.ResourceProviders.IAssetBundleResource]], result='', status='Failed': Exception of type 'UnityEngine.AddressableAssets.InvalidKeyException' was thrown., Key=https://www.mywebsite.com/WebGL/scene1.bundle, Type=System.Object