باختصار
- يحتفظ World Partition بالمستويات الكبيرة في ملف دائم واحد، ويقسّم مساحة العمل إلى خلايا شبكية.
- تُحمّل الخلايا وتُفرّغ أثناء التشغيل وفقًا لمواقع مصادر التدفّق وإعدادات الشبكة.
- يمكن لـ HLOD تمثيل العناصر البعيدة في الخلايا غير المحمّلة باستخدام هندسة بديلة.
- قبل إنشاء HLOD، يجب إضافة الممثلين المعنيين إلى طبقة HLOD وضبط قيمة Mobility على Static.
تشرح الوثائق الرسمية لـ Unreal Engine أن World Partition نظام يقسّم المستويات الكبيرة إلى خلايا ضمن Level دائم واحد، ثم يحمّل هذه الخلايا ويفرّغها أثناء التشغيل. يوضح هذا الدليل كيفية إعداد النظام للبيئات المعمارية والمناظر الطبيعية الواسعة ومشاهد التصوّر واسعة النطاق، وكيفية التعامل مع الهندسة البعيدة باستخدام HLOD. لا تحدد الوثائق إصدارًا معينًا من Unreal Engine، لذلك نورد أسماء القوائم والخيارات كما وردت في المصدر.
1. إنشاء مشروع أو مستوى باستخدام World Partition
عند بدء مشروع جديد، يكون World Partition مفعّلًا افتراضيًا في بعض القوالب ضمن فئة Games. لكن خيار Enable Streaming يكون معطّلًا افتراضيًا في قوالب Blank وFirst Person وThird Person وTop Down وVehicle Advanced. لذلك، إذا كان المطلوب ليس تقسيم المشهد فحسب، بل تفعيل تدفّق الخلايا أيضًا، فتحقق من خيار Enable Streaming ضمن World Settings.
لإنشاء مساحة خارجية واسعة كنقطة انطلاق، انتقل إلى File › New Level، واختر نوع خريطة Open World، ثم اضغط زر Create. في نوع Open World، تكون خيارات World Partition وOne File Per Actor وData Layers وHierarchical Levels of Detail مفعّلة افتراضيًا. وتتضمن خريطة المثال الواردة في الوثائق Landscape بمقاس 2 km x 2 km، إلى جانب إضاءة خارجية.
يمكن تحويل مستوى موجود باستخدام الخيار Tools > Convert Level. ويمكن أيضًا تشغيل أداة سطر الأوامر. وفيما يلي مثال الأمر الوارد في الوثائق الرسمية:
UnrealEditor.exe QAGame -run=WorldPartitionConvertCommandlet Playground.umap -AllowCommandletRenderingيمكن استخدام -ReportOnly في أمر التحويل لإعداد تقرير بالعملية دون تنفيذ التحويل. أما -ConversionSuffix فيساعد على الاحتفاظ بالمستوى المصدر، إذ يضيف _WP إلى اسم الخريطة المحوّلة لأغراض الاختبار. وقبل استخدام الخيار -DeleteSourceLevels الذي يحذف المستويات المصدر، ينبغي مراجعة الملفات التي يجب الاحتفاظ بها وسير عمل الفريق.
2. ضبط تدفّق الخلايا وفقًا للمشهد
يقسّم World Partition المستوى إلى خلايا شبكية يمكن استخدامها أثناء التشغيل. ويعتمد تحميل الخلايا وإفراغها على مواقع مصادر التدفّق وإعدادات Runtime Grid. يمكن استخدام Player Controller مصدرًا للتدفّق افتراضيًا، كما يمكن إضافة مكوّن World Partition Streaming Source إلى المشهد.
على سبيل المثال، يمكن تفعيل مصدر تدفّق مؤقت في موقع ما لتحميل الخلايا المحيطة بنقطة انتقال آني قبل وصول اللاعب إليها. يتضمن المكوّن خيارات مثل Target Grid وPriority وTarget State. ويحدد Target State ما إذا كانت الخلايا المتقاطعة ستنتقل إلى حالة Loaded أو Activated. وتُعلم وظيفة Is Streaming Completed في Blueprint ما إذا كان تدفّق الخلايا التي يغطيها المكوّن قد اكتمل.
توجد إعدادات Runtime Grid في قسم World Partition Setup ضمن لوحة World Settings. وتعرض الوثائق شبكة 2D Runtime Hash افتراضيًا، وتحذّر من أن استخدام أكثر من شبكة واحدة قد يؤثر سلبًا في الأداء. القياسات أدناه أمثلة واردة في الوثائق، ولا ينبغي اعتبارها قيمًا ثابتة موصى بها لكل مشهد.
| الإعداد | المثال الوارد في الوثائق | التأثير |
|---|---|---|
| Cell Size | 256 m x 256 m x 256 m | يحدد حجم الخلايا. |
| Loading Range | نصف قطر 768 m | يحدد المسافة التي تُحمّل عندها الخلايا حول مصدر التدفّق. |
3. إنشاء طبقة HLOD للبيئات البعيدة
قد يؤدي تدفّق الخلايا إلى عدم ظهور العناصر الموجودة في المناطق غير المحمّلة حاليًا. ويمثّل نظام World Partition HLOD هذه المناطق باستخدام proxy mesh؛ ووفقًا للوثائق، يمكن لهذا النهج المساعدة على تقليل عدد draw call لكل إطار وتحسين الأداء.
لإنشاء طبقة HLOD جديدة، انتقل من قائمة + Add في Content Drawer إلى Miscellaneous › HLOD Layer. اختر نوع الطبقة وفقًا لمحتوى المشهد:
يمثّل Instancing عناصر Static Mesh المصدرية عبر مكوّنات Instanced Static Mesh، باستخدام إعدادات LOD منخفضة المستوى. وتذكر الوثائق الأشجار والنباتات، مثل استخدام imposter، ضمن الأمثلة المناسبة لهذا النوع.
يدمج Merged Mesh ممثلي Static Mesh في proxy mesh واحد.
يدمج Simplified Mesh الممثلين في proxy mesh واحد، ويبسّط الهندسة أيضًا.
تظهر إعدادات منفصلة لكل من Merged Mesh وSimplified Mesh. وبحسب نوع الطبقة، يمكن ضبط خيارات مثل UVs الخاصة بخريطة الإضاءة، وتبسيط المواد، ودمج الشبكات، وإنشاء العناصر البديلة. ويحدد HLODMaterial المادة الأساسية المستخدمة لخبز المواد في الطبقات المدمجة أو المبسطة؛ وتشير الوثائق إلى أن المادة الافتراضية تكفي في معظم الاستخدامات.
4. تشغيل إنشاء HLOD والتحقق من النتيجة
لإنشاء HLOD، أضف الممثلين إلى طبقة HLOD، واضبط قيم Mobility لديهم على Static، وفعّل إنشاء HLOD. يمكن تعيين الطبقة من خاصية HLOD في لوحة Details الخاصة بالممثل، أو من خاصية Default HLOD Layer في Data Layer، أو عبر World Settings. بعد ذلك، يمكنك استخدام المسار Build > Build HLODs أو تشغيل commandlet باسم WorldPartitionHLODsBuilder.
تأثير ذلك في سير عمل التصوّر المعماري
يتيح World Partition إدارة الأجزاء المطلوبة من المشهد بدلًا من تحميل كل شيء في الوقت نفسه، سواء كان المشهد لمجمّع واسع أو حرم جامعي أو نموذج بيئة. وفي العمل الجماعي، قد يساعد حفظ الممثلين في ملفات منفصلة باستخدام One File Per Actor على تقليل الحاجة إلى تسجيل ملف Level لاستلامه، بينما يحرر الآخرون الممثلين. ويساعد HLOD على إبقاء أجزاء المناظر الطبيعية والمباني البعيدة ظاهرة.
مع ذلك، ينبغي اختبار حجم الخلية ونطاق التحميل وفقًا لمتطلبات المشروع؛ فلا ينبغي تطبيق القيم الواردة في الوثائق مباشرة على كل مشهد. وقد تكون كلفة الذاكرة مرتفعة عند معالجة هندسة كبيرة باستخدام فاصل أخذ عينات صغير في إعدادات Simplified Mesh. ويمكن أن يؤدي تعطيل distance fields في الشبكات المدمجة المعروضة من مسافة بعيدة إلى توفير الذاكرة. لا تحدد الوثائق متطلبات الترخيص أو الأسعار أو أجهزة بعينها؛ لذا ينبغي التحقق أيضًا من إصدار Unreal Engine المستخدم وإعدادات المشروع لدى الفريق قبل التطبيق.
أخطاء شائعة
افتراض أن تدفّق الخلايا مفعّل: يكون Enable Streaming معطّلًا في بعض القوالب؛ تحقّق من ذلك ضمن World Settings.
إسناد نوع HLOD نفسه إلى كل ممثل: يمكن النظر في instancing للأشجار، وفي أنواع الطبقات الأخرى للمباني المدمجة.
نسيان ضبط Mobility على Static قبل إنشاء HLOD: وفقًا للوثائق، هذا أحد الشروط اللازمة للإنشاء.
اعتبار قياسات الشبكة الواردة في الأمثلة وصفة ثابتة: ينبغي اختبار حجم الخلية ونطاق التحميل وفقًا لنطاق المشهد.
المصادر
2 مصادرلا نعيد نشر نصوص المصادر؛ الاقتباسات القصيرة مشار إليها، وما تبقى ملخص وتعليق من إعدادنا.
بالنسبة إلى مكاتب العمارة والتصوّر في تركيا، تتمثل الفائدة الأساسية لـ World Partition في الحد من الحاجة إلى تحميل مشاهد البيئات الكبيرة دفعة واحدة، وإمكانية تسهيل العمل الجماعي على Level نفسه. ويمكن استخدام تدفّق الخلايا وHLOD معًا في عروض المجمعات والمشاهد الطبيعية الواسعة أو المشاهد الخارجية.
لكن نقل قيم الخلايا والتحميل الواردة في الأمثلة إلى المشروع مباشرة قد لا يكون نقطة انطلاق مناسبة؛ إذ ينبغي اختبارها وفقًا للمشهد. كما يجب مراعاة كلفة الذاكرة عند استخدام فاصل أخذ عينات صغير في Simplified Mesh. ولا تتناول الوثائق متطلبات الترخيص أو الأسعار أو الأجهزة؛ لذا من المهم أن تتحقق المكاتب أيضًا من التوافق مع الإصدار الذي تستخدمه ومن الأداء على أجهزتها الحالية.
الأسئلة الشائعة
ما وظيفة Unreal Engine World Partition؟
يقسّم المستوى الكبير إلى خلايا شبكية ضمن Level دائم واحد، ثم يحمّل الخلايا ويفرّغها أثناء التشغيل وفقًا لمواقع مصادر التدفّق.
ما الذي يقدمه HLOD في Unreal Engine؟
يمكن لـ HLOD تمثيل الممثلين البعيدين في خلايا World Partition غير المحمّلة باستخدام proxy mesh. ووفقًا للوثائق، يساعد ذلك على تقليل عدد draw call وتحسين الأداء.
ما الشروط المطلوبة قبل إنشاء HLOD؟
يجب إضافة الممثلين إلى طبقة HLOD، وضبط قيم Mobility لديهم على Static، وتفعيل إنشاء HLOD.



