Обновление с Godot 4.2 на Godot 4.3

Для большинства игр и приложений, созданных с 4.2, миграция на 4.3 должна быть относительно безопасной. На этой странице вы найдете все, на что следует обратить внимание при миграции вашего проекта.

Изменения ломающие обратную совместимость

Если вы переходите с 4.2 на 4.3, изменения нарушающие обратную совместимость перечисленные здесь могут затронуть вас. Изменения сгруппированы по областям/системам.

Эта статья показывает, где каждое изменение обратной совместимости влияет на GDScript и где изменение обратной совместимости C# бинарно совместимо или совместимо на уровне кода:

  • Binary compatible (Совместимость на уровне двоичных файлов) — существующие двоичные файлы будут успешно загружены и выполнены без перекомпиляции, а поведение среды выполнения не изменится.

  • Совместимо на уровне кода - Исходный код будет успешно компилироваться без изменений при обновлении Godot.

GDExtension

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

GDExtension

Method close_library удален

GH-88418

Метод initialize_library удален

GH-88418

Метод open_library удален

GH-88418

Поскольку было в принципе невозможно использовать эти методы каким-либо полезным образом, эти методы были удалены. Используйте GDExtensionManager::load_extension и GDExtensionManager::unload_extension вместо этого, чтобы правильно загружать и выгружать GDExtension.

Анимация

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

Анимация

Метод position_track_interpolate добавляет новый необязательный параметр backward

✔️

✔️

✔️

GH-86629

Метод rotation_track_interpolate добавляет новый необязательный параметр backward

✔️

✔️

✔️

GH-86629

Метод scale_track_interpolate добавляет новый необязательный параметр backward

✔️

✔️

✔️

GH-86629

Метод blend_shape_track_interpolate добавляет новый необязательный параметр backward

✔️

✔️

✔️

GH-86629

Метод value_track_interpolate добавляет новый необязательный параметр backward

✔️

✔️

✔️

GH-86629

Метод track_find_key добавляет новый необязательный параметр limit

✔️

✔️

✔️

GH-86661

Метод track_find_key добавляет новый необязательный параметр backward

✔️

✔️

✔️

GH-92861

AnimationMixer (Микшер анимации)

Метод _post_process_key_value изменяет тип параметра object с Object на uint64

✔️

GH-86687

Skeleton3D (Скелет3D)

Метод add_bone изменяет тип возвращаемого значения с void на int32

✔️

✔️

GH-88791

Сигнал bone_pose_changed заменен на skeleton_updated

GH-90575

BoneAttachment3D (Костное крепление 3D)

Метод on_bone_pose_update заменен на on_skeleton_update

✔️

✔️

✔️

GH-90575

GUI узлы

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

AcceptDialog (Принять Диалог)

Метод register_text_enter изменяет тип параметра line_edit с Control на LineEdit

✔️

✔️

✔️

GH-89419

Метод remove_button изменяет тип параметра button с Control на Button

✔️

✔️

✔️

GH-89419

Физика

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

PhysicsShapeQueryParameters3D (Параметры запроса физической формы 3D)

Свойство motion меняет тип с Vector2 на Vector3

GH-85393

Примечание

В C# перечисление PhysicsServer3D.G6DofJointAxisFlag нарушает совместимость из-за способа, которым генератор привязок обнаруживает префикс перечисления. В GH-89851 в перечисление были добавлены новые члены, что привело к переименованию членов перечисления.

Отрисовка

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

RenderingDevice

Поле перечисления FinalAction.FINAL_ACTION_CONTINUE изменяет значение с 2 на 0

✔️

GH-84976

Поле перечисления InitialAction.INITIAL_ACTION_CLEAR изменяет значение с 0 на 1

✔️

GH-84976

Поле перечисления InitialAction.INITIAL_ACTION_CLEAR_REGION_CONTINUE изменяет значение с 2 на 1

✔️

GH-84976

Поле перечисления InitialAction.INITIAL_ACTION_CONTINUE изменяет значение с 5 на 0

✔️

GH-84976

Поле перечисления InitialAction.INITIAL_ACTION_DROP изменяет значение с 4 на 2

✔️

GH-84976

Поле перечисления InitialAction.INITIAL_ACTION_KEEP изменяет значение с 3 на 0

