Antes de poder distribuir un proyecto de Unreal Engine a sus usuarios, debe empaquetarse correctamente. Empaquetar un proyecto asegura que todo el código y el contenido están actualizados y en el formato correcto para ejecutarse en la plataforma de destino.
El proceso de empaquetar un proyecto conlleva varios pasos. Primero se compila el código fuente específico del proyecto. Después, todo el contenido se compila o elabora a un formato que pueda utilizarse en la plataforma de destino. Entonces, el código compilado y el contenido elaborado se empaqueta en un conjunto de archivos distribuible, como un instalador.
Bajo el menú principal Archivo, hay una opción llamada Empaquetar proyecto, con un submenú. El submenú presenta una lista de las plataformas compatibles para las que se puede empaquetar el proyecto.
Hay distintas selecciones disponibles al empaquetar para Android. Para obtener más información, consulta la página Android Reference.
También hay algunas opciones avanzadas que puedes configurar antes de empaquetar.
Configurar un mapa predeterminado del juego
Antes de empaquetar tu juego, tendrás que configurar un mapa predeterminado del juego que cargará cuando se inicie tu juego empaquetado. Si no configuras un mapa y utilizas un proyecto en blanco, solo verás una pantalla negra cuando se inicie el juego. Si has usado uno de los mapas de plantilla, como el de la plantilla de primera persona o tercera persona, el mapa inicial se cargará.
Para configurar el mapa predeterminado del juego, haz clic en Editar > Configuración del proyecto > Mapas y modos en el menú principal del editor:
Crear paquetes
Para empaquetar un proyecto para una plataforma específica, haz clic en Archivo > Empaquetar proyecto > [Nombre de la plataforma] en el menú principal del editor:
Se te presentará un diálogo de selección del directorio de destino. Si se completa el empaquetado sin problemas, este directorio será donde se almacene el proyecto empaquetado.
Confirmar el directorio de destino iniciará el proceso de empaquetado del proyecto para la plataforma seleccionada. Dado que el proceso de empaquetado puede llevar mucho tiempo, se ejecuta en segundo plano, lo que te permite seguir utilizando el editor. En la esquina inferior derecha del editor se mostrará un indicador de estado con el progreso:
El indicador de estado también incluye un botón para cancelar el proceso de empaquetado. Además, el enlace para mostrar el registro se puede utilizar para mostrar más información de la exportación, lo que puede resultar útil en caso de que haya algún error en el proceso de empaquetado o advertencias que puedan revelar errores potenciales en el producto:
Los mensajes más importantes del registro, como los errores y las advertencias, se muestran en la ventana habitual del registro de mensajes:
Si estas ventanas no están visibles, puedes acceder a ellas a través de las opciones en Ventana > Herramientas para desarrolladores > Registro de salida/Registro de mensajes.
Distribución
Para enviar un juego de iOS o Android al App Store o Google Play Store, tendrás que crear un paquete en modo de distribución. Para ello, ve a la opción Configuración de empaquetado en el menú Empaquetado y marca la casilla de verificación Distribución.
En el caso de iOS, tendrás que crear un certificado de distribución y un archivo de tipo *mobileprovision* en el sitio web de desarrolladores de Apple. Instala el certificado de distribución de la misma manera que el certificado de desarrollo y nombra el aprovisionamiento de distribución con un prefijo «Distro_», junto al otro (para que tengas tanto Distro_MyProject.mobileprovision como MyProject.mobileprovision).
En Android, tendrás que crear una clave para firmar el archivo .apk y proporcionar información a nuestras herramientas de compilación con un archivo llamado SigningConfig.XML. Este archivo existe en el directorio del motor instalado (Engine/Build/Android/Java/). Si editas este archivo, los cambios se aplicarán a todos tus proyectos. Sin embargo, puedes copiar este archivo al directorio Build/Android/ de tu proyecto (sin el subdirectorio Java/), y se usará solo para ese proyecto. Puedes encontrar instrucciones para generar la clave y completar el archivo en el mismo.
Ajustes avanzados
Al hacer clic en Archivo > Empaquetar proyecto > Configuración del proyecto… o Editar > Configuración del proyecto > Empaquetado en el menú principal, accederás a las opciones de configuración avanzada de la función de empaquetado.
Por el momento, estas incluyen:
| Opción | Descripción |
|---|---|
Configuración de compilación | La configuración con la que compilar el código de tu proyecto. Para depurar un proyecto de código, selecciona *DebugGame*. Para la mayoría de los proyectos desarrollados con asistencia de depuración mínima, pero mejor rendimiento, selecciona Desarrollo. Para la compilación final, que no incluirá información ni funciones de depuración (como puede ser el dibujado de formas de depuración o los mensajes de depuración en pantalla), elige *Shipping*. Los proyectos que solo funcionen en Blueprint no tendrán la opción de crear una compilación de depuración. |
Directorio de preparación | El directorio en el que se almacenará tu compilación empaquetada. Se actualizará automáticamente cuando elijas un directorio distinto en la selección de directorio de destino. |
Recompilación completa | Determina si se debe compilar todo el código. Si se desactiva, solo se compilará el código que se haya modificado. Esto puede acelerar el proceso de empaquetado. Antes de enviar una compilación, es recomendable hacer una recompilación completa para asegurar que no queda nada pendiente o desactualizado. Esta opción está activada por defecto. |
Utilizar archivo PAK | Determina si empaquetar los recursos del proyecto como archivos individuales o como un solo archivo conjunto. Si la opción está activada, todos los recursos se incluirán en un único archivo .pak en lugar de copiarse individualmente. Si tu proyecto usa muchos archivos de recursos, un archivo Pak puede facilitar su distribución, ya que reduce la cantidad de archivos que tienes que transferir. Esta opción está desactivada por defecto. |
Generar fragmentos | Permite generar fragmentos de archivos .pak que se pueden utilizar para las instalaciones por transmisión. |
Compilar datos de instalación de fragmento Http | Determina si se generarán datos para el instalador de fragmentos http. Esta opción permite que los datos puedan alojarse en un servidor web para instalarse en tiempo de ejecución. |
Directorio de datos de instalación de fragmento http | Determina el directorio en el que se instalarán los datos una vez compilados. |
Versión de datos de instalación de fragmento http | Determina el nombre de la versión de datos de instalación de fragmento http. |
Incluir instalador de requisitos previos | Especifica si se deben incluir instaladores para los requisitos previos de juegos empaquetados, como componentes redistribuibles de sistema operativo. |
Directorios que siempre precisan cooking | Determina la lista de directorios con archivos que siempre se deben elaborar. Por defecto, la función de empaquetado detecta y elabora automáticamente todo el contenido al que hace referencia tu juego. Puede que parte del contenido no esté incluido en las referencias directas, como pueden ser las texturas de IU de Slate personalizadas. Los directorios en los que se vaya a almacenar contenido similar debería estar listado aquí para que se incluya en el paquete. |
Firmas y cifrado
Con el lanzamiento de Unreal Engine 4.22, hemos integrado la biblioteca estándar del sector OpenSSL para las plataformas de escritorio (Windows, Mac y Linux).
Al distribuir en un producto para envío, los archivos .Pak se pueden firmar o encriptar, lo que dificulta la extracción o manipulación de datos. Para activar, desactivar o ajustar los ajustes criptográficos de tu proyecto, dirígete al menú de configuración del proyecto y busca la sección Cripto.
Desde este menú se puede acceder a los siguientes ajustes:
| Opción | Descripción |
|---|---|
Cifrar archivos ini de PAK | Cifra todos los archivos |
Cifrar índice de PAK | Cifra el índice del archivo |
Cifrar archivos UAsset | Cifra los archivos |
Cifrar recursos | Cifra por completo todos los recursos en el archivo Ten en cuenta que este ajuste tiene un efecto relevante en el tiempo de ejecución, el rendimiento de E/S de los archivos y aumenta la entropía final de los datos empaquetados, lo que hace menos eficiente al sistema de distribución de parches. |
Habilitar firma de PAK | Activa o desactiva la firma de archivos .pak. |
Además, se pueden asignar o borrar claves para la firma o el cifrado.
Preparación del contenido
Durante el proceso de iteración sobre el contenido modificado o añadido a un juego, es posible que los desarrolladores no quieran pasar por todo el proceso de empaquetado al directorio de preparación para ejecutarlo después. Por lo tanto, es posible pasar por un proceso de cooking solo para el contenido de una plataforma de destino específica sin empaquetarlo al hacer clic en Archivo > Cooking de contenido > [Nombre de la plataforma].
Ten en cuenta que esta función actualizará el contenido de tu espacio de trabajo de desarrolladores local y no copiará ninguno de los recursos al directorio de preparación. Puedes ejecutar el juego directamente desde tu espacio de trabajo de desarrolladores para iterar rápidamente.
Optimizar tiempos de carga
Los tiempos de carga cortos son esenciales en los juegos de mundo abierto, pero son importantes en cualquier tipo de juego. Unreal Engine ofrece distintos métodos de optimizar los tiempos de carga del proyecto durante el proceso de empaquetado. Aquí te mostramos algunas prácticas recomendadas para reducir el tiempo de carga de tus juegos. Para obtener información sobre cómo empaquetar el proyecto, consulta la sección Packaging and Cooking Games.
Usar el cargador orientado a eventos (EDL) y el subproceso de carga asíncrona (ALT)
El subproceso de carga asíncrona (ALT) está desactivado de forma predeterminada, pero se puede activar en el menú de configuración del proyecto en la sección Motor > Transmisión. En el caso de motores con modificaciones, puede que haga falta hacer algunos ajustes, pero, por lo general, El ALT debería duplicar la velocidad de carga, incluyendo los juegos con tiempos de carga anticipados y los que transmiten datos constantemente. El ALT funciona ejecutando una serialización y poscarga del código de forma simultánea en dos subprocesos independientes, lo que también significa que los constructores de clase
UObject, las funcionesPostInitPropertiesy las funcionesSerializedel código del juego deben ser seguros para subprocesos. Al activarse, el ALT duplica la velocidad de carga. Para obtener más información sobre los métodos de carga asíncronos (en C++), consulta la página Asynchronous Asset Loading.El cargador orientado a eventos (EDL) está activado de forma predeterminada, pero se puede activar en el menú de configuración del proyecto en la sección de Motor > Transmisión. En la mayoría de los proyectos, el EDL, reducirá a la mitad los tiempos de carga. El EDL es estable y se puede adaptar a versiones previas de Unreal Engine o modificar para versiones personalizadas o modificadas del motor.
Comprimir tu archivo .pak
Para usar la compresión de archivos
.paken tu proyecto, abre la configuración del proyecto y busca la sección Empaquetado. En esta sección, abre la parte avanzada del encabezado del empaquetado y marca la casilla *Create compressed cooked packages* que aparecerá.La mayoría de las plataformas no ofrecen compresión automática, por lo que comprimir los archivos
.pakreducirán los tiempos de carga, pero hay un par de casos particulares que tener en cuenta:
| Plataforma | Recomendación |
|---|---|
Steam | Steam comprime los archivos mientras los descargan los usuarios, por lo que los tiempos de descarga iniciales no se verán afectados por la compresión del archivo .pak de tu juego. Sin embargo, el sistema de parches diferenciales de Steam funciona mejor con archivos sin comprimir. Los archivos .pak comprimidos requieren menos espacio en el sistema de los clientes, pero tardan más tiempo den descargarse para parchearlos. |
Oculus | No habilites la compresión del archivo |
Orden del archivo PAK
Un archivo .pak bien ordenado es fundamental para reducir los tiempos de carga. Para ayudarte a ordenar tu archivo .pak de manera óptima, UE4 ofrece una serie de herramientas que te permiten averiguar el orden en el que se requieren los recursos de datos para compilar paquetes con tiempos de carga menores. Este proceso se basa en un concepto similar a la optimización guiada por perfil. Sigue este método para ordenar el archivo .pak :
Compila y ejecuta el juego empaquetado con la opción de la línea de comandos
-fileopenlog, que hará que el motor registre el orden en el que abre los archivos.Pon a prueba todas las partes relevantes del juego. Carga todos los niveles, emplea todos los personajes jugables, prueba todas las armas, vehículos, etc. Cuando se hayan cargado todos estos elementos, sal del juego.
Habrá un archivo en el juego implementado denominado
GameOpenOrder.logque contiene la información necesaria para optimizar el orden del archivo .pak . Por ejemplo, en las compilaciones de Windows, este archivo se encontrará enWindows/(YourGame)/Build/Windows/FileOpenOrder/. Copia este archivo a tu directorio de desarrollo, en la ruta/Build/Windows/FileOpenOrder/. En las compilaciones de Mac, el archivo se encontrará enMacNoEditor/(YourGame)/Build/WindowsNoEditor/FileOpenOrder/. Copia este archivo a tu directorio de desarrollo, en la rutaBuild/Mac/FileOpenOrder/.Con el archivo de registro en su lugar, vuelve a generar el archivo
.pak. Este y todos los futuros archivos.pakproducidos utilizarán el orden de archivo indicado en el archivo de registro.
En un entorno de producción, el archivo de registro se debería comprobar por medio del control de versiones y actualizar regularmente con los resultados obtenidos al ejecutar -fileopenlog, incluida una última vez cuando el juego esté listo para enviarse.