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 migratingyour project.

Breaking changes

If you are migrating from 4.2 to 4.3, the breaking changes listed here mightaffect you. Changes are grouped by areas/systems.

This article indicates whether each breaking change affects GDScript and whetherthe C# breaking change isbinary compatible orsource compatible:

  • Binary compatible - Existing binaries will load and execute successfully withoutrecompilation, and the runtime behavior won't change.

  • Source compatible - Source code will compile successfully without changes whenupgrading Godot.

GDExtension

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

GDExtension

Methodclose_library removed

GH-88418

Methodinitialize_library removed

GH-88418

Methodopen_library removed

GH-88418

Since it was basically impossible to use these methods in any useful way, these methods have been removed. UseGDExtensionManager::load_extension andGDExtensionManager::unload_extension instead to correctly load and unload a GDExtension.

Animation

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

Animation

Methodposition_track_interpolate adds a newbackward optional parameter

✔️

✔️

✔️

GH-86629

Methodrotation_track_interpolate adds a newbackward optional parameter

✔️

✔️

✔️

GH-86629

Methodscale_track_interpolate adds a newbackward optional parameter

✔️

✔️

✔️

GH-86629

Methodblend_shape_track_interpolate adds a newbackward optional parameter

✔️

✔️

✔️

GH-86629

Methodvalue_track_interpolate adds a newbackward optional parameter

✔️

✔️

✔️

GH-86629

Methodtrack_find_key adds a newlimit optional parameter

✔️

✔️

✔️

GH-86661

Methodtrack_find_key adds a newbackward optional parameter

✔️

✔️

✔️

GH-92861

AnimationMixer

Method_post_process_key_value changesobject parameter type fromObject touint64

✔️

GH-86687

Skeleton3D

Methodadd_bone changes return type fromvoid toint32

✔️

✔️

GH-88791

Signalbone_pose_changed replaced byskeleton_updated

GH-90575

BoneAttachment3D

Methodon_bone_pose_update replaced byon_skeleton_update

✔️

✔️

✔️

GH-90575

GUI nodes

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

AcceptDialog

Methodregister_text_enter changes parameterline_edit type fromControl toLineEdit

✔️

✔️

✔️

GH-89419

Methodremove_button changes parameterbutton type fromControl toButton

✔️

✔️

✔️

GH-89419

Physics

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

PhysicsShapeQueryParameters3D

Propertymotion changes type fromVector2 toVector3

GH-85393

Note

In C#, the enumPhysicsServer3D.G6DofJointAxisFlag breaks compatibility because of the way the bindings generatordetects the enum prefix. New members were added inGH-89851 to the enum that caused the enum members to be renamed.

Rendering

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

RenderingDevice

Enum fieldFinalAction.FINAL_ACTION_CONTINUE changes value from2 to0

✔️

GH-84976

Enum fieldInitialAction.INITIAL_ACTION_CLEAR changes value from0 to1

✔️

GH-84976

Enum fieldInitialAction.INITIAL_ACTION_CLEAR_REGION_CONTINUE changes value from2 to1

✔️

GH-84976

Enum fieldInitialAction.INITIAL_ACTION_CONTINUE changes value from5 to0

✔️

GH-84976

Enum fieldInitialAction.INITIAL_ACTION_DROP changes value from4 to2

✔️

GH-84976

Enum fieldInitialAction.INITIAL_ACTION_KEEP changes value from3 to0

✔️

GH-84976

Methodbuffer_clear removespost_barrier parameter

✔️

✔️

✔️

GH-84976

Methodbuffer_update removespost_barrier parameter

✔️

✔️

✔️

GH-84976

Methodcompute_list_begin removesallow_draw_overlap parameter

✔️

✔️

✔️

GH-84976

Methodcompute_list_end removespost_barrier parameter

✔️

✔️

✔️

GH-84976

Methoddraw_list_begin removesstorage_textures parameter

✔️

✔️

✔️

GH-84976

