Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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

In order to pack all resources of a project into a PCK file open the project and go to Project/Export and click on "Export PCK/Zip". Also make sure to have an export template selected while doing so.

../../_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. El desarrollador usa Godot para construir una herramienta GUI para agregar su contenido API exacto a un proyecto. Esta herramienta de Godot debe ejecutarse en una versión del motor habilitada para herramientas o tener acceso a una (distribuida junto con o quizás en los archivos del juego original). Luego, la herramienta puede usar el ejecutable Godot para exportar un archivo PCK desde la línea de comandos con OS.execute(). Tiene mucho sentido que el juego no use una construcción de herramientas (por seguridad) y que las herramientas de modding do usen una construcción del motor habilitada para herramientas.

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

By default, if you import a file with the same file path/name as one you already have in your project, the imported one will replace it. This is something to watch out for when creating DLC or mods. You can solve this problem by using a tool that isolates mods to a specific mods subfolder. However, it is also a way of creating patches for one's own game. A PCK file of this kind can fix the content of a previously loaded PCK.

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

This tutorial explains how to add mods, patches, or DLC to a game. The most important thing is to identify how one plans to distribute future content for their game and develop a workflow that is customized for that purpose. Godot should make that process smooth regardless of which route a developer pursues.