الترقية من جودو 4.0 إلى جودو 4.1

من موسوعة حسوب
مراجعة 15:46، 8 سبتمبر 2023 بواسطة Naser-dakhel (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)


من الآمن الانتقال إلى 4.1 لمعظم الألعاب المصنوعة باستخدام 4.0. هدف هذه الصفحة هي تغطية كل شيء يجب الانتباه له عند نقل المشروع.

التغييرات التي تتسبب بمشكلات

ستؤثر عليك التغييرات التي تعطي مشاكل المذكورة هنا إذا كنت تنتقل من 4.0 إلى 4.1، تم تجميع التغييرات حسب الموقع/النظام

تنبيه: إن واجهة برمجة التطبيقات الخاصة بـ GDExtention تعطي مشاكل توافق في 4.1 لذا هي غير مذكورة في الجداول التالية. راجع قسم تحديث GDExtentintion الخاص بك إلى 4.1 لمزيد من المعلومات.

تشير هذه القائمة إذا ما كان يؤثر التغيير الذي يعطي المشاكل على GDScript وإذا كان متوافق مع الثنائي أو متوافق مع المصدر

  • متوافق مع الملف الثنائي - سيُحمل ويُنفذ الثنائي الموجود بنجاح بدون إعادة تصريف ولن بتغير سلوك وقت التنفيذ
  • متوافق مع المصدر - سيتم تصريف الشيفرة المصدرية بشكل ناجح بدون تغييرات عند تحديث جودو

النواة

التغيير التوافق مع GDScript التوافق مع C#‎‎ ثنائي التوافق مع C#‎‎ المصدري تم تقديمه
Basis
أصبح لدى التابع looking_at معامل اختياري جديد use_model_front ✔️ ✔️ ✔️ GH-76082
Object
تغير نوع الإعادة للتابع get_meta_list من PackedStringArray إلى Array[StringName‎]‎‏‎ ✔️ GH-76418
Transform3D
أصبح لدى التابع looking_at معامل اختياري جديد use_model_front ✔️ ✔️ ✔️ GH-76082
UndoRedo
أصبح لدى التابع create_action معامل اختياري جديد backward_undo_ops ✔️ ✔️ ✔️ GH-76688
WorkerThreadPool
تغير نوع الإعادة للتابع wait_for_task_completion من void إلى Error ✔️ ✔️ GH-77143

التحريك

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
AnimationNode
أصبح لدى التابع ‎_process معامل جديد test_only GH-75759
أصبح لدى التابع blend_input معامل اختياري جديد test_only ✔️ ✔️ ✔️ GH-75759
أصبح لدى التابع blend_node معامل اختياري جديد test_only ✔️ ✔️ ✔️ GH-75759
AnimationNodeStateMachinePlayback
تغير نوع الإعادة للتابع get_travel_path من PackedStringArray إلى Array[StringName‎]‎‏‎ ✔️ GH-76418

العقد ثنائية البعد

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
PathFollow2D
تم إزالة الخاصية lookahead GH-72842

العقد ثلاثية الأبعاد

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
Geometry3D
يغير المعامل segment_intersects_convex نوع المعامل planes من Array غير مكتوبة إلى Array[plane] ✔️ ✔️ GH-76418
MeshInstance3D
أصبح لدى التابع create_multiple_conves_collisions معامل اختياري جديد settings ✔️ ✔️ ✔️ GH-72152
Node3D
أصبح لدى التابع look_at معامل اختياري جديد use_model_front ✔️ ✔️ ✔️ GH-76082
أصبح لدى التابع look_at_from_position معامل اختياري جديد use_model_front ✔️ ✔️ ✔️ GH-76082

عقد الواجهة الرسومية

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
CodeEdit
أصبح لدى التابع add_code_completion_option معامل اختياري جديد location ✔️ ✔️ ✔️ GH-75746
RichTextLabel
أصبح لدى التابع push_list معامل اختياري جديد bullet ✔️ ✔️ ✔️ GH-75017
أصبح لدى التابع push_paragraph معامل اختياري جديد justification_flags ✔️ ✔️ ✔️ GH-75250
أصبح لدى التابع push_paragraph معامل اختياري جديد tab_stops ✔️ ✔️ ✔️ GH-76401
Tree
أصبح لدى التابع edit_selected معامل اختياري جديد force_edit ✔️ ✔️ ✔️ GH-76794

الفيزياء

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
Area2D
تغير نوع الخاصية priority من float إلى int GH-72749
Area3D
تغير نوع الخاصية priority من float إلى int GH-72749
PhysicsDirectSpaceState2D
تغير نوع الإعادة للتابع collide_shape من Array[PackedVector2Array]‎ إلى Array[Vector2‎]‎‏‎ GH-75260
PhysicsDirectSpaceState3D
تغير نوع الإعادة للتابع collide_shape من Array[PackedVector3Array]‎ إلى Array[Vector3‎]‎‏‎ GH-7526