Methoddraw_list_end removespost_barrier parameter

✔️

✔️

✔️

GH-84976

Methodtexture_clear removespost_barrier parameter

✔️

✔️

✔️

GH-84976

Methodtexture_copy removespost_barrier parameter

✔️

✔️

✔️

GH-84976

Methodtexture_resolve_multisample removespost_barrier parameter

✔️

✔️

✔️

GH-84976

Methodtexture_update removespost_barrier parameter

✔️

✔️

✔️

GH-84976

RenderingServer

Methodenvironment_set_fog adds a newfog_mode optional parameter

✔️

✔️

✔️

GH-84792

RenderSceneBuffersRD

Methodget_color_layer adds a newmsaa optional parameter

✔️

✔️

✔️

GH-80214

Methodget_depth_layer adds a newmsaa optional parameter

✔️

✔️

✔️

GH-80214

Methodget_velocity_layer adds a newmsaa optional parameter

✔️

✔️

✔️

GH-80214

Methodget_color_texture adds a newmsaa optional parameter

✔️

✔️

✔️

GH-80214

Methodget_depth_texture adds a newmsaa optional parameter

✔️

✔️

✔️

GH-80214

Methodget_velocity_texture adds a newmsaa optional parameter

✔️

✔️

✔️

GH-80214

Note

While the values of the enum fields inRenderingDevice.InitialAction andRenderingDevice.FinalAction changed,the only method that consumed them (draw_list_begin) added a compatibility method which supports the old values.So in practice it doesn't break compatibility.

Note

In C#, the enumRenderingDevice.DriverResource breaks compatibility because of the way the bindings generatordetects the enum prefix. New members were added inGH-83452 to the enum that caused the enum members to berenamed.

Text

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

Font

Methodfind_variation adds a newbaseline_offset optional parameter

✔️

✔️

✔️

GH-87668

RichTextLabel

Methodpush_meta adds a newunderline_mode optional parameter

✔️

✔️

✔️

GH-89024

TextServer

Methodshaped_text_get_word_breaks adds a new optionalskip_grapheme_flags parameter

✔️

✔️

✔️

GH-90732

TextServerExtension

Method_shaped_text_get_word_breaks adds a newskip_grapheme_flags parameter

GH-90732

Audio

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

AudioStreamPlaybackPolyphonic

Methodplay_stream adds newplayback_type, andbus optional parameters

✔️

✔️

✔️

GH-91382

Navigation

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

AStar2D

Methodget_id_path adds newallow_partial_path optional parameter

✔️

✔️

✔️

GH-88047

Methodget_point_path adds newallow_partial_path optional parameter

✔️

✔️

✔️

GH-88047

AStar3D

Methodget_id_path adds newallow_partial_path optional parameter

✔️

✔️

✔️

GH-88047

Methodget_point_path adds newallow_partial_path optional parameter

✔️

✔️

✔️

GH-88047

AStarGrid2D

Methodget_id_path adds newallow_partial_path optional parameter

✔️

✔️

✔️

GH-88047

Methodget_point_path adds newallow_partial_path optional parameter

✔️

✔️

✔️

GH-88047

NavigationRegion2D

Propertyavoidance_layers removed

GH-90747

Propertyconstrain_avoidance removed

GH-90747

Methodget_avoidance_layer_value removed

GH-90747

Methodset_avoidance_layer_value removed

GH-90747

Note

The constrain avoidance feature inNavigationRegion2D was experimental and has been discontinued with noreplacement.

TileMap

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

TileData

Methodget_navigation_polygon adds newflip_h,flip_v, andtranspose optional parameters

✔️

✔️

✔️

GH-84660

Methodget_occluder adds newflip_h,flip_v, andtranspose optional parameters

✔️

✔️

✔️

GH-84660

XR

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

WebXRInterface

Methodget_input_source_tracker changes return type fromXRPositionalTracker toXRControllerTracker

✔️

✔️

GH-90645

XRServer

Methodget_tracker changes return type fromXRPositionalTracker toXRTracker

