Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Mise à niveau de Godot 4.0 vers Godot 4.1

Pour la plupart des jeux et applications fabriqués en 4.0, il devrait être relativement sûr de migrer à la 4.1. Cette page a l'intention de couvrir tout ce dont vous avez besoin pour faire attention lors de la migration de votre projet.

Changements incompatibles

Si vous migrez de la 4.0 à la 4.1, les changements cassants énumérés ici pourraient vous affecter. Les changements sont regroupés par zones/systèmes.

Avertissement

L'API GDExtension casse complètement la compatibilité en 4.1, donc elle n'est pas inclus dans le tableau ci-dessous. Voir la section Mise à jour de votre GDExtension pour la 4.1 pour plus d'informations.

This article indicates whether each breaking change affects GDScript and whether the C# breaking change is binary compatible or source compatible:

  • Binaire compatible - Les binaires existantes vont charger et s'exécuter avec succès sans recompilation, et le comportement lors de l'exécution ne changera pas.

  • Compatible source - Le code source compilera avec succès sans changement lors de la mise à niveau de Godot.

Core

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

Basis

La méthode ook_at ajoute un nouveau paramètre use_model_front optionnel

✔️

✔️

✔️

GH-76082

Object

La méthode get_meta_list change de type de retour de PackedStringArray en Array[StringName]

✔️

GH-76418

Transform3D

La méthode ook_at ajoute un nouveau paramètre use_model_front optionnel

✔️

✔️

✔️

GH-76082

UndoRedo

La méthode create_action ajoute un nouveau paramètre optionnel backward_undo_ops

✔️

✔️

✔️

GH-76688

WorkerThreadPool

La méthode wait_for_task_completion change de type de retour de void en Error

✔️

✔️

GH-77143

Animation

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

AnimationNode

La méthode _process ajoute un nouveau paramètre test_only

GH-75759

La méthode blend_input ajoute un nouveau paramètre test_only

✔️

✔️

✔️

GH-75759

La méthode blend_node ajoute un nouveau paramètre optionnel test_only

✔️

✔️

✔️

GH-75759

AnimationNodeStateMachinePlayback

La méthode get_travel_path change de type de retour de PackedStringArray en Array[StringName]

✔️

GH-76418

Nœuds 2D

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

PathFollow2D

Propriété lookahead retirée

GH-72842

Nœuds 3D

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

Geometry3D

La méthode segment_intersects_convex change le type du paramètre planes de Array non-typé à Array[Plane]

✔️

✔️

GH-76418

MeshInstance3D

La méthode create_multiple_convex_collisions ajoute un nouveau paramètre optionnel settings

✔️

✔️

✔️

GH-72152

Node3D

La méthode look_at ajoute un nouveau paramètre optionnel use_model_front

✔️

✔️

✔️

GH-76082

La méthode look_at_from_position ajoute un nouveau paramètre optionnel use_model_front

✔️

✔️

✔️

GH-76082

Nœuds GUI

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

CodeEdit

La méthode add_code_completion_option ajoute un nouveau paramètre optionnel location

✔️

✔️

✔️

GH-75746

RichTextLabel

La méthode push_list ajoute un nouveau paramètre optionnel bullet

✔️

✔️

✔️

GH-75017

La méthode push_paragraph ajoute un nouveau paramètre optionnel justification_flags

✔️

✔️

✔️

GH-75250

La méthode push_paragraph ajoute un nouveau paramètre optionnel tab_stops

✔️

✔️

✔️

GH-76401

Tree

La méthode edit_sélection ajoute un nouveau paramètre optionnel force_edit

✔️

✔️

✔️

GH-76794

Physique

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

Area2D

La propriété priority change de type, de float à int

GH-72749

Area3D

La propriété priority change de type, de float à int

GH-72749

PhysicsDirectSpaceState2D

La méthode collide_shape change de type de retour de Array[PackedVector2Array] en Array[Vector2]

