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

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

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

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

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

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

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

Ядро

Изменение

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

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

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

Введено в

FileAccess (Доступ к файлам)

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

✔️

✔️

✔️

GH-98918

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

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

✔️

✔️

GH-78289

OS

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

✔️

✔️

✔️

GH-94434

Метод read_string_from_stdin добавляет новый параметр buffer_size [1]

✔️

✔️

GH-91201

RegEx (Регулярное выражение)

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

✔️

✔️

✔️

GH-95212

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

✔️

✔️

✔️

GH-95212

Semaphore (Семафор)

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

✔️

✔️

✔️

GH-93605

TranslationServer (Сервер переводов)

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

✔️

✔️

✔️

GH-98972

Анотация экспорта

Предупреждение

Работа @export_file изменилась в Godot 4.4. При назначении нового значения в Инспекторе путь теперь сохраняется и возвращается как ссылка uid:// вместо традиционного пути res:// (GH-97912). Это критическое изменение, которое может вызвать проблемы, если вы ожидаете пути на основе res:// в скриптах или serialized (сериализованных) файлах.

Например, экспортированные массивы файлов теперь могут содержать смесь путей uid:// и res://, особенно если они были частично отредактированы в Инспекторе.

В версии 4.4 единственный способ сохранить формат res:// — это ручное редактирование файлов .tscn или .tres в текстовом редакторе. Начиная с Godot 4.5, новая аннотация @export_file_path позволяет явно сохранить старое поведение и экспортировать необработанные пути res://.

GUI узлы

Изменение

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

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

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

Введено в

RichTextLabel

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

✔️

✔️

✔️

GH-99481

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

✔️

✔️

✔️

GH-101482

GraphEdit

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

✔️

✔️

✔️

GH-97449

Сигнал frame_rect_changed изменяет тип параметра new_rect с Vector2 на Rect2

GH-102796

Физика

Изменение

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

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

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

Введено в

SoftBody3D (Мягкое тело 3D)

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

✔️

✔️

✔️

GH-94684

Отрисовка

Изменение

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

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

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

Введено в

CPUParticles2D (CPU Частицы 2D)

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

✔️

✔️

✔️

GH-92089

CPUParticles3D )CPU Частицы 3D (

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

✔️

✔️

✔️

GH-92089

GPUParticles2D (GPU Частицы 2D)

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

✔️

✔️

✔️

GH-92089

GPUParticles3D (GPU Частицы 3d)

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

✔️

✔️

✔️

GH-92089

RenderingDevice

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

✔️

✔️

✔️

GH-90993

Метод draw_list_begin удаляет много параметров

✔️

✔️

GH-98670

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

✔️

✔️

✔️

GH-100062

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

✔️

✔️

✔️

GH-100062

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

✔️

✔️

✔️

GH-100062

RenderingServer

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

✔️

✔️

✔️

GH-99455

Shader (Шейдер)

Метод get_default_texture_parameter изменяет тип возвращаемого значения с Texture2D на Texture

✔️

GH-95126

Метод set_default_texture_parameter изменяет тип параметра texture с Texture2D на Texture

✔️

✔️

GH-95126

VisualShaderNodeCubemap (Кубическая карта узла визуального шейдера)

Свойство cube_map меняет тип с Cubemap на TextureLayered

✔️

GH-95126

VisualShaderNodeTexture2DArray (2D-массив текстур узла визуального шейдера)

Свойство texture_array меняет тип с Texture2DArray на TextureLayered

✔️

GH-95126

Примечание

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

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

Изменение

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

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

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

Введено в

EditorInterface

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

✔️

✔️

✔️

GH-90057

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

✔️

✔️

✔️

GH-94323

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

✔️

✔️

✔️

GH-94323

EditorSceneFormatImporter (Импортер форматов сцен редактора)

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

GH-101531

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

Метод _parse_file изменяет тип возвращаемого значения на Array и удаляет параметры msgids и msgids_context_plural

GH-99297

Примечание

Метод _get_import_flags никогда не использовался движком. Он был удалён, несмотря на нарушение совместимости, поскольку пользователи не могли полагаться на него из-за того, что это влияло на поведение движка.

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

Ядро

Примечание

Ресурс Curve теперь принудительно устанавливает свой диапазон значений, поэтому min_value и max_value необходимо изменить, если какая-либо из точек выходит за пределы диапазона по умолчанию [0, 1].

Отрисовка

Примечание

Тип входных данных узла шейдера VisualShaderNodeVec4Constant изменён на Vector4. Пользователям необходимо пересоздать значения в своих константах.

CSG

Примечание

Реализация CSG теперь использует библиотеку Manifold Эммета Лалиша (GH-94321). Новая реализация лучше соответствует определениям многообразий и исправляет ряд ошибок и проблем со стабильностью. В результате этого неманифолдные сетки больше не поддерживаются. Для рендеринга неманифолдной геометрии, такой как четырёхугольники или плоскости, можно использовать MeshInstance3D.

Android

Примечание

События датчиков Android больше не включены по умолчанию (GH-94799). Проекты, использующие события датчиков, могут включать их при необходимости в настройках проекта в разделе Input Devices > Sensors.