Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Content Update Unnecessary Bundles

Discussion in 'Addressables' started by Greyborn, Oct 29, 2019.

  1. c0nd3v

    c0nd3v

    Joined:
    May 8, 2019
    Posts:
    30
    Me too. :/
     
  2. Fabraz

    Fabraz

    Joined:
    Sep 15, 2014
    Posts:
    64
    Just noting we're dealing with this too, found out post-submission & approval to a ton of consoles. Not ideal.
     
  3. Neto_Kokku

    Neto_Kokku

    Joined:
    Feb 15, 2018
    Posts:
    1,751
    We basically gave up on trying to keep patches small on Unity games, and request waivers for ever patch. It's just not possible when the engine fights against you all the time.

    Also, the ability to have smaller patches depends entirely on how you organize your bundles for your initial release, because the patch install size is a difference between your initial release and the last one. If you get that wrong and group assets in a way that causes unwanted files to change in the future, there's no practical way to fix that due to the little control we have over asset bundle layouts.
     
  4. KospY

    KospY

    Joined:
    May 12, 2014
    Posts:
    153
    We also experience the same issue. Every small change in our project result in a 7gb patch, not sure yet but it look like all bundles are rebuilt each time for some reason.
     
  5. felipe-shida-playkids

    felipe-shida-playkids

    Joined:
    Sep 16, 2020
    Posts:
    13
    We are experiencing the same problem, some unchanged bundles have different content after an update, the biggest problem is, we build our client and addressables in a remote machine. As some of the bundles that change are local and static, is it possible that a remote catalog generated to be an actual content update, will point to the wrong asset in a local bundle.

    E.g.

    Client build:
    - catalog_a
    - localbundle_a
    - remotebundle_a (in server)

    Some assets in the remote bundle change and we generate another addressable build as a content update.

    Addressable content update build:
    - catalog_a (same name but different content)
    - localbundle_b (this should not have changed, non-deterministic build)
    - remotebundle_b (this changed correctly)

    In this case, as the catalog name remained the same, the client will be able to download it and receive the new assets present in remotebundle_b. BUT when it searches for an asset that should be in localbundle_b it wont find it as the local bundle is still the locabundle_a. It is important to notice that running the "Check For Content Update Restrictions" returns an empty list in this case, showing that the update should be fine.

    How is this possible to have a reliable remote update pipeline in this case?
     
  6. unity_krista

    unity_krista

    Unity Technologies

    Joined:
    Apr 28, 2020
    Posts:
    40
    The renaming issue should have been fixed in Addressables 1.18.3. What version of Addressables are you using? For bundles being rebuilt on content update, we have done a couple fixes since 1.17. Also the advice to make sure bundles are not dependent on each other, and set to Pack Separately still stands. If you're still facing issues on the latest Addressables, would someone be able to submit a bug with repro project?
     
  7. Neto_Kokku

    Neto_Kokku

    Joined:
    Feb 15, 2018
    Posts:
    1,751
    Last time I tried packing separately loading times on some consoles jumped from under 10 seconds to over two minutes.
     
  8. unity_krista

    unity_krista

    Unity Technologies

    Joined:
    Apr 28, 2020
    Posts:
    40
    I apologize, I should've explained better. Pack Separately can work better in certain situations. For example, if you have small patch update with not a lot of cross dependencies, or if you've made top level folders addressable instead of individual assets, or sometimes if you've made just massive groups with a lot of dependency between some of the group assets. It does depend on how the groups are set up.

    There are different ways Addressables can determine bundles. The default is bundles are made by group. Whatever is in a group, goes into a single bundle. If you select Pack Separately, a bundle is made for every entry in every group. That could be really slow in some situations, or really helpful in others, depending on how the assets are arranged. If you select Pack Together by Label it will make bundles for assets with the same label.

    A bundle has a dependency on another when anything in that bundle uses anything in the other bundle. This can end up with a sort of cascade of rebuilds. For example, Bundle A has a texture that Bundle B uses in a model. The texture is updated, then both Bundle A and Bundle B are updated. This has to happen because the file reference for that texture is now different, and the model needs to know that or it will look for the old texture. This is a factor of how assets reference each other in Unity. But then what if Bundle B also has a model, and it uses a texture from Bundle C. Because Bundle B was rebuilt and there is a dependency between B and C, Bundle C has to also be rebuilt. Although we instinctively know the file reference for the texture in Bundle C will be the same in the model for Bundle B after being rebuilt, we can't tell that at a bundle level when rebuilding. All it knows is there is a dependency, and one side of it was changed, so rebuild both.

    With all that in mind, there's some tips on how to arrange assets in bundles for different situations here. If you're still facing issues in the latest version of Addressables, it would be helpful if you could submit a bug with either a repro project, or more information about how your project is setup. I hope this helps some!