✔️

GH-84976

Method buffer_clear удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

Method buffer_update удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод compute_list_begin удаляет параметр allow_draw_overlap

✔️

✔️

✔️

GH-84976

Method compute_list_end удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод draw_list_begin удаляет параметр storage_textures

✔️

✔️

✔️

GH-84976

Method draw_list_end удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

Method texture_clear удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод texture_copy удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

Метод texture_resolve_multisample удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

Method texture_update удаляет параметр post_barrier

✔️

✔️

✔️

GH-84976

RenderingServer

Method environment_set_fog добавляет новый дополнительный параметр fog_mode

✔️

✔️

✔️

GH-84792

RenderSceneBuffersRD (Рендеринг буфера сцены RD)

Method get_color_layer добавляет новый дополнительный параметр msaa

✔️

✔️

✔️

GH-80214

Method get_depth_layer добавляет новый дополнительный параметр msaa

✔️

✔️

✔️

GH-80214

Method get_velocity_layer добавляет новый дополнительный параметр msaa

✔️

✔️

✔️

GH-80214

Method get_color_texture добавляет новый дополнительный параметр msaa

✔️

✔️

✔️

GH-80214

Method get_depth_texture добавляет новый дополнительный параметр msaa

✔️

✔️

✔️

GH-80214

Method get_velocity_texture добавляет новый дополнительный параметр msaa

✔️

✔️

✔️

GH-80214

Примечание

Хотя значения полей enum в RenderingDevice.InitialAction и RenderingDevice.FinalAction изменились, единственный метод, который их использовал (draw_list_begin), добавил метод совместимости, который поддерживает старые значения. Поэтому на практике это не нарушает совместимость.

Примечание

В C# перечисление RenderingDevice.DriverResource нарушает совместимость из-за способа, которым генератор привязок обнаруживает префикс перечисления. В GH-83452 в перечисление были добавлены новые члены, что привело к переименованию членов перечисления.

Текст

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

Font

Method find_variation добавляет новый необязательный параметр baseline_offset

✔️

✔️

✔️

GH-87668

RichTextLabel

Method push_meta добавляет новый необязательный параметр underline_mode

✔️

✔️

✔️

GH-89024

TextServer

Method shaped_text_get_word_breaks добавляет новый необязательный параметр skip_grapheme_flags

✔️

✔️

✔️

GH-90732

TextServerExtension

Method _shaped_text_get_word_breaks добавляет новый параметр skip_grapheme_flags

GH-90732

Аудио

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

AudioStreamPlaybackPolyphonic

Method play_stream добавляет новый playback_type, и необязательный bus параметры

✔️

✔️

✔️

GH-91382

TileMap

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

TileData

Метод get_navigation_polygon добавляет новый flip_h, flip_v, и необязательный transpose параметры

✔️

✔️

✔️

GH-84660

Метод get_occluder добавляет новые необязательные параметры flip_h, flip_v и transpose

✔️

✔️

✔️

GH-84660

XR

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

WebXRInterface

Метод get_input_source_tracker изменяет тип возвращаемого значения с XRPositionalTracker на XRControllerTracker

✔️

✔️

GH-90645

XRServer

Метод get_tracker изменяет тип возвращаемого значения с XRPositionalTracker на XRTracker

✔️

GH-90645

Плагины редактора

Изменение

Совместимо с GDScript

Совместимо с бинарным кодом C#

Совместимо с исходным кодом C#

Введено в

EditorInspectorPlugin (Плагин редактора-инспектора)

Метод add_property_editor добавляет новый необязательный параметр label

✔️

✔️

✔️

GH-92322

EditorPlugin (Плагин редактора)

Метод add_control_to_bottom_panel добавляет новый необязательный параметр shortcut

✔️

✔️

✔️

GH-88081

Метод add_control_to_dock добавляет новый необязательный параметр shortcut

✔️

✔️

✔️

GH-88081

EditorSceneFormatImporterFBX

Тип переименован в EditorSceneFormatImporterFBX2GLTF

GH-81746

Изменения в поведении

В версии 4.3 были внесены некоторые изменения в поведение, которые могут потребовать от вас корректировки проекта.

Ядро

Примечание