GH-75260

PhysicsDirectSpaceState3D

La méthode collide_shape change de type de retour de Array[PackedVector3Array] en Array[Vector3]

GH-75260

Rendu

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

RDShaderFile

La méthode get_version_list change de type de retour de PackedStringArray en Array[StringName]

✔️

GH-76418

RenderingDevice

La méthode draw_list_begin change le type du paramètre storage_textures de Array non-typé en Array[RID]

✔️

✔️

GH-76418

RenderingServer

La méthode global_shader_parameter_get_list change de type de retour de PackedStringArray en Array[StringName]

✔️

GH-76418

SurfaceTool

La méthode add_triangle_fan change le type du paramètre tangents de Array non-typé en Array[Plane]

✔️

✔️

GH-76418

Réseau

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

WebRTCPeerConnectionExtension

La méthode _create_data_channel change de type de retour de Object à WebRTCDataChannel

✔️

✔️

GH-78237

Extensions pour l'éditeur

Modifications

Compatible GDScript

Compatible binaire C#

Compatible source C#

Intégré

AnimationTrackEditPlugin

Type AnimationTrackEditPlugin supprimé

GH-76413

EditorInterface

Le type EditorInterface change d'héritage de Node à Object

✔️

GH-76176

Méthode set_movie_maker_enabled remplacée par la propriété movie_maker_enabled

✔️

GH-76176

Méthode is_movie_maker_enabled remplacée par la propriété movie_maker_enabled

✔️

GH-76176

EditorResourcePreviewGenerator

La méthode _generate ajoute un nouveau paramètre metadata

GH-64628

La méthode _generate_from_path ajoute un nouveau paramètre metadata

GH-64628

EditorUndoRedoManager

La méthode create_action ajoute un nouveau paramètre optionnel backward_undo_ops

✔️

✔️

✔️

GH-76688

Changements de comportement

En 4.1, certains changements de comportement ont été introduits, ce qui pourrait vous obliger à ajuster votre projet.

Modifications

Intégré

SubViewportContainer

Lorsque les événements d'entrée doivent atteindre des SubViewports et leurs enfants, SubViewportContainer.mouse_filter doit maintenant être MOUSE_FILTER_STOP ou MOUSE_FILTER_PASS. Voir GH-79271 pour les détails.

GH-57894

Plusieurs couches de nœuds SubViewportContainer, qui devraient tous recevoir des événements d'entrée de la souris, doit maintenant être remplacé par des nœuds Area2D. Voir GH-79128 pour les détails.

GH-57894

Viewport

Les nœuds Viewport, qui ont activé la sélection d'objets physiques, configurent maintenant automatiquement les InputEvents comme gérés. Voir GH-79897 pour les solutions de contournement.

GH-77595

Mise à jour de votre GDExtension pour la 4.1

In order to fix a serious bug, in Godot 4.1 we had to break binary compatibility in a big way and source compatibility in a small way.

Cela signifie que les GDExtensions faites pour Godot 4.0 devront être recompilées pour Godot 4.1 (en utilisant la branche 4.1 de godot-cpp), avec un petit changement à leur code source.

Dans Godot 4.0, votre fonction "entry_symbol" ressemble à ceci :

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();
}

Cependant, pour Godot 4.1, il devrait ressembler à :

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();
}

Il y a deux petits changements :

  1. Le premier argument change de const GDExtension Interface *p_interface à GDExtensionInterfaceGetProcAddress p_get_proc_address

  2. Le constructeur de la variable init_obj reçoit dorénavant p_get_proc_address comme premier paramètre

Vous devez également ajouter une ligne compatibility_minimum supplémentaire à votre fichier .gdextension, de sorte que cela ressemble à :

[configuration]

entry_symbol = "example_library_init"
compatibility_minimum = 4.1

Ça permet à Godot de savoir que votre GDExtension a été mise à jour et est sûre de charger en Godot 4.1.