Unity Addressables, ¿vale la pena?

¡Hola! Hoy os quiero hablar de los Unity Addressables, el nuevo sistema de assets que viene para reemplazar los AssetBundles.

En este post voy a hacer una introducción a este sistema y te hablaré de sus ventajas y desventajas, porque no es oro todo lo que reluce.

Introducción a los Addressables de Unity

Addressables es el nuevo sistema de AssetBundles de Unity, bueno, realmente está construido sobre el sistema de AssetBundles para hacernos la vida más fácil a los desarrolladores.

Con este sistema nosotros seremos dueños de cuando cargamos los assets y por lo tanto, nos haremos responsables de cuando descargamos los assets, me explico:

Cuando estamos referenciando un Prefab, Imagen, o cualquier asset en un MonoBehavior y este está en la escena, independientemente de que utilicemos este recurso o no, Unity lo cargará en memoria.

Lo que tiene 2 problemas, aumenta el tiempo de carga de la escena, y puede que estemos cargando assets que solo vayamos a utilizar al final del nivel, o en un momento muy concreto. ¿Tiene sentido cargarlo en memoria?

Para solucionar esto, Unity nos propone utilizar Addressables, con Addressables podremos decidir nosotros cuando queremos cargar esos recursos porque los vamos a utilizar.

Esto nos dará la ventaja de que reduciremos los tiempos de carga de la escena al no tener que cargarlo todo al inicio, si ese recurso solo se utiliza al final del nivel, lo podremos cargar en background al final del nivel.

Por otro lado, esto nos obliga a gestionar cuando queremos descargar ese recurso. Si cambiamos de escena, y descargamos la anterior, Unity eliminará todos los recursos de esa escena, salvo los que hayamos cargado nosotros con Addressables.

Esto puede ser un gran problema ya que podemos olvidar descargar assets y estaremos provocando Memory Leaks, algo nada deseable.

Reducir tiempos de compilación con Addressables

Siguiendo con las ventajas, utilizar Addressables reducirá los tiempos de compilado de la Build, y reducirá su tamaño.

Esto es así porque todos los recursos que formen parte de Addressables no serán incluidos en la Build, con lo que reduciremos el tiempo y el peso.

Obviamente, aunque no se incluyan en la build, los necesitaremos para ejecutar el juego. Esto implica que el usuario se tendrá que descargar estos assets una vez abra el juego, o los podemos empaquetar en otro archivo junto a la build, pero entonces no reducimos su peso.

Nuevamente esta ventaja es un arma de doble filo, podremos reducir la build, pero a cambio tendremos que adaptar nuestro sistema para poder descargar estos assets.

Lo que implica tener un servidor con los recursos y contemplarlo dentro del flow de nuestro juego, querremos avisar al usuario de que vamos a descargar varios megas, y que se conecte a una wifi, antes de hacerlo.

Actualizaciones en caliente con Addressables

Para mí una de las mayores ventajas de Addressables es que nos permite actualizar los assets en caliente. Nos va a permitir actualizar assets sin tener que pasar por el proceso de validación de las stores.

Está claro que nuestro sistema tiene que estar preparado, pero una vez preparado, podríamos incluso subir nuevos minijuegos dentro de nuestra aplicación sin tener que pasar por el proceso de validación.

Aclarar que en los Addressables, al igual que con AssetBundles, no estamos extrayendo el código, solo los assets. Si tenemos un prefab con componentes, estos componentes irán en la build y en el prefab solo tenemos una referencia.

Por lo que para poder añadir minijuegos, este código ya tiene que estar en la build.

Esto es muy típico en juegos grandes con distintos modos de juego que vamos desbloqueando con el tiempo, o pagando con la moneda interna del juego. Solo cuando lo desbloqueamos es cuando descargamos los assets asociados.

Conclusiones

Las ventajas que nos ofrecen los Addressables en Unity son muchas, pero no vienen gratis, a mayor control tengamos, mayor será nuestra responsabilidad y el conocimiento que necesitaremos para trabajar con este sistema.

Aún así es un sistema a tener en cuenta, nos puede ayudar muchísimo a optimizar nuestro juego, y esto si que son optimizaciones de verdad, no como las de preocuparse por si un diccionario genera memory allocs, o un for tarda más ciclos.

Optimizar con Addressables puede marcar la diferencia en nuestro proyecto.

Para profundizar en este sistema he preparado un vídeo donde hacemos el SetUp inicial y vemos algunos ejemplos, además de echar un vistazo al profiler.

Otras entradas

Resumen
Addressables en Unity, ¿vale la pena?
Nombre del artículo
Addressables en Unity, ¿vale la pena?
Descripción
¿Vale la pena utilizar Addressables de Unity? 🤔 En este post vamos a analizar sus VENTAJAS y DESVENTAJAS.
Autor
Publisher Name
The Power Ups - Learning
Publisher Logo