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.
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 ...
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.
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")
private void YourFunction()
{
// This could fail if, for example, mod.pck cannot be found.
var success = ProjectSettings.LoadResourcePack("res://mod.pck");
if (success)
{
// Now one can use the assets as if they had them in the project from the start.
var importedScene = (PackedScene)ResourceLoader.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.