Dynamically Load Addressable Groups And Remote Path at Runtime

Hi, I’m trying to use Unity to build a small game platform which allows people to create their own sub-games using Unity and use the same client to access these games.
In order to do so, I plan to let every sub-game publisher to build a server and by doing so the client can use netcode to switch to different sub-games. However, the resource of different sub-games (including scenes, models, prefabs, …) are different and should be downloaded from remote and loaded at runtime.
I tried to use Addressables to do the resource management and loading. This requires:

  1. the Addressables system can change its remote load path at runtime when you are switching from one sub-game to another.
  2. the Addressables system can load new addressables groups from remote even the group is not included in the client build.

I wonder if the above two requirements can be achieved by Addressables. If not, can I use the old AssetBundles system to manually do so?

I wonder how users create the sub-games. If they are also using Unity, they can use Addressables to output the catalog and bundles. Then, in the main game, use Addressables.LoadContentCatalogAsync to load additional catalog for each sub-game.

1 Like

Thanks a lot, I will have a try. It is true that sub-games are created using Unity. However I still have a question about this approach as I’m not familiar with the Addressables system. As all my sub-games are created by different authors, they may put their own remote build into different remote locations. So is the “catalogPath” parameter of Addressables.LoadContentCatalogAsync means the path in the Addressables system, the local file path, or any path even in the internet which is not included in the RemoteLoadPath? Can this path indicates a position which is described by a URI not in my RemoteLoadPath?

For example, sub-game A puts its catalog in X. Sub-game B puts its catalog in Y. X and Y are located in different URLs. In this case, the player want to enter sub-game A so my client first set RemoteLoadPath to X to automatically load contents in sub-game A. Then, the user want to change to sub-game B. Can I just use Y as the parameter of my catalog path for LoadContentCatalogAsync?

Generally the requirement is that my client project have no idea and no control of the remote locations of sub-games, the addressables groups of sub-games(but I ensure that they won’t have conflicts) during build. All information are gathered during runtime and needs to be switched at runtime. Is this possible?