Exportando proyectos

¿Porqué exportar?

Originariamente, Godot no tenía ningún medio para exportar proyectos. Los desarrolladores tenían que compilar los archivos binarios necesarios y hacer el empaquetado para cada plataforma manualmente.

Cuando más desarrolladores (y algunos no-programadores) empezaron a usarlo, y cuando nuestra compañía empezó a recibir más y más proyectos a la vez, se volvió evidente que aquello era un cuello de botella.

En PC

Distribuir un proyecto de juego en PC con Godot es bastante fácil. Deje el binario godot.exe (o godot) en el mismo lugar que el archivo project.godot, comprima el proyecto y listo.

Esto suena sencillo, pero probablemente haya algunas razones por las que el desarrollador no quiera hacerlo. La primera es que podría no ser conveniente distribuir una gran cantidad de archivos. Algunos desarrolladores no les gustará que los usuarios curiosos se fijen en cómo se hizo el juego, otros pueden encontrarlo poco elegante, etc. Otra razon es que se puede querer tener un binario compilado especialmente para el juego, de menor tamaño o más optimizado, que no incluya herramientas del editor y depurador.

Finalmente, Godot tiene un sistema simple pero eficiente para crear DLC como archivos de paquete adicionales.

En móvil

El mismo escenario en dispositivos móviles es un poco peor. Para distribuir un proyecto en estos dispositivos, se compila un archivo binario para cada una de las plataformas y después se añade a un proyecto nativo junto con los datos del juego.

Esto puede ser problemático porque significa que el desarrollador debe de estar familiarizado con los kits de desarrollo de cada plataforma antes de ser capaz de exportar. Aunque siempre es recomendable estudiar cada kit de desarrollo, puede ser frustrante verse forzado a hacerlo cuando no se desea.

Hay otro problema con este sistema: diferentes dispositivos prefieren algunos tipos de datos en formatos distintos para funcionar. El mejor ejemplo de esto es la compresión de texturas. Todo el hardware de PC usa compresión S3TC (BC) y ese ha sido el estándar desde hace más de una década, pero los dispositivos móviles usan diferentes formatos para la compresión de texturas, como el PVRCT (iOS) o ETC (Android).

Menú de exportación

Después de diversos intentos con diferentes flujos de exportación, el sistema actual ha demostrado ser el mejor. En el mismo instante en el que se escribe esto, no todas las plataformas están soportadas, pero su número continúa creciendo.

Para abrir el menú de exportación, haz clic en el botón Exportar:

../../_images/export.png

Se abrirá el menú de exportación, no obstante estará completamente vacío. Esto es porque hay que agregar configuraciones de exportación (Presets).

../../_images/export_dialog.png

Para crear un preset de exportación, haz clic en el botón Añadir.... en la parte superior del menú de exportación. Se abrirá una lista desplegable de plataformas entre las que puedes elegir para un preset de exportación.

../../_images/export_preset.png

Las opciones por defecto deberían ser suficientes para hacer exportar, así que ajustarlas no es necesario normalmente. Ahora bien, muchas plataformas necesitan la instalación de herramientas adicionales (SDKs) para poder exportar. Adicionalmente, Godot necesita las plantillas de exportación instaladas para crear paquetes. El menú de exportación se mostrará un error cuando no encuentre algo y no dejará que el usuario exporte a la plataforma hasta que se resuelva el problema:

../../_images/export_error.png

En ese momento, se espera que el usuario vuelva a la documentación y siga las instrucciones de como configurar adecuadamente esa plataforma.

Plantillas de exportación

Aparte de configurar la plataforma, las plantillas de exportación deben estar instaladas para poder exportar proyectos. Se pueden conseguir como un archivo TPZ (un ZIP renombrado) desde la página de descarga de la web.

Una vez descargadas, se pueden instalar usando la opción del editor "Instalar Plantillas de Exportación":

../../_images/exptemp.png

Opciones de recurso

Cuando se exporta, Godot hace una lista de todos los archivos a exportar y después hace el empaquetamiento. Hay 3 diferentes modos de exportación:

  • Exportar todos los recursos del proyecto

  • Exportar escenas seleccionadas (y dependencias)

  • Exportar los recursos seleccionados (y dependencias)

../../_images/expres.png