✔️

GH-90645

Editor plugins

Change

GDScript Compatible

C# Binary Compatible

C# Source Compatible

Introduced

EditorInspectorPlugin

Methodadd_property_editor adds a newlabel optional parameter

✔️

✔️

✔️

GH-92322

EditorPlugin

Methodadd_control_to_bottom_panel adds a newshortcut optional parameter

✔️

✔️

✔️

GH-88081

Methodadd_control_to_dock adds a newshortcut optional parameter

✔️

✔️

✔️

GH-88081

EditorSceneFormatImporterFBX

Type renamed toEditorSceneFormatImporterFBX2GLTF

GH-81746

Behavior changes

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

Core

Note

Binary serialization was modified to fix some issues with the serialization of scripted Objects and typed Arrays (GH-78219).This breaks compat with script encoding/decoding.

Note

PackedByteArray is now able to use a more compact base64 encoding for storage. But the trade-off is that it breakscompatibility, meaning that older versions of Godot may not be able to open resources saved by 4.3 (GH-89186).

To maximize compatibility, this new storage format will only be enabled for resources and scenes that contain largePackedByteArrays for now. Support for this new format will also be added in patch updates for older versions of Godot.Once all supported Godot versions are able to read the new format, we will gradually retire the compatibility measuresand have all resources and scenes use the new storage format.

Note

In C#, theTransform3D.InterpolateWith implementation was fixed to use the right order of operations, applying the rotation before the scale (GH-89843).

Note

In C#, theAabb.GetSupport implementation was fixed to properly return the support vector (GH-88919).

Note

In C#, the Variant types'ToString implementation now defaults to using theInvariantCulture (GH-89547)which meansVector2(1.2,3.4) is formatted using. as the decimal separator independently of the languageof the operating system that the program is running on.

Animation

Note

AnimationMixer replaced its Capture mode with a new Capture feature that works much better than the old one,this replaces the existing cache (GH-86715).

Note

AnimationNode has a reworked process for retrieving the semantic time info. This ensures that time-relatedbehavior works as expected, but changes the blending behavior. Implementors of the_process virtual methodshould also note that this method is now deprecated and will be replaced by a new one in the future (GH-87171).

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

GUI nodes

Note

The default font outline color was changed from white to black (GH-54641).

Note

Theauto_translate property is deprecated in favor of theauto_translate_mode property which is now inNode (GH-87530).The default value forauto_translate_mode isAUTO_TRANSLATE_INHERIT, which means nodes inherit theauto_translate_mode valuefrom their parent. This means, existing nodes with theauto_translate property set totrue may no longer be translated if theyare children of a node with theauto_translate property set tofalse.

Multiplayer

Note

TheSceneMultiplayer caching protocol was changed to send the received ID instead of the Node path when sending a node removal confirmation packet (GH-90027).

This is a breaking change for the high-level multiplayer protocol making it incompatible with previous Godot versions.Upgrade both your server and client versions to Godot 4.3 to handle this change gracefully.

Note that high-level multiplayer facilities are only ever meant to be compatible with server and client using the same Godot version. It is recommended to implement some kind of version checking.

Rendering

Note

Decals now convert the modulate color from an sRGB color to a linear color, like all other inputs, to ensure properblending (GH-89849). Existing projects that were using the decal's modulate property will notice a change intheir visuals.

Note

The reverse Z depth buffer technique is now implemented. This may break compatibility for some shaders.Read theIntroducing Reverse Z (AKA I'm sorry for breaking your shader)article for more information and guidance on how to fix common scenarios.

TileMap

Note

TileMap layers were moved to individual nodes (GH-87379 andGH-89179).

Android

Note

Android permissions are no longer requested automatically because it goes against the recommended best practices (GH-87080).Use therequest_permission method inOS and theon_request_permissions_result signal onMainLoop to requestpermissions and wait for the user response.


User-contributed notes

Please read theUser-contributed notes policy before submitting a comment.