Cómo trabajar con Unity Build Server
Una de las prácticas en el sector profesional del desarrollo de videojuegos es la integración continúa del proyecto. Unity va progresivamente incorporando diferentes herramientas para el pipeline de trabajo y de creación, pero muchas veces integra otra serie de herramientas quizás menos conocidas, que son de gran ayuda en procesos como el que comentaba en las primeras líneas.
Pipeline de integración en videojuegos
Este es el caso por ejemplo de Unity Build Server, que nos permite generar el proceso de compilación del proyecto en la nube sin tener que consumir recursos y tiempo de nuestros equipos. Esto permite además a los grupos de desarrollo una mayor agilidad, flexibilidad y rapidez. Al usar hardware de la red, el equipo de desarrollo puede seguir trabajando mientras los procesos de compilación se ejecutan, además hace mucho más accesible la compilación del proyecto para diferentes haciendo que el testeo de los diferentes elementos del desarrollo sean también mucho más dinámicos. Los procesos de compilación se pueden hacer cada vez más largos a medida que el proyecto que vayamos desarrollando vaya creciendo también en complejidad y dimensiones.
Hay que destacar que Unity Build Server no es una solución para todos los desarrolladores. El servicio está solo disponible para las licencias Pro y Enterprise y no puede ser utilizado con las licencias más sencillas como Unity Plus o Unity Personal. En el caso de licencias de tipo Enterprise, se disponen de diferentes licencias para poder usar el servicio, dependiendo del contrato que se tenga, por otro lado, las licencias Pro pueden acceder al servicio a través del uso de packages. Una limitación importante que hace que la mayoría de estudios indie sigan planteándose otras soluciones de integración continua. Además Unity Build Server requiere trabajar con la versión 2019.4.3 o posteriores del motor gráfico. Lo que en ciertos proyectos con algo más de vida implicaría también una actualización del proyecto, con todos los dolores de cabeza que en según qué casos esto pueda comportar. La gestión del servidor se realiza desde el Dashboard de proyectos de Unity, haciendo que su configuración sea algo más sencilla y centralizada.
Unity Build Server puede funcionar con un sistema de licencias flotantes, es decir, la licencia se asigna a un grupo y el servidor de licencias puede ir asignando la licencia de Unity Build Server de forma dinámica a los diferentes usuarios para que puedan realizar la operación y una vez finalizada la compilación devolver la licencia al servidor para que la vuelva a gestionar. Punto que también busca la máxima flexibilidad del sistema. Este sistema de licencias de Unity Build Server, permite el trabajo con granjas de compiladas basadas en una red local o la compilación en la nube usando “máquinas virtuales” que permitan la compilación de los proyectos así como su deploy.
Como ya he mencionado, normalmente encontraremos otros sistemas de CI (continous integration) basados en soluciones como Jenkins o Teamcity, o incluso otras combinaciones que integran otro tipo de servicios. Unity incorporó otro servicio como Unity Cloud que permitía también la compilación de proyectos en la nube. Este servicio no acabó de popularizarse demasiado debido a los tiempos de compilación que no se podían calcular y que dependían en muchos casos de la saturación del sistema y que el sistema de compilación en la nube estaba basado en MacOsX lo que en algunos casos podría afectar a algunas compilaciones que tuviesen elementos específicos para ser compilados bajo Windows.
Aunque cabe mencionar que precisamente para no irrumpir en los sistemas de integración continua ya implementados en un equipo de trabajo, Unity Build Server es capaz de configurarse para trabajar con los diferentes sistemas de CI que hemos mencionado y con otros sistemas de automatización. En este caso la función del servidor sería la de vehicular y hacer más fluido el sistema de integración.
Cuando empezamos a trabajar en proyectos independientes o en proyectos personales, muchas veces no prestamos demasiado detalle a todos los procesos que implica la compilación de un proyecto. No es hasta que empezamos a trabajar a un nivel más profesional, y nos enfrentamos a la compilación para multiplataformas, el trabajo con diferentes departamentos, las entregas y un volumen de proyecto considerable que nos empezamos a enfrentar a herramientas tan comunes en el sector profesional como pueden ser las herramientas de integración continua. Es por eso, que para la mayoría de usuarios del motor gráfico este tipo de pipelines o estas herramientas son totalmente desconocidas. A pesar de que herramientas como la integración continua o el control de versiones son imprescindibles para el desarrollo de proyectos en un estudio, sobre todo las primeras pueden ser algo más complejas y prescindibles para el usuario que se está iniciando en el desarrollo de videojuegos.