Exportar todos los recursos del proyecto exportará todos los recursos del proyecto. Exportar escenas seleccionadas y Exportar recursos seleccionados le da una lista de las escenas o recursos del proyecto, y tiene que seleccionar cada escena o recurso que quiera exportar.

../../_images/expselected.png

Nota

Los archivos y carpetas cuyos nombres comienzan con un punto nunca se incluirán en el proyecto exportado. Esto se hace para evitar que las carpetas de control de versiones como .git se incluyan en el archivo PCK exportado.

Justo debajo de la lista de recursos hay dos filtros que se pueden configurar. El primero permite exportar archivos que no son recursos, como .txt, .json y .csv, junto con el proyecto. El segundo filtro se puede utilizar para excluir todos los archivos de un cierto tipo sin tener que deseleccionar manualmente cada uno. Por ejemplo, los archivos .png.

Exportando desde la línea de comandos

En producción es útil automatizar las compilaciones, Godot ofrece soporte a esto con los parámetros de línea de commandos --export y --export-debug. Exportar desde la línea de comandos aún requiere una plantilla de exportación para definir los parámetros de exportación. Una invocación básica comandos podría ser:

godot --export "Windows Desktop" some_name.exe

Esto exportará a some_name.exe, asumiendo que hay un preset llamado "Windows Desktop" y se puede encontrar la plantilla correspondiente. (El nombre del preset de exportación debe escribirse entre comillas si contiene espacios o caracteres especiales). La ruta de salida es relativa a la ruta del proyecto o absoluta; no respeta el directorio desde el cual se invocó el comando.

La extensión del archivo de salida debe coincidir con la utilizada por el proceso de exportación de Godot:

  • Windows: .exe

  • macOS: .zip (desde todas las plataformas) o .dmg (solo al exportar desde macOS). No se admite directamente el archivo .app, aunque el archivo ZIP generado contiene un paquete .app.

  • Linux: Cualquier extensión (incluyendo ninguna). .x86_64 se utiliza típicamente para binarios de 64 bits en arquitectura x86.

  • HTML5: .zip

  • Android: .apk

  • iOS: .zip

También puedes configurarlo para exportar sólo el archivo PCK o ZIP, permitiendo que una sola exportación sea usada con múltiples ejecutables de Godot. Cuando se haga esto, la plantilla de exportación debe ser especificada en la línea de comandos:

godot --export-pack "Windows Desktop" some_name.pck

A menudo es útil combinar el flag --export con el flag --path, para que no necesites hacer cd a la carpeta del proyecto antes de ejecutar el comando:

godot --path /path/to/project --export "Windows Desktop" some_name.exe

Ver también

Consulta Tutorial de línea de comandos para obtener más información sobre cómo utilizar Godot desde la línea de comandos.

PCK contra formatos de archivo ZIP

Cada formato tiene sus ventajas y desventajas. PCK es el formato predeterminado y recomendado para la mayoría de los casos de uso, pero puede que quieras usar un archivo ZIP en su lugar, dependiendo de tus necesidades.

Formato PCK:

  • Formato no comprimido. Un tamaño de archivo más grande, pero más rápido para leer/escribir.

  • No se puede leer ni escribir con las herramientas que normalmente están presentes en el sistema operativo del usuario, aunque hay third-party tools para extraer y crear archivos PCK.

Formato ZIP:

  • Formato comprimido. Tamaño de archivo más pequeño, pero más lento para leer/escribir.

  • Se puede leer y escribir con herramientas que normalmente están presentes en el sistema operativo del usuario. Esto puede ser útil para facilitar el modding (ver también Exportando paquetes, parches y mods).

Advertencia

Debido al bug known bug, cuando se utiliza un fichero ZIP como PCK, el binario resultante no intentará usarlo automáticamente. Por consiguiente, es necesario crear un launcher script para que el jugador pueda hacer doble clic o ejecutarlo desde una terminal para iniciar el proyecto:

:: launch.bat (Windows)
@echo off
my_project.exe --main-pack my_project.zip

# launch.sh (Linux)
./my_project.x86_64 --main-pack my_project.zip

Guarde el script de inicio y colóquelo en la misma carpeta que el binario exportado. En Linux, asegúrese de otorgar permisos ejecutables al script de inicio usando el comando `` chmod + x launch.sh ``.