Saltar al contenido principal

Actualización de proyectos a nuevas versiones de Unity

Descripción General

Surge la necesidad en determinados proyectos de larga duración o periodos extensos de mantenimiento de actualizar la versión de unity en la que se llevó se está llevando a cabo el desarrollo; para la cual se crea esta ficha basándonos en los siguientes puntos:

  • compatibilidad
  • pasos a seguir cada que haya versión nueva de unity
  • ¿cómo sabemos cuándo mudar a nueva versión?
  • ¿qué riesgos implica?
  • ¿cuál es el flujo? se hace prueba primero antes de subir a producción

De igual modo se considera la actualización a aquellos proyectos que, aunque no ha surgido la necesidad, se contempla dar mantenimiento o agregar funcionalidades en un futuro no definido, por lo que mantenerlos actualizados prevendría la obsolescencia de una o varias funciones ya desarrolladas.

Guía de trabajo

1.- Lo más importante de todo es hacer un backup del proyecto antes de realizar el proceso de actualización, en Inmersys tenemos la buena práctica de versionar todos nuestros proyectos en repositorios en GitLab por lo que lo mas probable es que este paso esté cubierto; En caso contrario crea el repositorio y respalda el proyecto. NUNCA realizar la actualización sin antes realizar el respaldo.

2.- Guarda una lista de todos los paquetes que estas utilizando, lo puedes hacer usando el archivo json del package manager

3.- Identifica la versión actual de unity en la que se está desarrollando el proyecto, esto para identificar a qué versión de unity debemos actualizar a continuación. Unity provee una lista de versiones y su guía de actualización correspondiente pero recomienda no saltarse versiones para evitar problemas mayores, es decir, si la versión objetivo está dos o más versiones arriba de la actual, primero deberíamos actualizar a la versión que sigue de la que tenemos actualmente y resolver los problemas que surjan, una vez resuelto todo, continuar con la actualización a la siguiente de la lista y así sucesivamente hasta llegar a la versión objetivo.

Para realizar el cambio de versión se hace desde unity hub.

Selecciona la versión a la que deseas actualizar (si tu versión actual no aparece en la lista, actualiza a la mas cercana).

Antes de darle en abrir el proyecto borra todos los archivos y carpetas dentro del directorio de tu proyecto excepto Assets y Project Settings ya que todo lo demás se genera automáticamente usando la nueva versión.

Si se trata de un proyecto pequeño o no utilizas paquetes o dependencias que hayan sufrido actualizaciones entre las versiones lo más probable es que no surja ningún problema, si no es el caso, sigue la guía de la documentación de unity correspondiente a la versión que necesites, esta guía siempre es diferente entre cada versión y puede ser actualizada.

https://docs.unity3d.com/2021.2/Documentation/Manual/UpgradeGuides.html

4.- Si Unity detecta errores en el código después de la actualización te preguntará si quieres entrar en modo seguro, dile que si y resuelve todos los errores relacionados con código escrito por el desarrollador (tu o algún compañero). Todo lo relacionado con paquetes y dependencias deberá solucionarse al re-importar dichos paquetes.

5.- Revisa la lista de paquetes que se re-importaron durante la actualización y compárala con la que tenías antes, si te falta algún paquete impórtalo para que no te falte nada, lo recomendable es que tengas la versión más reciente de cada paquete.

6.- Si existen errores en shaders generalmente se resuelven dando click derecho y re-importar, si son demasiados tal vez lo más recomendable es darle en  el menu/Assets/ReimportAll, esto puede solucionar muchos errores.

7.- Una vez que el proyecto no tenga errores se debe hacer testing tanto desde el editor como en un build directo de un dispositivo. Si todo corre bien  prosigue a actualizar a la siguiente versión de la lista.

Nota: durante todo el proceso nunca dejes de consultar la documentación de unity en el apartado de UpgradeGuides ya que es la principal guía para actualizar a cada versión de Unity

Consideraciones

Tanto para proyectos nuevos como para proyectos que se están actualizando, se recomienda NO utilizar la versión más reciente de Unity ya que aunque ya sea un release oficial puede seguir teniendo problemas aún no descubiertos. Las misma documentación de unity no siempre cuenta con una guía para sus versiones mas recientes por lo que la recomendación es utilizar máximo la versión que SI cuente con dicha guía en su documentación.

Decidir en qué momento actualizar un proyecto es una cuestión que depende de la necesidad y del tiempo. Si utilizas una versión que deja de ser compatible con con alguna plataforma objetivo entonces la actualización sería por necesidad. En caso contrario si se trata de un proyecto que requerirá soporte a largo plazo, mantenerlo actualizado es muy recomendable, por lo que si se cuenta con el tiempo lo ideal sería mantenerlo en la versión mas reciente cuya documentación oficial ya cuente con una guía de actualización.

Hablando específicamente de WebGL, Unity actualmente soporta WebGL 1 y WebGL 2 aunque planea en releases próximos dejar obsoleto WebGL1 por lo que se debe considerar esto a la hora de actualizar un proyecto a una versión de Unity que ya no soporte WebGL 1 pero los navegadores objetivo si lo requieran

WebGL 2 en safari es soportado a partir de la versión 15

Ésta investigación esta basada en las siguientes fuentes:

Documentación de unity: https://docs.unity3d.com/2021.2/Documentation/Manual/UpgradeGuides.html

https://docs.unity3d.com/2022.1/Documentation/Manual/webgl-browsercompatibility.html

https://docs.unity3d.com/2020.3/Documentation/Manual/webgl-browsercompatibility.html Foros: https://forum.unity.com/threads/should-i-update-my-project-or-keep-using-the-version-i-started-with.881947/ https://www.reddit.com/r/Unity3D/comments/m5fzpk/the_best_way_to_upgrade_your_unity_project_to_a/

Conocimiento empírico

Comentarios

Las guías de Unity se actualizan constantemente, especialmente las de las versiones mas nuevas, por lo que se recomienda consultarlas cada vez que se haga el proceso y asegurarse de nunca saltar versiones, por ejemplo, si te encuentras en la 2020LTS y quieres moverte a la 2021.2, antes tienes que actualizar a la 2021.1

Ventajas

Las dependencias y paquetes se mantienen actualizadas por lo que la posibilidad de que alguna quede obsoleta es nula. Se asegura la compatibilidad con las nuevas versiones de las diferentes plataformas (Android, iOS, WebGL, etc.)

Desventajas

En el mejor de los casos el proyecto correrá igual que en la versión anterior sin tener que hacer modificaciones pero mientras mas antigua sea la versión de unity hay mas posibilidades de que surjan errores tanto en nuestro código como en los paquetes utilizados lo cual requerirá invertir tiempo en resolverlo.

Hay un enorme salto de compatibilidad en versiones de unity anteriores a unity hub y las versiones compatibles con unity hub, esto es de la 5.5.6 a la 5.6, por lo que la actualización de proyectos anteriores a estas podría representar complicaciones enormes por las que se recomienda analizar el desarrollo del proyecto desde cero en una versión de unity más actual.

Elaboró

Erik Marmolejo Ensastegui