Atualizando do Godot 4.0 para o Godot 4.1
Para a maioria dos jogos e aplicativos feitos com a versão 4.0, deve ser relativamente seguro migrar para a versão 4.1. Esta página tem a intenção de cobrir tudo o que você precisa para prestar atenção ao migrar seu projeto.
Breaking changes
Se você estiver migrando da versão 4.0 para a 4.1, as alterações significativas listadas aqui podem afetá-lo. As alterações são agrupadas por áreas/sistemas.
Aviso
A API GDExtension quebra completamente a compatibilidade na versão 4.1, portanto, não está incluída na tabela abaixo. Consulte a seção Atualizando seu GDExtension para 4.1 para obter mais informações.
Este artigo indica se cada alteração drástica afeta o GDScript e se a alteração drástica do C# é compatível com o binário ou compatível com o código-fonte:
Compatível com binários - Os binários existentes serão carregados e executados com sucesso sem recompilação, e o comportamento em tempo de execução não mudará.
Compatível com a fonte - O código fonte será compilado com sucesso, sem alterações, ao atualizar o Godot.
Componentes Principais
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
Basis |
||||
O método |
✔️ |
✔️ |
✔️ |
|
Object |
||||
O método |
✔️ |
❌ |
❌ |
|
Transform3D |
||||
O método |
✔️ |
✔️ |
✔️ |
|
UndoRedo |
||||
O método |
✔️ |
✔️ |
✔️ |
|
WorkerThreadPool |
||||
O método |
✔️ |
❌ |
✔️ |
Animação
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
AnimationNode |
||||
Método |
❌ |
❌ |
❌ |
|
Adiciona o novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
Adiciona o novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
AnimationNodeStateMachinePlayback |
||||
Alterado o tipo do retorno do método |
✔️ |
❌ |
❌ |
2D nodes
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
PathFollow2D |
||||
Propriedade |
❌ |
❌ |
❌ |
3D nodes
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
Geometry3D |
||||
Alterado o tipo do parâmetro |
✔️ |
✔️ |
❌ |
|
MeshInstance3D |
||||
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
Node3D |
||||
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
GUI nodes
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
CodeEdit |
||||
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
|
Tree |
||||
Adicionado novo parâmetro opcional |
✔️ |
✔️ |
✔️ |
Física
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
Area2D |
||||
A propriedade |
❌ |
❌ |
❌ |
|
Area3D |
||||
A propriedade |
❌ |
❌ |
❌ |
|
PhysicsDirectSpaceState2D |
||||
Alterado o tipo do retorno do método |
❌ |
❌ |
❌ |
|
PhysicsDirectSpaceState3D |
||||
Alterado o tipo do retorno do método |
❌ |
❌ |
❌ |
Renderização
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
RDShaderFile |
||||
Modificado o tipo de retorno do método |
✔️ |
❌ |
❌ |
|
RenderingDevice |
||||
Alterado o tipo do parâmetro |
✔️ |
✔️ |
❌ |
|
RenderingServer |
||||
Modificado o tipo de retorno do método |
✔️ |
❌ |
❌ |
|
SurfaceTool |
||||
Alterado o tipo do parâmetro |
✔️ |
✔️ |
❌ |
Trabalho em rede
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
WebRTCPeerConnectionExtension |
||||
Modificado o tipo de retorno do método |
✔️ |
❌ |
✔️ |
Plugins do editor
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
AnimationTrackEditPlugin |
||||
Type |
❌ |
❌ |
❌ |
|
EditorInterface |
||||
Alterada a herança do tipo |
✔️ |
❌ |
❌ |
|
Método |
✔️ |
❌ |
❌ |
|
Método |
✔️ |
❌ |
❌ |
|
EditorResourcePreviewGenerator |
||||
Adicionado novo parâmetro |
❌ |
❌ |
❌ |
|
Adicionado novo parâmetro |
❌ |
❌ |
❌ |
|
EditorUndoRedoManager |
||||
O método |
✔️ |
✔️ |
✔️ |
Behavior changes
In 4.1, some behavior changes have been introduced, which might require you to adjust your project.
Change |
Introduced |
|---|---|
SubViewportContainer |
|
Quando eventos de entrada devem ser reconhecidos pelo SubViewports e seus filhos, |
|
Vários nós |
|
Viewport |
|
Nós |
Atualizando seu GDExtension para 4.1
Para corrigir um bug sério, no Godot 4.1 tivemos que quebrar a compatibilidade binária de uma forma significativa e a compatibilidade de código-fonte de uma forma pequena.
Isso significa que GDExtensions feito para o Godot 4.0 precisarão ser recompiladas para o Godot 4.1 (usando a ramificação 4.1 do godot-cpp), com uma pequena alteração em seu código-fonte.
In Godot 4.0, your "entry_symbol" function looks something like this:
GDExtensionBool GDE_EXPORT example_library_init(const GDExtensionInterface *p_interface, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
godot::GDExtensionBinding::InitObject init_obj(p_interface, p_library, r_initialization);
init_obj.register_initializer(initialize_example_module);
init_obj.register_terminator(uninitialize_example_module);
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
return init_obj.init();
}
Entretanto, para o Godot 4.1, deve ficar assim:
GDExtensionBool GDE_EXPORT example_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
init_obj.register_initializer(initialize_example_module);
init_obj.register_terminator(uninitialize_example_module);
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
return init_obj.init();
}
There are two small changes:
O primeiro argumento muda de
const GDExtensionInterface *p_interfaceparaGDExtensionInterfaceGetProcAddress p_get_proc_addressO construtor da variável init_obj agora recebe
p_get_proc_addresscomo seu primeiro parâmetro
You also need to add an extra compatibility_minimum line to your .gdextension file, so that it looks something like:
[configuration]
entry_symbol = "example_library_init"
compatibility_minimum = 4.1
Isso permite que o Godot saiba que o seu GDExtension foi atualizado e está seguro para carregar no Godot 4.1.