Двоичная сериализация (serialization ) была изменена для исправления некоторых проблем с сериализацией скриптовых объектов и типизированных массивов (GH-78219). Это нарушает совместимость с кодированием/декодированием скрипта.

Примечание

PackedByteArray теперь может использовать более компактную кодировку base64 для хранения. Но компромисс заключается в том, что это нарушает совместимость, а это означает, что старые версии Godot могут не иметь возможности открывать ресурсы, сохраненные в 4.3 (GH-89186).

Для максимальной совместимости этот новый формат хранения будет включен только для ресурсов и сцен, которые содержат большие PackedByteArrays на данный момент. Поддержка этого нового формата также будет добавлена в обновления патчей для старых версий Godot. Как только все поддерживаемые версии Godot смогут читать новый формат, мы постепенно отменим меры совместимости и заставим все ресурсы и сцены использовать новый формат хранения.

Примечание

В C# реализация Transform3D.InterpolateWith была исправлена для использования правильного порядка операций, применяя поворот перед масштабированием (GH-89843).

Примечание

В C# реализация Aabb.GetSupport была исправлена для правильного возврата вектора поддержки (GH-88919).

Примечание

В C# реализация ToString типов Variant теперь по умолчанию использует InvariantCulture (GH-89547), что означает, что Vector2(1.2, 3.4) форматируется с использованием . в качестве десятичного разделителя независимо от языка операционной системы, в которой запущена программа.

Анимация

Примечание

AnimationMixer заменил свой режим захвата новой функцией захвата, которая работает намного лучше старой, она заменяет существующий кэш (GH-86715).

Примечание

AnimationNode имеет переработанный процесс получения семантической информации о времени. Это гарантирует, что поведение, связанное со временем, работает так, как ожидается, но изменяет поведение смешивания. Разработчики виртуального метода _process также должны обратить внимание, что этот метод теперь устарел и в будущем будет заменен новым (GH-87171).

Более подробную информацию об изменениях в Анимации можно найти в статье Перенос Анимации с Godot 4.0 на 4.3.

GUI узлы

Примечание

Цвет контура шрифта по умолчанию был изменен с белого на черный (GH-54641).

Примечание

Свойство auto_translate устарело в пользу свойства auto_translate_mode, которое теперь находится в Node (GH-87530). Значение по умолчанию для auto_translate_mode - AUTO_TRANSLATE_INHERIT, что означает, что узлы наследуют значение auto_translate_mode от своего родителя. Это означает, что существующие узлы со свойством auto_translate, установленным на true, больше не могут быть переведены, если они являются дочерними узлами со свойством auto_translate, установленным на false.

Мультиплеер

Примечание

Протокол кэширования SceneMultiplayer был изменен для отправки полученного идентификатора вместо пути к узлу при отправке пакета подтверждения удаления узла (GH-90027).

Это критическое изменение для протокола многопользовательской игры высокого уровня, делающее его несовместимым с предыдущими версиями Godot. Обновите версии сервера и клиента до Godot 4.3, чтобы корректно обработать это изменение.

Обратите внимание, что многопользовательские возможности высокого уровня всегда должны быть совместимы только с сервером и клиентом, использующими одну и ту же версию Godot. Рекомендуется реализовать какую-либо проверку версии.

Отрисовка

Примечание

Декали теперь преобразуют модулируемый цвет из цвета sRGB в линейный цвет, как и все остальные входы, чтобы обеспечить правильное смешивание (GH-89849). Существующие проекты, которые использовали свойство модулируемости декали, заметят изменение в своих визуальных эффектах.

Примечание

Теперь реализована технология буферизации обратной Z-глубины. Это может нарушить совместимость некоторых шейдеров. Прочитайте статью Введение в обратную Z-глубину (AKA Извините за поломку вашего шейдера) для получения дополнительной информации и рекомендаций по исправлению распространенных сценариев.

TileMap

Примечание

Слои TileMap были перемещены в отдельные узлы (GH-87379 и GH-89179).

Android

Примечание

Разрешения Android больше не запрашиваются автоматически, поскольку это противоречит рекомендуемым практикам (GH-87080). Используйте метод request_permission в OS и сигнал on_request_permissions_result в MainLoop для запроса разрешений и ожидания ответа пользователя.