Up to date

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

Exportando pacotes, patches e mods

Casos de uso

Muitas vezes, há a necessidade de adicionar funcionalidade ao jogo depois de ter sido instalado.

Exemplos disso incluem...

  • Conteúdo para download: a capacidade de adicionar recursos e conteúdo ao jogo.

  • Patches: a capacidade de corrigir um bug que está presente em um produto enviado.

  • Mods: conceda a outras pessoas a capacidade de criar conteúdo para o jogo.

Essas ferramentas ajudam os desenvolvedores a estender seu desenvolvimento além do lançamento inicial.

Visão geral dos arquivos PCK

Godot habilita isso através de um recurso chamado resource packs (arquivos PCK, com extensão .pck).

Vantagens:

  • atualizações/patches incrementais

  • oferecer DLCs

  • oferecer suporte a mods

  • nenhuma divulgação de código fonte necessária para mods

  • estrutura de projeto mais modular

  • os usuários não precisam substituir o jogo inteiro

A primeira parte do uso envolve exportar e entregar o projeto aos jogadores. Então, quando se deseja adicionar funcionalidade ou conteúdo mais tarde, eles apenas entregam as atualizações através de arquivos PCK aos usuários.

Os arquivos PCK geralmente contêm, mas não se limitam a:

  • scripts

  • cenas

  • shaders

  • modelos

  • texturas

  • efeitos sonoros

  • música

  • qualquer outro asset adequado para importação para o jogo

Os arquivos PCK podem até ser um projeto Godot totalmente diferente, que o jogo original carrega no tempo de execução.

Gerando arquivos 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

Outro método seria exportar da linha de comando. Se o arquivo de saída terminar com uma extensão de arquivo PCK ou ZIP, então o processo de exportação construirá esse tipo de arquivo para a plataforma escolhida.

Nota

Se alguém deseja suportar mods para seu jogo, eles precisarão que seus usuários criem arquivos exportados da mesma forma. Assumindo que o jogo original espera uma certa estrutura para os recursos do PCK e/ou uma determinada interface para seus scripts, então...

  1. O desenvolvedor deve divulgar a documentação dessas estruturas/interfaces esperadas, esperar que os modders instalem o Godot Engine, e também esperar que esses modders estejam de acordo com a API definida pela documentação ao construir o conteúdo do mod para o jogo (para que ele funcione). Os usuários usariam então as ferramentas de exportação Godot construídas pelo Godot para criar um arquivo PCK, conforme detalhado acima.

  2. O desenvolvedor usa Godot para construir uma ferramenta GUI para adicionar seu conteúdo API exato a um projeto. Esta ferramenta Godot deve ser executada em uma construção do mecanismo habilitada para ferramentas ou ter acesso a uma (distribuída ao lado ou talvez nos arquivos originais do jogo). A ferramenta pode então utilizar o executável Godot para exportar um arquivo PCK da linha de comando com OS.execute(). O jogo em si não deve utilizar uma ferramenta de construção da engine (para segurança), portanto é melhor manter a ferramenta de modding e o jogo separados.

Abrindo arquivos PCK durante a execução

Para importar um arquivo PCK, utiliza-se o ProjectSettings singleton. O exemplo a seguir espera um arquivo "mod.pck" no diretório do executável dos jogos. O arquivo PCK contém uma cena de teste "mod_scene.tscn" em sua raiz.

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

Aviso

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 cancelar este comportamento, passe false como o segundo argumento para ProjectSettings.load_resource_pack().

Nota

Para um projeto em C#, você precisa construir a DLL e colocá-la no diretório do projeto primeiro. Em seguida, antes de carregar o pacote de recursos, você precisa carregar a DLL da seguinte forma: Assembly.LoadFile("mod.dll")

Resumo

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.