التصيير

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
RDShaderFile
تغير نوع الإعادة للتابع get_version_list من PackedStringArray إلى Array[StringName‎]‎‏‎ ✔️ GH-76418
RenderingDevice
يغير المعامل draw_list_begin نوع المعامل storage_textures من Array غير مكتوبة إلى Array[RID]‎ ✔️ ✔️ GH-76418
RenderingServer
تغير نوع الإعادة للتابع global_shader_parameter_get_list من PackedStringArray إلى Array[StringName‎]‎‏‎ ✔️ GH-76418
SurfaceTool
تغير المعامل add_triangle_fan نوع المعامل tangents من Array غير مكتوبة إلى Array[Plane]‎ ✔️ ✔️ GH-76418

الحركة

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
NavigationAgent2D
تم استبدال التابع set_velocity بالخاصية velocity ✔️ GH-69988
تم تقسيم الخاصية time_horizon إلى time_horizon_agents وtime_horizon_obstacles GH-69988
NavigationAgent3D
تم إعادة تسمية الخاصية agent_height_offset إلى path_height_offset GH-69988
تم إزالة الخاصية ignore_y GH-69988
تم استبدال التابع set_velocity بالخاصية velocity ✔️ GH-69988
تم تقسيم الخاصية time_horizon إلى time_horizon_agents وtime_horizon_obstacles GH-69988
NavigationObstacle2D
تم إزالة الخاصية estimate_radius GH-69988
تم إعادة تسمية الخاصية get_rid إلى get_agent_rid GH-69988
NavigationObstacle3D
تم إزالة الخاصية estimate_radius GH-69988
تم إعادة تسمية الخاصية get_rid إلى get_agent_rid GH-69988
NavigationServer2D
تم إعادة تسمية الخاصية agent_set_callback إلى agent_set_avoidance_callback GH-69988
تم إزالة التابع agent_set_target_velocity GH-69988
تم تقسيم التابع agent_set_time_horizon إلى agent_set_time_horizon_agents وagent_set_time_horizon_obstacles GH-69988
NavigationServer3D
تم إعادة تسمية الخاصية agent_set_callback إلى agent_set_avoidance_callback GH-69988
تم إزالة التابع agent_set_target_velocity GH-69988
تم تقسيم التابع agent_set_time_horizon إلى agent_set_time_horizon_agents وagent_set_time_horizon_obstacles GH-69988

الشبكة

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
WebRTCPeerConnectionExtension
تغير نوع الإعادة للتابع ‎_‎create_data_channel من Object إلى WebRTCDataChannel ✔️ ✔️ GH-78237

ملحقات المحرر

التغيير التوافق مع GDScript التوافق مع C#‎ ثنائي التوافق مع C#‎ المصدري تم تقديمه
AnimationTrackEditPlugin
تم إزالة النوع AnimationTrackEditPlugin GH-76413
EditorInterface
تم تغيير نوع الوراثة للنوع EditorInterface من Node إلى Object ✔️ GH-76176
تم استبدال التابع set_movie_maker_enabled بالخاصية movie_maker_enables ✔️ GH-76176
تم استبدال التابع is_movie_maker_enabled بالخاصية movie_maker_enables ✔️ GH-76176
EditorResourcePreviewGenerator
تم إضافة نوع metadata للتابع ‎_genrate GH-64628
تم إضافة نوع metadata للتابع ‎_genrate_from_path GH-64628
EditorUndoRedoManager
أصبح لدى التابع create_action معامل اختياري جديد backward_undo_ops ✔️ ✔️ ✔️ GH-76688

تحديث GDExtention الخاص بك إلى 4.1

لا يزال GDExtention في مرحلة بيتا. سيحصل مشاكل في التوافقية عند التحديث إلى إصدار صغير جديد من جودو حتى يتم اعتباره مستقر

يجب علينا في جودو 4.1 لمعالجة بعض المشاكل الخطيرة كسر توافقية الثنائية بشكل كبير وتوافقية المصدر بشكل قليل

هذا يعني أن GDExtention المعمول به لجودو 4.0 سيحتاج لإعادة تصريف من أجل جودو 4.1 (باستخدام فرع 4.1 من godot-ccp) مع تغيير بسيط في الشيفرة المصدرية الخاصة به

تبدو دالة "entry_symbol" في جودو 4.0 كالتالي:

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

ولكن في جودو 4.1 تبدو كالتالي

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

هناك فرقان بسيطان:

  1. تغير الوسيط الأول من const GDExtensionInterface *p_interface إلى GDExtensionInterfaceGetProcAddress p_get_proc_address
  2. يحصل الباني من أجل المتغير init_obj على p_get_proc_address كمعامل أول

ستحتاج لإضافة سطر compability_minimum إضافي إلى ملف ‎.gdextention ليصبح كالتالي:

[configuration]

entry_symbol = "example_library_init"
compatibility_minimum = 4.1

هذا يُعلم جودو أنه قد تم تحديث GDExtention وهو آمن للتحميل في جودو4.1

مصادر