Up to date

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

Export balíčků, záplat a modů

Případy použití

Často se stává, že by člověk chtěl do své hry přidat funkce až po jejím vydání.

Příkladem může být...

  • Stahovatelný obsah: možnost přidávat do hry funkce a obsah.

  • Záplaty: možnost opravit chybu, která se vyskytuje v dodaném produktu.

  • Módy: umožňují ostatním lidem vytvářet obsah pro hru.

Tyto nástroje pomáhají vývojářům rozšířit jejich vývoj nad rámec původního vydání.

Přehled souborů PCK

Godot to umožňuje pomocí funkce nazvané resource packs (soubory PCK s příponou .pck).

Výhody:

  • přírůstkové aktualizace/záplaty

  • nabízejí DLC

  • nabídka podpory modů

  • pro modifikace není třeba zveřejňovat zdrojový kód

  • modulárnější struktura projektu

  • uživatelé nemusí nahrazovat celou hru

První část jejich použití zahrnuje export a doručení projektu hráčům. Když pak někdo chce později přidat funkce nebo obsah, stačí uživatelům dodat aktualizace prostřednictvím souborů PCK.

Soubory PCK obvykle obsahují mimo jiné:

  • skripty

  • scény

  • shadery

  • modely

  • textury

  • zvukové efekty

  • hudbu

  • jakýkoli jiný zdroj vhodný pro import do hry

Soubory PCK mohou být dokonce zcela odlišným projektem Godot, který se za běhu načte do původní hry.

Generování souborů 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

Další metodou je export z příkazového řádku. Pokud výstupní soubor končí příponou PCK nebo ZIP, pak proces exportu vytvoří tento typ souboru pro zvolenou platformu.

Poznámka

Pokud chce někdo ve svojí hře podporovat mody, bude potřebovat, aby jeho uživatelé podobně vytvářelii exportované soubory. Za předpokladu, že původní hra očekává určitou strukturu zdrojů PCK a/nebo určité rozhraní pro své skripty, pak buď...

  1. Vývojář musí zveřejnit dokumentaci těchto očekávaných struktur/rozhraní, očekávat, že si moddeři nainstalují Godot Engine, a pak také očekávat, že se tito moddeři budou při vytváření obsahu modifikací pro hru řídit API definovaným v dokumentaci (aby fungovala). Uživatelé by pak k vytvoření souboru PCK použili nástroje pro export zabudované v Godotu, jak je popsáno výše.

  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.

Otevírání souborů PCK za běhu

K importu souboru PCK se používá singleton ProjectSettings. Následující příklad očekává soubor "mod.pck" v adresáři spustitelného souboru hry. Soubor PCK obsahuje v kořenovém adresáři testovací scénu "mod_scene.tscn".

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")

Varování

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.

Chcete-li toto chování zrušit, předejte jako druhý argument příkazu ProjectSettings.load_resource_pack().

Poznámka

V případě projektu v jazyce C# je třeba nejprve sestavit knihovnu DLL a umístit ji do adresáře projektu. Poté je třeba před načtením balíčku zdroje načíst jeho knihovnu DLL takto: Assembly.LoadFile("mod.dll")

Shrnutí

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.