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

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