Exportando paquetes, parches y mods

Casos de uso

A menudo, uno quisiera agregar funcionalidad a un juego después de que se haya deplegado.

Ejemplos de esto incluyen ...

  • Contenido descargable: la capacidad de agregar características y contenido a su juego.

  • Parches: la capacidad de corregir un error que está presente en un producto enviado.

  • Mods: otorga a otras personas la capacidad de crear contenido para el juego.

Estas herramientas ayudan a los desarrolladores a ampliar su desarrollo más allá de la versión inicial.

Visión general de los archivos PCK

Godot lo habilita a través de una función llamada resource packs (archivos PCK, con la extensión .pck).

Ventajas:

  • actualizaciones / parches incrementales

  • ofrecer DLCs

  • ofrecer soporte para mods

  • No es necesario revelar el código fuente para los mods

  • estructura del proyecto más modular

  • los usuarios no tienen que reemplazar todo el juego

La primera parte de usarlos implica exportar y entregar el proyecto a los jugadores. Luego, cuando uno quiere agregar funcionalidad o contenido más adelante, solo entregan las actualizaciones a los usuarios a través de archivos PCK.

Los archivos PCK generalmente contienen, pero no se limitan a:

  • scripts

  • escenas

  • shaders

  • modelos

  • texturas

  • efectos de sonido

  • música

  • Cualquier otro recurso adecuado para importar en el juego

Los archivos PCK pueden ser incluso un proyecto Godot completamente diferente, en el que se carga el juego original en tiempo de ejecución.

Generando archivos PCK

Para empaquetar todos los recursos de un proyecto en un archivo PCK, abra el proyecto y vaya a Proyect /Export y haga clic en "Export PCK / Zip". También asegúrese de tener una plantilla de exportación seleccionada mientras lo hace.

../../_images/export_pck.png

Otro método sería export from the command line. Si el archivo de salida finaliza con una extensión de archivo PCK o ZIP, el proceso de exportación generará ese tipo de archivo para la plataforma elegida.

Nota

Si uno desea admitir mods para su juego, necesitarán que sus usuarios creen archivos exportados de manera similar. Asumiendo que el juego original espera una cierta estructura para los recursos del PCK y / o una cierta interfaz para sus scripts, entonces ...

  1. El desarrollador debe publicar la documentación de estas estructuras / interfaces esperadas, esperar que los modders instalen el motor de Godot, y luego esperar que esos modders se ajusten a la API definida de la documentación al crear contenido de mod para el juego (para que funcione). Los usuarios luego usarían las herramientas de exportación integradas de Godot para crear un archivo PCK, como se detalla arriba.

  2. The developer uses Godot to build a GUI tool for adding their exact API content to a project. This Godot tool must either run on a tools-enabled build of the engine or have access to one (distributed alongside or perhaps in the original game's files). The tool can then use the Godot executable to export a PCK file from the command line with OS.execute(). The game itself shouldn't use a tool-build of the engine (for security), so it's best to keep the modding tool and game separate.

Abrir archivos PCK en tiempo de ejecución

Para importar un archivo PCK, se usa el singleton ProjectSettings. El siguiente ejemplo espera un archivo “mod.pck” en el directorio del ejecutable del juego. El archivo PCK contiene una escena de prueba “mod_scene.tscn” en su raíz.

func _your_function():
    # This could fail if, for example, mod.pck cannot be found.
    var success = ProjectSettings.load_resource_pack("res://mod.pck")

    if success:
        # Now one can use the assets as if they had them in the project from the start.
        var imported_scene = load("res://mod_scene.tscn")

Advertencia

Si importas un archivo con la misma ruta/nombre de archivo que el que ya tienes en tu proyecto, el importado lo reemplazará. Esto es algo a tener en cuenta al crear DLC o mods (resuelto fácilmente con una herramienta que aísla mods a una subcarpeta específica de mods). Sin embargo, también es una forma de crear parches para el propio juego. Un archivo PCK de este tipo puede fijar el contenido de un PCK cargado previamente.

Para no utilizar este comportamiento, pasa false como segundo argumento del ProjectSettings.load_resource_pack().

Nota

Para un proyecto C#, necesitas compilar la DLL y ubicarla primero en el directorio de proyecto. Después, antes de cargar el resource pack, necesitarás cargar la DLL de este modo: Assembly.LoadFile("mod.dll")

Sumario

Este tutorial debería ilustrar que tan fácil es añadir mods, parches o DLCs a un juego. Lo más importante es identificar como se planea distribuir contenido futuro para el juego y desarrollar un flujo de trabajo que es apropiado para ese propósito. Godot debería de eso un proceso simple sin importar cual ruta el desarrolador decide seguir.