Attention: Here be dragons (unstable version)
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Redot.
Checking the stable version of the documentation...
Upgrading from Redot 4.1 to Redot 4.2
For most games and apps made with 4.1 it should be relatively safe to migrate to 4.2. This page intends to cover everything you need to pay attention to when migrating your project.
Breaking changes
If you are migrating from 4.1 to 4.2, the breaking changes listed here might affect you. Changes are grouped by areas/systems.
Warning
The Mesh resource format has changed in 4.2 to allow for vertex and attribute compression. This allows for improved rendering performance, especially on platforms constrained by memory bandwidth such as mobile.
It is still possible to load the Redot 4.0-4.1 Mesh formats, but it is not possible to load the Redot 4.2 Mesh format in prior Redot versions. When opening a Redot project made with a version prior to 4.2, you may be presented with an upgrade dialog that offers two options:
Restart & Upgrade: Upgrades the mesh format for all meshes in the project and saves the result to disk. Once chosen, this option prevents downgrading the project to a Redot version prior to 4.2. Set up a version control system and push your changes before choosing this option!
Upgrade Only: Upgrades the mesh format in-memory without writing it to disk. This allows downgrading the project to a Redot version older than 4.2 if you need to do so in the future. The downside is that loading the project will be slower every time as the mesh format needs to be upgraded every time the project is loaded. These increased loading times will also affect the exported project. The number and complexity of Mesh resources determines how much loading times are affected.
If this dialog doesn't appear, use Project > Tools > Upgrade Mesh Surfaces… at the top of the editor.
This article indicates whether each breaking change affects GDScript and whether the C# breaking change is binary compatible or source compatible:
Binary compatible - Existing binaries will load and execute successfully without recompilation, and the runtime behavior won't change.
Source compatible - Source code will compile successfully without changes when upgrading Redot.
Core
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
Node |
||||
Constant |
❌ |
✔️ |
❌ |
Animation
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
AnimationPlayer |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
❌ |
❌ |
|
Signal |
✔️ |
❌ |
❌ |
|
Signal |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
AnimationTree |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
❌ |
❌ |
|
Signal |
✔️ |
❌ |
❌ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
❌ |
❌ |
GUI nodes
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
PopupMenu |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Method |
✔️ |
✔️ |
✔️ |
Rendering
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
ImporterMesh |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
❌ |
❌ |
|
MeshDataTool |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
❌ |
❌ |
|
RenderingDevice |
||||
Enum field |
✔️ |
✔️ |
✔️ |
|
Enum field |
✔️ |
✔️ |
✔️ |
|
Enum field |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
❌ |
❌ |
|
SurfaceTool |
||||
Method |
✔️ |
✔️ |
✔️ |
Text
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
Font |
||||
Method |
✔️ |
❌ |
❌ |
|
Method |
✔️ |
❌ |
❌ |
|
Method |
✔️ |
✔️ |
✔️ |
GraphEdit
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
GraphEdit |
||||
Property |
❌ |
✔️ |
✔️ |
|
Method |
❌ |
✔️ |
✔️ |
|
Property |
❌ |
✔️ |
✔️ |
|
Property |
❌ |
✔️ |
✔️ |
|
GraphNode |
||||
Property |
❌ |
❌ |
❌ |
|
Signal |
❌ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Property |
❌ |
❌ |
❌ |
|
Signal |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
✔️ |
✔️ |
|
Property |
❌ |
❌ |
❌ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Signal |
✔️ |
❌ |
❌ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
✔️ |
✔️ |
✔️ |
|
Property |
❌ |
❌ |
❌ |
|
Property |
❌ |
❌ |
❌ |
TileMap
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
TileMap |
||||
Property |
❌ |
✔️ |
✔️ |
XR
Change |
GDScript Compatible |
C# Binary Compatible |
C# Source Compatible |
Introduced |
---|---|---|---|---|
XRInterface |
||||
Property |
✔️ |
❌ |
❌ |
Note
This change breaks compatibility in C# because the new property conflicts with the name of an existing enum
and the C# bindings generator gives priority to properties, so the enum type was renamed from
EnvironmentBlendMode
to EnvironmentBlendModeEnum
.