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

Для большинства игр и приложений сделанных на Godot 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

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

In 4.3, some behavior changes have been introduced, which might require you to adjust your project.

Ядро

Примечание

Двоичная сериализация (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 для запроса разрешений и ожидания ответа пользователя.