📄| شرح شامل ومبسط:
🔹 مشاكل Unreal Engine 5 بالنسخ الأولى
🔹 وايش اللي حصل مع نسخة 5.5؟
🔹 وايش بيصير مع اصدار Unreal Engine 6؟
🎮 اولاً: محرك UE بالنسبة لي اعتبره من اجمل المحركات وشفنا عليه اساطير الالعاب على مر الاجيال. وفعلياً مع UE4 شفنا واحدة من اجمل النسخ على الاطلاق سواء من الناحية الرسومية او ثبوت الاداء واستقراره
🔔 لكن مع UE5 جات معه قفزة تقنية، وعدة تقنيات جديدة مثل:
🔸 تقنية Nanite
🔸 تقنية Lumen
🔸 وكذلك خرائط الظلال الافتراضية VSMs
🔸 وتقنيات تتبع الاشعة بشكل عام
🚨 وللأسف ان هذي التقنيات كلها كانت تسبب تأتأة/تقطيع (Stutter) في حال استخدمها اي مطور وقام بتفعيلها في لعبته مع مكتبة DX12، والسبب الاساسي هو:
عنق الزجاجة على النواة الواحدة في المعالج المركزي (CPU Single Thread Bottleneck).
ولأن المحرك في النسخ الأولى (5.0 إلى 5.3) ماكان يوزع الحمل الناتج من التقنيات هذي على انوية متعددة، بل تكون الاحمال على نواة واحدة تنضغط الى اقصاها وتسبب عنق الزجاجة. يعني الـ Render Thread يكون محدود على مسار او نواة واحدة في CPU
🔴 غير مشكلة استهلاك الـ VRAM العالي اللي يحصل بسبب ضعف كفاءة إدارة الذاكرة، خصوصاً مع بث الأصول وعناصر العالم (Assets Streaming) أو معالجة الـ VSMs
🔴 غير ان المحرك من الاساس يعاني من مشكلة طريقة تجميع المظللات (Shader Compilation)؛ لأنه يقوم بإستدعاء المظللات بشكل فوري بالوقت اللي تظهر فيه العناصر والمؤثرات البصرية بالشاشة لأول مرة للاعب، وكان هذا الشيء يجي معاه الـ Shader Stutter والتقطيع لأن الاوامر تجي بشكل مفاجئ وتضغط على نفس النواة المخنوقة.
🔴 ومن جهة اخرى مشكلة الـ Traversal Stutter اللي تحصل اثناء تنقل اللاعب في عالم اللعبة من مكان الى آخر. يحصل لحظتها عملية تحميل ورسم العناصر قدامه بالشاشة. فالمعالج ينضغط بشكل كبير بسبب كمية الاوامر (Draw Calls) اللي يطلبها كرت الشاشة GPU وتجي بشكل لحظي وسريع وتضغط على المعالج في نواة ومسار واحد وبنفس الوقت اللي يتم فيه جلب الملفات من SSD .. فيحصل تجمد تام وتقطيع
⚠️ فهنا الكرت الرسومي GPU يجلس ينتظر الاوامر تتنفذ من المعالج CPU، والمعالج هنا مخنوق! لأن فيه نواة واحدة تتعامل مع كل الـ Draw Calls هذي.
✅ اللي صار في نسخة 5.5 ان الـ Render Thread تغيرت هندسته (بدأ الحل مع 5.4 واكتمل في 5.5) وصار يوزع احمال الرندر بشكل موازي على اكثر من نواة بكفاءة عالية ((Renderer Parallelization))، وتحسن الوضع بشكل كبير جداً
- ومع 5.6 تحسنت الامور اكثر واكثر، مثل بث أسرع للأشكال الهندسية (Geometry Streaming) لتقليل الـ pop-ins. وتحسين تتبع الاشعة
⚠️ واي مشكلة لا زالت موجودة في العاب المحرك اليوم فهي بسبب ان المطور ما حدث لعبته الى الاصدار الجديد، او المطور نفسه ما اشتغل بشكل فعّال على حل المشاكل ولم يبذل مجهود اضافي
لذلك اصلا حتى مع النسخ السابقة فيه مطورين حاولوا يحلون المشاكل وجلسوا وقت طويل وبعضهم نجح نوعاً ما، وكثير لم يتمكن من ايجاد حل بسبب بنية المحرك نفسه ... فبعضهم كان ذكي وريح نفسه وتنازل عن بعض تقنيات UE5 الثقيلة
---------------
💡 وهذا الحل الهندسي مع نسخة Unreal Engine 5.5 حل مشكلة الشق الرسومي (Render Thread) بشكل شبه كامل ولكن بقي شق آخر مهم وهنا يجي دور Unreal Engine 6 👇🏼
ونسأل سؤال: ايش بيحصل مع الاصدار السادس؟
🚨 الآن اللي بيصير في UE6 هو امر مشابه للي حصل مع UE 5.5 ولكنه في عمق مختلف شوي 👇🏼
⚠️ اولاً: توجد مشكلة أزلية يعاني منها محرك Unreal Engine من مدة طويلة، وهي ان الـ Game Logic أو الـ Game Thread (وهو كود اللعبة أو عقل ومنطق اللعبة) تتم معالجته بالكامل في "مسار واحد فردي" بالمعالج المركزي CPU (مثل حسابات الذكاء الاصطناعي، والفيزيائيات ..الخ)
[وهذا الشيء يتسبب في الشق الآخر من مشكلة التقطيع المذكورة سابقاً]
🟢 والاصدار الجديد Unreal Engine 6 بيتخلص اخيراً من هذي المشكلة القديمة وبيعتمد على المحاكاة المتوازية [Multithreaded Simulation] في معالجة الـ (Game Thread)، عشان تتوزع الاوامر ويستفيد المعالج من الانوية المتعددة اخيراً 👌🏼
فهو يشبه ما حصل من قبل مع اصدار 5.5 في قضية معالجة الاوامر الرسومية (Render Thread) ولكن هالمرة على مستوى عقل اللعبة نفسه ✅
عموماً المحرك اليوم مختلف وافضل بكثير من اللي عرفناه وشفناه ببداية الجيل مع اصدارات 5.0 الى 5.4، ولكن متفائل جداً في UE6 من بعد حل عدة مشاكل جوهرية في اصدار 5.5 والحل الهندسي الجديد بالسادس 👍🏼
رسمياً: الاعلان عن Unreal Engine 6 ✅
وبهذا سوف نترك الكابوس Unreal Engine 5 اخيراً 🙄
ولو انه من الصحيح ان الاصدار الخامس تحسن بشكل شبه جذري مع نسخة 5.6 وما بعدها من تحديثات ولكن توقيت اعلان الاصدار السادس جاء بوقت مهم وأفضل من وجود 5.8 او غيره
اتوقع ان الانتقال الى Unreal Engine 6 بيكون مثل الانتقال من UE3 الى UE4 الرائع .. واتمنى ذلك من كل قلبي .. ونقول ان شاء الله 🤲🏼