Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Módulo de Tempo de Execução do Fornecedor (Vendor Runtime Module)

Um Módulo de Tempo de Execução do Fornecedor é um módulo do Godot que é aplicável apenas em tempo de execução em um projeto em execução. Ele é criado como um módulo C++ personalizado regular, mas é empacotado usando um plugin do editor para tornar a funcionalidade que ele fornece facilmente acessível e utilizável dentro de um projeto Godot padrão (stock).

Para que serve?

Os módulos de tempo de execução do fornecedor fornecem aos desenvolvedores acesso a otimizações, recursos e/ou plataformas específicas do fornecedor para seus projetos em execução.

Isso traz benefícios para os fornecedores, que conseguem expor suas tecnologias a todos os desenvolvedores e aprimorá-las e refiná-las de maneira rápida, iterativa e sem atritos. Isso também traz benefícios para desenvolvedores e usuários, que podem acessar e usar uma ampla gama de tecnologias de fornecedores para melhorar seus jogos.

Criando um módulo de runtime de fornecedor (vendor)

Gerando modelos de exportação

Certifique-se de seguir as instruções para criar um módulo C++ personalizado.

Como este é um módulo de tempo de execução cuja funcionalidade deve ser acessada apenas a partir do projeto em execução, você deve gerar um modelo de exportação (export template) para cada plataforma que planeja suportar. Veja as páginas de Compilação para mais informações.

Criando o wrapper do plugin do editor

Assim que os modelos de exportação forem gerados, você deve criar um plugin de editor para empacotá-los e torná-los facilmente acessíveis aos usuários finais através da Godot Asset Store.

Siga estas instruções para começar a criar o plugin. O script base do seu plugin deve ser parecido com o seguinte:

@tool
extends EditorPlugin


func _enter_tree():
    # Initialization of the plugin goes here.
    pass


func _exit_tree():
    # Clean-up of the plugin goes here.
    pass

O próximo passo é definir e instanciar uma instância de EditorExportPlugin. A instância de EditorExportPlugin é usada para se conectar ao fluxo de exportação e substituir os modelos de exportação padrão por aqueles gerados a partir do módulo de tempo de execução do fornecedor.

Usando o código do nosso modelo base de plugin do editor acima, uma implementação de exemplo se parece com isso:

@tool
extends EditorPlugin

# A class member to hold the editor export plugin during its lifecycle.
var export_plugin: VRMExportPlugin

func _enter_tree():
    # Initialization of the plugin goes here.
    export_plugin = VRMExportPlugin.new()
    add_export_plugin(export_plugin)


func _exit_tree():
    # Clean-up of the plugin goes here.
    remove_export_plugin(export_plugin)
    export_plugin = null


class VRMExportPlugin extends EditorExportPlugin:
    var _path_to_debug_export_template = ""
    var _path_to_release_export_template = ""

    # Return true for all supported platforms.
    func _supports_platform(platform):
        return platform is EditorExportPlatformAndroid

    # Overrides the default export templates.
    func _get_export_options_overrides(platform):
        var overrides = {}
        if not _supports_platform(platform):
            return overrides

        # Overrides Android export preset's "custom_template" options.
        overrides["custom_template/debug"] = _path_to_debug_export_template
        overrides["custom_template/release"] = _path_to_release_export_template

        return overrides

    # Optional: specify additional export preset options to customize the export template.
    func _get_export_options(platform):
        pass

    func _get_name():
        return "VRM Plugin"

Dica

Esta seção aborda o básico para envolver e expor um módulo de tempo de execução do fornecedor por meio de um plugin do editor, mas os plugins do editor têm muito mais funcionalidades que podem ser usadas para personalizar ainda mais o editor. Sinta-se à vontade para explorar e aproveitar essas funcionalidades para melhorar a experiência do usuário para o seu módulo de tempo de execução do fornecedor.