Sorry if this ends up being a bit of a rant, I’ve reached my wit’s end for about the 4th time just now with Unity’s horrid Addressables system. I’m very curious to know if there’s anyone out there who has managed to build an entire project with it, start to finish, is happy with the results, and ships tiny patches in a way that lives up to the “promise” of Addressables?
My 18-month experience with it has been almost entirely negative. I think it’s very well-documented on this forum how poor the documentation and API design is. The docs are a messy chain of revisions, deletions, and redactions across the shambling history of the feature, and are nearly devoid of solid code examples and best practices.
The API is similarly a mess of deprecated, obsolete, and poorly designed methods. Let’s select such a method at random and see what we can learn, say ClearDependencyCacheAsync(). Judging from the name, it sounds quite low-level and something I would have to have solid knowledge of the internal Addressables caching system to even know how or when to call it. Oh and what’s this, there are 10 overloads, 2 of them obsolete, and 0 of them commented in the DLL?
I will go out on a limb and say that the entire reason Unity is anything at all is due to its awesome serialization engine which allows you to drag and drop references to objects in those wonderful little public fields in the inspector and so simply instantiate them with the ultra-powerful Instantiate() call. Am I wrong in thinking that’s why most of us fell in love with Unity in the first place? Am I also wrong in thinking that Addressables destroys this workflow with the underlying notion that everything must now be asynchronous and strung together through a tangled web of AssetReferences and async loads and instantiates? I think you would have to be an amazing architect to construct a game that would operate entirely on async references. Has anyone managed this in a way you’re happy with?
Starting in late 2019, at the strong recommendation of Unity, I attempted to migrate my project to Addressables in order to be able to deliver patches on Switch and keep them below the 512mb limit. That attempt nearly cost me my entire development budget, as I hit an incredible torrent of bugs and issues and had to roll back my attempt after 2 months of concerted effort.
Early in 2021, I again tried this with another large project, this time armed with the practical synchronous fallback of WaitForCompletion(). Much of the team’s workflow was destroyed during this process as we painfully worked through the fog of documentation and numerous bugs. No gains were made other than the hope that our assets would prove to be now organized well enough to again ship small patches on Switch.
Now this brings us up to current day, where I have started from scratch with a new project and the intention to make Addressables right at the core of the whole thing. To Unity’s credit, it seems many of the previous bugs have been resolved. The documentation and API is still a mess however, and the contortions I’m forced to go through to keep my project coherent is still a huge burden. I frequently find myself hitting roadblocks and needing to spend hours digging through the source code to familiarize myself with the internals in order to move forward.
In my opinion, this is the cardinal sin of a 3rd party library. I want a black box that does what it says on the tin. Unfortunately, time and time again, Addressables proves itself to be a muddy, murky box with tons of confusing, misleading, and flat-out wrong stuff on the tin.
I get that the core of Unity was never built with something like Addressables in mind and the whole thing was an effort of shoe-horning. Also the Addressables devs are probably really depressed and despondent at how it’s turned out. But the real bad news is that I can find a number of other examples of recent Unity feature attempts that have gone off the rails in similar fashion. I felt like I used to know what Unity’s bread and butter was and where they were headed. That hasn’t been true for a number of years now. For the first time in my life, I’m starting to regret hitching my wagon to Unity.
So! Please regale me with your stories of how you have used Addressables to great results because I would like to learn new things and again feel good about having my studio be married to Unity.
