Upgrading from Godot 4.2 to Godot 4.3

For most games and apps made with 4.2 it should be relatively safe to migrate to 4.3. This page intends to cover everything you need to pay attention to when migrating your project.

Breaking changes

Se você estiver migrando da versão 4.2 para a 4.3, as alterações significativas listadas aqui podem afetá-lo. As alterações são agrupadas por áreas/sistemas.

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.

GDExtension

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

GDExtension

Método close_library removido

GH-88418

Método initialize_library removido

GH-88418

Método open_library removido

GH-88418

Como era basicamente impossível usar esses métodos de forma útil, eles foram removidos. Use GDExtensionManager::load_extension e GDExtensionManager::unload_extension para carregar e descarregar corretamente uma GDExtension.

Animação

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

Animation

Method position_track_interpolate adds a new backward optional parameter

✔️

✔️

✔️

GH-86629

Method rotation_track_interpolate adds a new backward optional parameter

✔️

✔️

✔️

GH-86629

Method scale_track_interpolate adds a new backward optional parameter

✔️

✔️

✔️

GH-86629

Method blend_shape_track_interpolate adds a new backward optional parameter

✔️

✔️

✔️

GH-86629

Method value_track_interpolate adds a new backward optional parameter

✔️

✔️

✔️

GH-86629

Method track_find_key adds a new limit optional parameter

✔️

✔️

✔️

GH-86661

Method track_find_key adds a new backward optional parameter

✔️

✔️

✔️

GH-92861

AnimationMixer

Alterado o tipo do parâmetro object do método _post_process_key_value de Object para uint64

✔️

GH-86687

Skeleton3D

Alterado o tipo de retorno do método add_bone de void para int32

✔️

✔️

GH-88791

Sinal bone_pose_changed substituído por skeleton_updated

GH-90575

BoneAttachment3D

Método on_bone_pose_update substituído por on_skeleton_update

✔️

✔️

✔️

GH-90575

GUI nodes

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

AcceptDialog

Alterado o tipo do parâmetro line_edit do método register_text_enter de Control para LineEdit

✔️

✔️

✔️

GH-89419

Alterado o tipo do parâmetro button do método remove_button de Control para Button

✔️

✔️

✔️

GH-89419

Física

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

PhysicsShapeQueryParameters3D

Alterado o tipo da propriedade motion de Vector2 para Vector3

GH-85393

Nota

Em C#, a enumeração PhysicsServer3D.G6DofJointAxisFlag quebra a compatibilidade devido à forma como o gerador de vinculações detecta o prefixo da enumeração. Novos membros foram adicionados em GH-89851 à enumeração, o que fez com que os membros da enumeração fossem renomeados.

Renderização

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

RenderingDevice

O campo Enum FinalAction.FINAL_ACTION_CONTINUE altera o valor de 2 para 0

✔️

GH-84976

O campo Enum InitialAction.INITIAL_ACTION_CLEAR altera o valor de 0 para 1

✔️

GH-84976

O campo Enum InitialAction.INITIAL_ACTION_CLEAR_REGION_CONTINUE altera o valor de 2 para 1

✔️

GH-84976

O campo Enum InitialAction.INITIAL_ACTION_CONTINUE altera o valor de 5 para 0

✔️

GH-84976

O campo Enum InitialAction.INITIAL_ACTION_DROP altera o valor de 4 para 2

✔️

GH-84976

O campo Enum InitialAction.INITIAL_ACTION_KEEP altera o valor de 3 para 0

✔️

GH-84976

Method buffer_clear removes post_barrier parameter

✔️

✔️

✔️

GH-84976

Method buffer_update removes post_barrier parameter

✔️

✔️

✔️

GH-84976

Removido parâmetro allow_draw_overlap do método compute_list_begin

✔️

✔️

✔️

GH-84976

Removido parâmetro post_barrier do método compute_list_end

✔️

✔️

✔️

GH-84976

Removido parâmetro storage_textures do método draw_list_begin

✔️

✔️

✔️

GH-84976

Removido parâmetro post_barrier do método draw_list_end

