Los proyectos pueden enfrentarse a retos de cambiar la escala a medida que crece el código y los recursos junto con el tamaño del equipo. Para garantizar de que el proyecto funciona de la mejor manera posible, Epic Games proporciona una variedad de herramientas junto con UE que pueden ayudarte con las siguientes tareas:
Distribuir el motor y el proyecto al equipo.
Reducir los tiempos de compilación y empaquetado.
Reducir la cantidad de espacio que ocupa el proyecto en el disco duro.
Reducir el tiempo de sincronización para extraer el código y los recursos actualizados desde el control de versiones.
Configurar una canalización de compilación automatizada.
Configurar una canalización de prueba automatizada.
Todo esto sirve para disminuir los problemas que pueda tener cada miembro del equipo al trabajar con Unreal Engine y para disminuir el tiempo de iteración a la hora de compilar, realizar pruebas y cambiar funciones.
Cómo gestionar el proyecto con el software de control de versiones
El control de versiones es una parte esencial de cualquier proyecto de desarrollo de videojuegos. Un servidor de control de versiones almacena una copia centralizada y autorizada del código y los archivos del proyecto, mientras que los clientes del control de versiones permiten a los miembros del equipo acceder a esos archivos y actualizarlos. Un «repositorio» es una agrupación claramente versionada de los archivos que se almacenan en un servidor de control de versiones, mientras que los «espacios de trabajo» son los directorios del cliente donde se almacena la copia del cliente de un repositorio en particular.
Una integración del control de versiones proporciona formas de realizar las siguientes tareas:
Enviar una copia del proyecto a un dispositivo local.
Revisar y hacer la confirmación del código y los recursos.
Separar las secuencias de trabajo para evitar conflictos.
Reservar, bloquear y liberar archivos para evitar que varios miembros del equipo trabajen en el mismo archivo.
Comparar (diff) y fusionar archivos.
Además, el control de versiones mantiene una lista actualizada de los cambios confirmados en el repositorio, lo que hace posible volver fácilmente a una versión anterior de los recursos o del código si un cambio causa problemas.
UE es compatible con las siguientes integraciones del control de versiones:
Perforce
Git con GitLFS
Subversion
Diversion
Configurar una de ellas para el proyecto debe ser lo primero que hagas antes de empezar a trabajar en los recursos o el código. Se pueden usar todas, pero Epic Games usa principalmente Perforce, y muchas de las funciones de esta guía giran en torno a la integración de Perforce en UE. Una vez que el proyecto tenga un repositorio, puedes integrarlo con el explorador de contenido para extraer y gestionar archivos directamente desde Unreal Editor.
Para obtener más información sobre cómo usar el control de versiones con UE, consulta la página [Control de código fuente](understanding-the-basics\source-control) y la sección [Colaboración y control de versiones](setting-up-your-production-pipeline\collaboration-in-unreal-engine).
Cómo distribuir el proyecto con UE Game Sync
Unreal Game Sync (UGS) es un cliente que interactúa con Perforce, la herramienta Unreal Build Tool y tu IDE (si corresponde) para facilitar a los miembros del equipo la descargar o compilar versiones de trabajo del proyecto. Cuando vayas a configurar UGS, los usuarios podrán seleccionar su archivo .uproject, ver una lista de versiones de dicho proyecto y buscar versiones cuyo funcionamiento esté verificado. Si tienes un IDE instalado, puedes extraer y compilar los archivos de origen con un solo comando. Si no, puedes buscar versiones que contengan binarios precompilados y descargarlos en su lugar.
Para obtener más información, consulta UGS documentation.
Cómo crear instaladores sin conexión para tu equipo
Si te has bifurcado y has personalizado el código fuente del motor, puede que te interese crear una compilación instalada y empaquetarla como un instalador sin conexión de Unreal Engine. Para obtener más información sobre cómo crear instaladores sin conexión, consulta las páginas Creating Installed Builds e Installed Builds.
Cómo reducir el exceso de compilación de C++ con los módulos de Unreal Engine y ICWYU
Cuanto más código C++ haya en el proyecto, más tiempo tardará en compilarse desde el IDE. Por lo tanto, es habitual que los tiempos de compilación de C++ aumenten a lo largo de un proyecto. En el caso de proyectos especialmente grandes, esto puede reducir el tiempo de iteración de los programadores.
La arquitectura de UE divide el código en módulos para mitigar este problema. Cuando organices el código en módulos, solo se recompilará el código del módulo en el que estés trabajando, mientras que el resto de módulos permanecerán intactos. Usar módulos también tiene otras ventajas, sobre las que puedes informarte en la sección Unreal Engine Modules y en la página Editor Modules.
El código base de UE también usa un paradigma de incluir lo que usas (IWYU), que también puede reducir los tiempos de compilación al usar instrucciones #include y declaraciones anticipadas de manera más eficiente. Para obtener más información, consulta la página Include What You Use.
Cómo crear compilaciones automatizadas con UAT, BuildGraph y Horde
Aunque puedes empaquetar los proyectos desde Unreal Editor, el comando BuildCookRun de Unreal Automation Tool (UAT) es el mecanismo subyacente para crear compilaciones empaquetadas, y puedes acceder a él con cualquier interfaz de línea de comandos del sistema operativo. UAT tiene muchas secuencias de comandos que pueden ayudar a automatizar el proceso de compilación en aquellos casos en los que no es viable usar una GUI, como al configurar un servidor de compilación para compilar automáticamente cada envío al sistema de control de versiones. Puedes secuenciar tu propia canalización de compilación automatizada con el comando BuildCookRun de UAT para un enfoque directo y sencillo, o puedes usar BuildGraph para configurar un sistema más detallado de compilaciones automatizadas.
Horde es un conjunto sólido de integración continua construido sobre el marco BuildGraph e incluye una variedad de herramientas para monitorear el estado de las compilaciones, integrarse con software de reconocimiento de tarea, administrar dispositivos de prueba remotos y proporcionar análisis y registros detallados. Otro beneficio es que Horde también es compatible con UE Build Accelerator (UBA), que puede mejorar la velocidad de compilación al distribuir el trabajo entre varios servidores o áreas de trabajo.
Si quieres personalizar tu canalización de compilación, consulta la sección Unreal Build System para obtener una documentación completa sobre las herramientas de automatización y de compilación.
Cómo acelerar el tiempo de cooking con el cooking multiproceso
Cuando empaquetes una compilación, UE hace cooking de los recursos del proyecto para las plataformas de destino, los convierte a un formato compatible con ellas y aplica los ajustes de compresión que hayas establecido. Normalmente, se trata de un solo proceso, pero para acelerar el tiempo de cooking, puedes activar el cooking multiproceso y configurar el número de procesos de cooking simultáneos que quieres usar. Consulta la guía Multi-Process Cook para obtener más información.
Cómo optimizar la gestión de recursos con recursos virtuales
A medida que crece el número y de tamaño de los recursos del proyecto, puede ralentizar drásticamente el tiempo que tardan los miembros del equipo en actualizar su proyecto desde el control de código fuente, así como aumentar la cantidad de espacio en el disco duro que usa una copia local del proyecto.
Para contrarrestarlo, Unreal Engine admite los recursos virtuales. Separan los datos principales de los recursos de los metadatos que usan para mostrarse en el explorador de contenido de tu editor. Cuando los miembros de tu equipo sincronizan el proyecto, solo sincronizan los metadatos, lo que usa una cantidad de espacio mucho menor que el recurso completo. Cuando necesitan acceder al recurso para verlo o modificarlo, UE extrae los datos en bloque del repositorio del equipo o de una caché de datos derivados (DDC) a la carta.
Para obtener más información, consulta la documentación de Virtual Assets.
Cómo reducir el tiempo de compilación de los sombreadores en el editor con una caché de datos derivados
Muchos recursos de UE usan datos derivados. Por ejemplo, cuando creas materiales, UE necesita compilar sombreadores antes de que los materiales puedan mostrarse por completo. Los archivos del sistema de control de versiones contienen las instrucciones necesarias para crear el sombreador, las cuales son comunes a todas las plataformas y sirven para editar. Los datos derivados existen como un concepto y un mecanismo distintos: por un lado, almacenarlos en el mismo archivo que sus datos de origen puede hacer que tu repositorio sea demasiado grande, y por otro lado, el formato exacto de un sombreador compilado puede ser diferente en función del hardware y el sistema operativo que estés usando. A medida que crece el proyecto o equipo, este puede ser un proceso engorroso a la hora de buscar cambios grandes, sobre todo si tienes que volver a descargar el proyecto de cero.
Las cachés de datos derivados (DDC) actúan como un repositorio secundario específicamente para este tipo de datos derivados. Cuando un usuario compila o hace cooking de un recurso, añade los datos al DDC. Luego, cuando otros usuarios con hardware compatible sincronizar el recurso, UE puede extraer tanto el recurso como sus datos derivados, lo que significa que no tienen que volver a compilarlo de cero. A diferencia del control de versiones, los DDC no suelen conservar todas las versiones de todos los archivos enviados, sino solo los datos más recientes hasta un límite especificado. En el caso poco habitual de que alguien necesite reservar una versión muy antigua del proyecto, siempre se pueden volver a generar los datos derivados. Puedes implementar una amplia variedad de DDC compartidos en distintas ubicaciones de la plantilla y definir reglas sobre cómo acceden a ellos los miembros del equipo para garantizar que utilizan las fuentes más rápidas y fiables.
Para obtener más información sobre el uso de DDC, consulta la Derived Data Cache documentation. UE admite varios métodos para alojar un DDC compartido, pero recomendamos Zen Storage Server.
Cómo escalar las pruebas con pruebas automatizadas
UE cuenta con varios marcos de prueba automatizadas para probar el código en distintos contextos. Esto puede ayudarte a detectar errores en el código antes y más frecuencia, y da a los evaluadores de calidad más espacio para centrarse en los problemas de la experiencia del usuario. Para obtener más información, consulta la sección Automation Test Framework.