Godot loosely follows the semantic versioning system, but with a project of this scale it’s impossible to move forward without implementing some changes that affect compatibility with previous releases. We believe that for most users the migration process should be smooth and most critical steps are going to be resolved automatically.
To be properly diligent we describe below all the changes that require your attention when considering an upgrade:
- The new AnimationMixer node is added as an intermediate class for AnimationPlayer and AnimationTree (GH-80813).
- This brings both existing nodes to a parity in features and behavior. For the most part this change should not affect existing projects. However, the capture update mode for tracks is no longer available due to various issues in the original implementation. We will be working on providing this or similar functionality in a future version of Godot, but for now you need to work around this limitation using tweens.
- GraphEdit and GraphNode nodes are reworked with multiple renames, temporary removal of comment nodes, and introduction of GraphElement (GH-79307, GH-79308, GH-79311, GH-81582).
- For the time being, these nodes remain marked as experimental to gather further feedback from users.
- Several changes in the GLTF importer (GH-80270, GH-81264) can lead to nodes in imported scenes having slightly different names, compared to Godot 4.1 and before.
- Existing imported scenes will remain in the compatibility mode with their node names intact, until you decide to upgrade and reimport them.
- Changes to the way the engine stores meshes internally have been implemented to improve performance and bandwidth utilization on lower end devices (GH-81138).
- This is done with a grace system in place — existing meshes from Godot 4.1 and prior will be loaded and converted on the fly. There is also the new Upgrade Mesh Surfaces tool in the Project > Tools menu which will perform a one-time permanent conversion of all meshes in your project, which we recommend you do. Once upgraded to the new format, meshes will not be compatible with pre-4.2 releases.
- An optimization that required splitting raster barriers into vertex and fragment components changes relevant enumerations (GH-77420).
- It’s unlikely that this affects your project, unless you rely on specific numeric values and store them somewhere.
- An internal rework of the change_scene_to_* methods introduces a change in behavior compared to Godot 4.1 (GH-78988).
- While previously the transition would happen at the end of the current frame, starting with Godot 4.2 the current scene is removed from the tree immediately. This means there is a brief period when no current_scene is present in the tree, so you may need to adjust your scripts to account for that. See the updated documentation for more details.
- Renaming an audio bus no longer emits the bus_layout_changed signal in AudioServer; you can use the new bus_renamed signal instead (GH-81641).
- The default base part of the Android package name was changed from org.godotengine to com.example (GH-80761).
- A previously unutilized notification, NOTIFICATION_NODE_RECACHE_REQUESTED, was completely removed from the engine (GH-84419).
To help you with the upgrade process Godot contributors are also working on a migration guide for 4.2. This is a live document and it will receive updates as they identify more areas deserving of your attention. You can help too by reporting missing steps to the bug tracker.