✔️

✔️

✔️

GH-84976

Method texture_clear removes post_barrier parameter

✔️

✔️

✔️

GH-84976

Removido parâmetro post_barrier do método texture_copy

✔️

✔️

✔️

GH-84976

Removido parâmetro post_barrier do método texture_resolve_multisample

✔️

✔️

✔️

GH-84976

Removido parâmetro post_barrier do método texture_update

✔️

✔️

✔️

GH-84976

RenderingServer

Method environment_set_fog adds a new fog_mode optional parameter

✔️

✔️

✔️

GH-84792

RenderSceneBuffersRD

Method get_color_layer adds a new msaa optional parameter

✔️

✔️

✔️

GH-80214

Method get_depth_layer adds a new msaa optional parameter

✔️

✔️

✔️

GH-80214

Method get_velocity_layer adds a new msaa optional parameter

✔️

✔️

✔️

GH-80214

Method get_color_texture adds a new msaa optional parameter

✔️

✔️

✔️

GH-80214

Method get_depth_texture adds a new msaa optional parameter

✔️

✔️

✔️

GH-80214

Method get_velocity_texture adds a new msaa optional parameter

✔️

✔️

✔️

GH-80214

Nota

Embora os valores dos campos enum em RenderingDevice.InitialAction e RenderingDevice.FinalAction tenham mudado, o único método que os consumia (draw_list_begin) adicionou um método de compatibilidade que suporta os valores antigos. Portanto, na prática, isso não quebra a compatibilidade.

Nota

Em C#, o enum``RenderingDevice.DriverResource`` quebra a compatibilidade devido à forma como o gerador de vinculações detecta o prefixo do enum. Novos membros foram adicionados em GH-83452 ào enum, o que fez com que os membros dele fossem renomeados.

Text

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

Fonte

Method find_variation adds a new baseline_offset optional parameter

✔️

✔️

✔️

GH-87668

RichTextLabel

Method push_meta adds a new underline_mode optional parameter

✔️

✔️

✔️

GH-89024

TextServer

Method shaped_text_get_word_breaks adds a new optional skip_grapheme_flags parameter

✔️

✔️

✔️

GH-90732

TextServerExtension

Method _shaped_text_get_word_breaks adds a new skip_grapheme_flags parameter

GH-90732

Áudio

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

AudioStreamPlaybackPolyphonic

Method play_stream adds new playback_type, and bus optional parameters

✔️

✔️

✔️

GH-91382

TileMap

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

TileData

Adicionado novos parâmetros opcionais flip_h, flip_v e transpose ao método get_navigation_polygon

✔️

✔️

✔️

GH-84660

Adicionado novos parâmetros opcionais flip_h, flip_v e transpose ao método get_occluder

✔️

✔️

✔️

GH-84660

XR

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

WebXRInterface

Alterado o tipo de retorno do método get_input_source_tracker de XRPositionalTracker para XRControllerTracker

✔️

✔️

GH-90645

XRServer

Alterado o tipo de retorno do método get_tracker de XRPositionalTracker para XRTracker

✔️

GH-90645

Plugins do editor

Change

GDScript Compatible

Compatível com C# Binário

Compatível com fonte C#

Introduced

EditorInspectorPlugin

Method add_property_editor adds a new label optional parameter

✔️

✔️

✔️

GH-92322

EditorPlugin

Method add_control_to_bottom_panel adds a new shortcut optional parameter

✔️

✔️

✔️

GH-88081

Method add_control_to_dock adds a new shortcut optional parameter

✔️

✔️

✔️

GH-88081

EditorSceneFormatImporterFBX

Tipo renomeado para EditorSceneFormatImporterFBX2GLTF

GH-81746

Behavior changes

In 4.3, some behavior changes have been introduced, which might require you to adjust your project.

Componentes Principais

Nota

A serialização binária foi modificada para corrigir alguns problemas com a serialização de objetos com script e arrays tipados (GH-78219). Isso quebra a compatibilidade com a codificação/decodificação de script.

Nota

