Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Actualizando de Godot 4.0 a Godot 4.1¶
Para la mayoría de los juegos y aplicaciones creados con 4.0, debería ser relativamente seguro migrar a 4.1. Esta página tiene la intención cubrir todo lo que necesitas considerar al migrar tu proyecto.
Cambios importantes¶
Si estás migrando de 4.0 a 4.1, los cambios importantes listados aquí podrían afectarte. Los cambios están agrupados por áreas/sistemas.
Advertencia
La API de GDExtension rompe completamente la compatibilidad en 4.1, por lo que no está incluida en la siguiente tabla. Consulta la sección Actualizando su GDExtension para la versión 4.1 para obtener más información.
Este artículo indica si cada cambio significativo afecta a GDScript y si el cambio significativo en C# es compatible binario o compatible con el código fuente:
Compatible con binarios - Los binarios existentes se cargarán y ejecutarán con éxito sin recompilación, y el comportamiento en tiempo de ejecución no cambiará.
Compatible con el código fuente: el código fuente se compila correctamente sin ningún cambio al actualizar Godot.
Núcleo¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
Basis |
||||
El método |
✔️ |
✔️ |
✔️ |
|
Object |
||||
El método |
✔️ |
❌ |
❌ |
|
Transform3D |
||||
El método |
✔️ |
✔️ |
✔️ |
|
UndoRedo |
||||
El método |
✔️ |
✔️ |
||
WorkerThreadPool |
||||
El método |
✔️ |
❌ |
✔️ |
Animación¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
AnimationNode |
||||
El método |
❌ |
❌ |
❌ |
|
El método |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
||
AnimationNodeStateMachinePlayback |
||||
El método |
✔️ |
❌ |
❌ |
Nodos 2D¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
PathFollow2D |
||||
La propiedad |
❌ |
❌ |
❌ |
Nodos 3D¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
Geometry3D |
||||
El método |
✔️ |
❌ |
||
MeshInstance3D |
||||
El método |
✔️ |
✔️ |
||
Node3D |
||||
El método |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
Nodos GUI¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
CodeEdit |
||||
El método |
✔️ |
✔️ |
||
RichTextLabel |
||||
El método |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
||
Árbol |
||||
El método |
✔️ |
✔️ |
Física¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
Area2D |
||||
La propiedad |
❌ |
❌ |
❌ |
|
Area3D |
||||
La propiedad |
❌ |
❌ |
❌ |
|
PhysicsDirectSpaceState2D |
||||
El método |
❌ |
❌ |
❌ |
|
PhysicsDirectSpaceState3D |
||||
El método |
❌ |
❌ |
❌ |
Renderización¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
RDShaderFile |
||||
El método |
✔️ |
❌ |
❌ |
|
RenderingDevice |
||||
El método |
✔️ |
❌ |
||
RenderingServer |
||||
El método |
✔️ |
❌ |
❌ |
|
SurfaceTool |
||||
El método |
✔️ |
❌ |
Redes¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
WebRTCPeerConnectionExtension |
||||
El método |
✔️ |
❌ |
✔️ |
Plugins del editor¶
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
---|---|---|---|---|
AnimationTrackEditPlugin |
||||
Se eliminó el tipo |
❌ |
❌ |
❌ |
|
EditorInterface |
||||
El tipo |
✔️ |
❌ |
❌ |
|
El método |
✔️ |
❌ |
❌ |
|
Método |
✔️ |
❌ |
❌ |
|
EditorResourcePreviewGenerator |
||||
El método |
❌ |
❌ |
❌ |
|
El método |
❌ |
❌ |
❌ |
|
EditorUndoRedoManager |
||||
El método |
✔️ |
✔️ |
Cambios de comportamiento¶
En la versión 4.1 algunos cambios de comportamiento han sido introducidos, los cuales podrían requerir que ajustes tu proyecto.
Cambio |
Introducido |
---|---|
SubViewportContainer |
|
Cuando los eventos de entrada deberían alcanzar SubViewports y a sus hijos, |
|
Los nodos de múltiples capas |
|
Viewport |
|
Los nodos |
Actualizando su GDExtension para la versión 4.1¶
GDExtension está aún en beta. Hasta que esté marcado como estable, la compatibilidad puede romperse cuando actualiza a nueva versión menor de Godot.
Para corregir un error grave, en Godot 4.1 tuvimos que romper la compatibilidad binaria en gran medida y la compatibilidad de origen en pequeña medida.
Esto significa que las GDExtensions creadas para Godot 4.0 deberán recompilarse para Godot 4.1 (usando la rama 4.1
de godot-cpp), con un pequeño cambio a su código fuente.
En Godot 4.0, su función "entry_symbol" se ve algo así:
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();
}
Sin embargo, para Godot 4.1, debería verse como:
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();
}
Hay dos pequeños cambios:
El primer argumento cambia de
const GDExtensionInterface *p_interface
aGDExtensionInterfaceGetProcAddress p_get_proc_address
El constructor para la variable init_obj ahora recibe
p_get_proc_address
como primer parámetro
También necesitas agregar una línea extra de compatibility_minimum
a tu archivo .gdextension
, para que se vea algo así:
[configuration]
entry_symbol = "example_library_init"
compatibility_minimum = 4.1
Esto le permite a Godot saber que su GDExtension ha sido actualizada y que es seguro cargarla en Godot 4.1.