باختصار
- يُبقي World Partition العالم ضمن مستوى دائم واحد، ويقسّم المساحة إلى خلايا شبكية قابلة للتحميل.
- تُستخدم Data Layers لتجميع Actor بهدف تنظيمها في المحرر وتحميلها أثناء التشغيل.
- لاستخدام Data Layers، يجب أن تكون الخريطة مفعّلًا فيها World Partition.
- لا تحدد وثائق Epic رقم إصدار؛ لكن أحد مسارات سطر الأوامر الواردة كمثال يتضمن المجلد UE_5.1.
يهدف سير العمل الخاص بـWorld Partition وData Layers، كما توضحه وثائق Unreal Engine الرسمية، إلى تنظيم المستويات الكبيرة وتحميلها على أجزاء أثناء التشغيل. يحتفظ النظام بالعالم ضمن ملف مستوى دائم واحد، مع تقسيم المساحة إلى خلايا شبكية؛ ويُحدد تحميل الخلايا بحسب مواقع مصادر البث. أما Data Layers فتُستخدم لتنظيم Actor في المحرر أو تفعيلها وتعطيلها أثناء التشغيل. ولا تحدد وثائق Epic إصدارًا معينًا من Unreal Engine ضمن نطاقها؛ لكن أحد مسارات المجلدات الواردة كمثال في سطر الأوامر يشير إلى المجلد UE_5.1.
1. ابدأ بإعداد بنية World Partition
يُعرّف World Partition بأنه نظام آلي لإدارة البيانات وبث المستويات استنادًا إلى المسافة، ويقلل الحاجة إلى تقسيم الخريطة الكبيرة يدويًا إلى مستويات فرعية. تُقسّم المساحات في العالم إلى خلايا؛ فيمكن تحميل الخلايا القريبة من مصدر بث مثل اللاعب، وإلغاء تحميل الخلايا التي لم تعد مطلوبة. والهدف هو تحميل الأجزاء المرئية أو التي يجري التفاعل معها فقط من الخريطة أثناء التشغيل.
عند إنشاء مستوى جديد، يمكن استخدام نوع خريطة Open World. ووفقًا للوثائق الرسمية، تأتي في هذا القالب مفعّلة افتراضيًا ميزات World Partition وOne File Per Actor وData Layers وHierarchical Levels of Detail. ولتحويل المستويات الموجودة، يمكن استخدام القائمة Tools > Convert Level أو World Partition Convert Commandlet. ولأن التحويل قد يؤثر في المشروع والمستوى، فمن المهم الاحتفاظ بالملفات المصدرية وإجراء التحويل بحذر.
فيما يلي مثال على صيغة سطر الأوامر:
UnrealEditor.exe QAGame -run=WorldPartitionConvertCommandlet Playground.umap -AllowCommandletRenderingتسرد الوثائق أيضًا خيارات للتحويل مثل -ReportOnly. ويصدر هذا الخيار تقريرًا بما ستنفذه العملية من دون إجراء التحويل. ويمكن للخيار -ConversionSuffix إضافة _WP إلى اسم الخريطة المحوّلة لأغراض الاختبار. ويتوفر كذلك الخيار -DeleteSourceLevels الذي يحذف المستويات المصدرية بعد التحويل؛ لذا ينبغي اختيار الوسائط المستخدمة بعناية وفقًا لمتطلبات المشروع.
2. افهم تحميل الخلايا ومصادر البث
يُحدد إعداد Is Spatially Loaded الموجود في قسم World Partition بلوحة Details ما إذا كان Actor سيُحمّل أم لا. إذا كان الإعداد مفعّلًا، فسيُحمّل Actor عندما يدخل نطاق مصدر بث، ما لم يكن معينًا إلى Data Layer معطّلة. وإذا كان الإعداد غير مفعّل، فسيُحمّل بغض النظر عن النطاق المكاني، ما لم يكن معينًا إلى Data Layer معطّلة.
يمكن استخدام Player Controller مصدرًا للبث افتراضيًا. كما يمكن إضافة مكوّن World Partition Streaming Source إلى المشهد. ويتضمن هذا المكوّن خيارات مثل الشبكة المستهدفة والأولوية وتحديد ما إذا كانت الخلايا ستنتقل إلى حالة Loaded أو Activated. وإذا دخلت الخلية نطاق أكثر من مصدر بث واحد، تُؤخذ الأولوية والحالة المستهدفة في الحسبان.
| الإعداد | القيمة المقترحة | التأثير |
|---|---|---|
| Cell Size | مثال الوثائق: 256 m × 256 m × 256 m | يحدد حجم الخلايا المستخدمة لإنشاء مستويات البث. |
| Loading Range | مثال الوثائق: نصف قطر 768 m | يحدد النطاق الذي تُحمّل ضمنه الخلايا حول مصدر البث. |
| عدد Runtime Grid | تشير الوثائق إلى أن استخدام أكثر من شبكة قد يؤثر سلبًا في الأداء؛ ولا تقدم توصية ثابتة. | يؤثر في تحميل الخلايا أثناء التشغيل. |
الأبعاد والمسافات الواردة في الجدول أمثلة من الوثائق، وليست قيمًا ثابتة موصى بها لكل مشروع. ينبغي اختبار الإعدادات الفعلية وفقًا لمقياس المشهد وبنية المحتوى. ويختلف سلوك التحميل في المحرر عن سلوكه أثناء التشغيل: فعند فتح عالم كبير، لا يحمّل المحرر العالم بأكمله في البداية، بل يحمّل Actor التي يكون فيها Is Spatially Loaded غير مفعّل.
3. نظّم المحتوى باستخدام Data Layers
لاستخدام Data Layers، يجب أن يكون World Partition مفعّلًا في الخريطة. ويميّز النظام بين نوعين من الأصول: يحمل Data Layer Asset بيانات على مستوى المشروع يمكن استخدامها في عوالم مختلفة، بينما يتضمن Data Layer Instance خصائص خاصة بعالم معين. ويمكن استخدام Asset نفسه في عوالم مختلفة من خلال Instances منفصلة.
لإنشاء Data Layer Asset جديد، انتقل إلى المجلد المطلوب في Content Browser، ثم اختر Miscellaneous > Data Layer. بعد ذلك، انقر بزر الفأرة الأيمن في نافذة Window > World Partition > Data Layer Outliner، واختر Create New Data Layer لإنشاء Instance، ثم عيّن Asset إلى هذا الـInstance. ولإضافة Actor، حدد Actor المطلوبة في Outliner، ثم استخدم الأمر Add Selected Actors to Selected Data Layers على الـInstance المستهدف. ويمكن إجراء التعيين نفسه من قسم Data Layers في لوحة Details الخاصة بـActor المحددة.
يمكن ضبط نوع Asset على Editor أو Runtime. ويمكن استخدام Editor Data Layers لتنظيم المحتوى ضمن المشروع وتحميله وإلغاء تحميله في المحرر. أما Runtime Data Layers، فيمكن تغييرها أثناء التشغيل باستخدام Blueprint أو C++. فعلى سبيل المثال، يمكن وضع حالات مشهد مختلفة في طبقات منفصلة، لكن ينبغي تصميم هذا التنظيم وفقًا لمتطلبات المشروع. وقد يؤدي تحميل عدد كبير من عناصر المحتوى في الوقت نفسه إلى مشكلات في الأداء. كذلك، قد يؤدي تعيين Actor شائعة الاستخدام إلى عدد كبير من Runtime Data Layer Instance إلى خفض أداء البث في World Partition.
4. ما الذي يتغير في سير عمل التصور المعماري؟
في تصور بيئة كبيرة أو مبنى، يمكن استخدام World Partition لإدارة الخلايا ذات الصلة بدلًا من تحميل المشهد بأكمله دفعة واحدة. وتساعد Data Layers على فصل عناصر البيئة ومجموعات المحتوى المختلفة بعضها عن بعض في المحرر. ويمكن لهذا النهج أن يساعد أعضاء الفريق الذين يعملون على العالم نفسه على التركيز في مكونات محددة. ويهدف One File Per Actor إلى تقليل بعض العقبات المرتبطة بمشاركة ملف المستوى أثناء العمل الجماعي، وذلك من خلال حفظ Actor في ملفات منفصلة.
قبل البدء، تحقق من تفعيل World Partition في الخريطة؛ فـData Layers لا تحل وحدها محل هذا الشرط. وإذا كنت ستجري تحويلًا، فاحتفظ أولًا بالخريطة المصدرية واطّلع على خيارات لا تُجري التحويل، مثل -ReportOnly. وعند تقييم إعدادات البث، لا تعتبر أمثلة الوثائق لحجم الخلية ونطاق التحميل وصفة ثابتة. ولا توفر مصادر Epic معلومات عن متطلبات أجهزة محددة أو شروط الترخيص. لذلك ينبغي التحقق من ملاءمة الأجهزة وترخيص المشروع بصورة منفصلة للتثبيت المستخدم.
الأخطاء الشائعة
محاولة استخدام Data Layers في خريطة لم يُفعّل فيها World Partition.
اعتبار حجم الخلية ونطاق التحميل الواردين في أمثلة الوثائق توصيتين ثابتتين لكل مشهد.
تحميل عدد كبير من عناصر المحتوى في الوقت نفسه أو توزيع Actor شائعة الاستخدام على عدد مفرط من Runtime Data Layer Instance.
تشغيل خيارات التحويل، وخصوصًا الوسائط التي قد تحذف المستويات المصدرية، من دون التحقق من نتائجها.
المصادر
2 مصادرلا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.
تكمن القيمة العملية لـWorld Partition لمكاتب العمارة والتصور في تركيا في قدرته على تقسيم المحتوى في المشاهد الكبيرة إلى أجزاء يسهل إدارتها، ومساعدة أعضاء الفريق على التركيز في مجموعات Actor محددة. وتوفر Data Layers بنية مفيدة للفرق التي ترغب في تنظيم عناصر البيئة والمحتوى البديل.
لكن المصادر لا تتضمن معلومات عن تكلفة الإعداد أو مستوى الأجهزة المطلوب؛ لذا ينبغي للمكاتب تقييم ظروف مشاريعها وتراخيصها كلٌّ على حدة. ومن أكثر النقاط التي قد تُغفل شرط تفعيل World Partition، ونسخ إعدادات الخلايا من القيم الواردة في الأمثلة، وتحميل طبقات كثيرة في الوقت نفسه. ويُعد إصدار تقرير قبل التحويل واختبار سلوك التحميل في مشهد حقيقي نقطة بداية أكثر أمانًا.
الأسئلة الشائعة
كيف أنشئ Data Layers في Unreal Engine؟
أنشئ Data Layer Asset من Content Browser باستخدام الخيار `Miscellaneous > Data Layer`. ثم أنشئ Instance جديدًا في Data Layers Outliner وعيّن Asset إليه.
كيف أضيف World Partition إلى مستوى موجود؟
وفقًا لوثائق Epic، يمكن تحويل المستوى من قائمة `Tools > Convert Level` أو باستخدام World Partition Convert Commandlet. ويصدر الخيار `-ReportOnly` في commandlet تقريرًا بالعملية من دون إجراء التحويل.
ما فائدة Runtime Data Layers؟
يمكن تغيير Runtime Data Layers أثناء التشغيل باستخدام Blueprint أو C++. ويمكن استخدامها لتحميل المحتوى أو إلغاء تحميله.