O PackedByteArray agora pode usar uma codificação base64 mais compacta para armazenamento. A desvantagem é que isso quebra a compatibilidade, o que significa que versões mais antigas do Godot podem não conseguir abrir recursos salvos pela versão 4.3 (GH-89186).

Para maximizar a compatibilidade, este novo formato de armazenamento será habilitado somente para recursos e cenas que contenham PackedByteArrays grandes, por enquanto. O suporte para este novo formato também será adicionado em atualizações de patch para versões mais antigas do Godot. Assim que todas as versões suportadas do Godot puderem ler o novo formato, descontinuaremos gradualmente as medidas de compatibilidade e faremos com que todos os recursos e cenas usem o novo formato de armazenamento.

Nota

Em C#, a implementação Transform3D.InterpolateWith foi corrigida para usar a ordem correta das operações, aplicando a rotação antes da escala (GH-89843).

Nota

Em C#, a implementação Aabb.GetSupport foi corrigida para retornar corretamente o vetor de suporte (GH-88919).

Nota

Em C#, a implementação ToString dos tipos Variant agora usa por padrão InvariantCulture (GH-89547), o que significa que Vector2(1.2, 3.4) é formatado usando . como separador decimal, independentemente do idioma do sistema operacional no qual o programa está sendo executado.

Animação

Nota

AnimationMixer substituiu seu modo de captura (Capture) por um novo recurso de captura que funciona muito melhor que o antigo, substituindo o cache existente (GH-86715).

Nota

AnimationNode possui um processo reformulado para recuperar as informações de tempo semântico. Isso garante que o comportamento relacionado ao tempo funcione conforme o esperado, mas altera o comportamento de mesclagem. Os implementadores do método virtual _process também devem observar que este método está obsoleto e será substituído por um novo no futuro (GH-87171).

More information about the changes to Animation can be found in the Migrating Animations from Godot 4.0 to 4.3 article.

GUI nodes

Nota

A cor do contorno da fonte padrão foi alterada de branco para preto (GH-54641).

Nota

A propriedade auto_translate foi descontinuada em favor da propriedade auto_translate_mode, que agora está em Node (GH-87530). O valor padrão para auto_translate_mode é AUTO_TRANSLATE_INHERIT, o que significa que os nós herdam o valor auto_translate_mode de seus nós pais. Isso significa que nós existentes com a propriedade auto_translate definida como true não poderão mais ser traduzidos se forem filhos de um nó com a propriedade auto_translate definida como false.

Multiplayer

Nota

O protocolo de cache SceneMultiplayer foi alterado para enviar o ID recebido em vez do caminho do nó ao enviar um pacote de confirmação de remoção de nó (GH-90027).

Esta é uma mudança drástica no protocolo multijogador de alto nível, tornando-o incompatível com versões anteriores do Godot. Atualize suas versões de servidor e cliente para o Godot 4.3 para lidar com essa mudança sem problemas.

Observe que os recursos multijogador de alto nível devem ser compatíveis somente com o servidor e o cliente que usam a mesma versão do Godot. Recomenda-se implementar algum tipo de verificação de versão.

Renderização

Nota

Os decalques agora convertem a cor modulada de uma cor sRGB para uma cor linear, como todas as outras entradas, para garantir uma mistura adequada (GH-89849). Projetos existentes que usavam a propriedade de modulação do decalque notarão uma mudança em seus visuais.

Nota

A técnica de buffer de profundidade Z reverso agora está implementada. Isso pode quebrar a compatibilidade para alguns shaders. Leia o artigo Introducing Reverse Z (AKA I'm sorry for breaking your shader) para mais informações e orientações sobre como corrigir cenários comuns.

TileMap

Nota

As camadas TileMap foram movidas para nós individuais (GH-87379 e GH-89179).

Android

Nota

As permissões do Android não são mais solicitadas automaticamente, pois isso vai contra as práticas recomendadas (GH-87080). Use o método request_permission em OS e o sinal on_request_permissions_result em MainLoop para solicitar permissões e aguardar a resposta do usuário.