PsRealVehicle ، أو ملحق فيزياء دبابات المصدر المفتوح في الحرب المدرعة: الاعتداء


قبل بضع سنوات ، تم تكريم فريقنا لإنشاء "ألماتي" المحمول. بالالتزام بقواعد "نصنع لعبة ، وليس تقنية" ، أنشأنا نموذجًا أوليًا لما هو موجود بالفعل في المحرك. كان 4.9 UE ، بناءً على النموذج المادي - مركبات PhysX ، والكثير من الألم (سواء مع أو بدون).


علاوة على ذلك ، أنشأ فريقنا المكوّن الإضافي مفتوح المصدر PsRealVehicle ، المتوفر بموجب ترخيص MIT . تم ضبط هذا المكون الإضافي لفيزياء الدبابات والمركبات ذات العجلات للرماة الشبكة المحملة بشكل كبير ، ويمكنك مشاهدة عملها في أي وقت في مشروعنا Armored Warfare: Assault .


الأسماء والمظاهر وكلمات المرور.


من الواضح. فهمت. وفقط في العمل.



مستودع الإضافات


وثائق التكوين الرئيسية

المستخدمة في المشروع: Armored Warfare: Assault


القليل من التاريخ أو العودة إلى الجذور


بدأنا العمل في المشروع على Unreal Engine 4.9 . في ذلك الوقت ، دعمت فيزياء الماكينة "خارج الصندوق" المركبات ذات العجلات الأربع فقط ، وبالنسبة إلى "المقاعد" ذات الست عجلات (LAV-400 ، أول مركبة نموذجية "قتالية") ، كان علينا استخدام مجموعة المحرك المخصصة على الفور. مع الفيزياء الداخلية للدبابات ، كان الأمر أسوأ من ذلك: يجب أن تكون البيانات حول كيفية عمل كل شيء وتكوينه ، شيئًا فشيئًا للخروج من الكود.


باتباع قاعدة "النموذج الأولي" ، قمنا بتشكيل المتطلبات التالية لأنفسنا:


  • يجب أن تحاكي الفيزياء حركة الدبابة (الحد الأدنى من البرنامج) والمركبات ذات العجلات (مرغوب للغاية - هذه ميزة من سلسلة ألعاب AW).
  • يجب أن يتحمل الخادم المخصص ما يصل إلى 20 جهازًا لكل جلسة عبر الإنترنت ، ويجب على العميل التعامل معها.
  • يجب أن تتبع جميع العجلات والمسارات المخالفات السطحية ، ويجب أن يعمل التعليق ، ويجب أن يتأرجح الخزان.
  • يجب تحديد الإعداد الفيزيائي بالقيم الحقيقية (كتلة الماكينة ، قوة المحرك) ويؤدي إلى سلوك واقعي (القدرة على التغلب على أنواع معينة من التضاريس).
  • كلما قل الرمز التقني الذي نكتبه ، كان ذلك أفضل: يجب أن تصنع Epic Games المحرك ، وليس نحن .


لذا ، فإن المتطلبات واضحة تقريبًا ، ابدأ في العمل. وبسرعة كافية ، قمنا بتجميع النموذج الأولي الأول ، وذهبت الدبابات ، وقادت السيارات ، ولكن كانت لدينا مشكلتان:


  1. كل هذا كان يستهلك المعالج بقوة.
  2. لم تكن الصورة التي تم إنشاؤها للعالم تريد أن تتناسب مع إطار السلوك الواقعي للمعدات الثقيلة. لا يمكن أن يستغرق الخزان الذي يبلغ وزنه ثلاثين طنًا تحت أي إعدادات ارتفاعًا بمقدار 15 درجة (وهذا أحد أسهل الخيارات). لقد أمضينا الكثير من الوقت في التلاعب بالإعدادات لمحاكاة الاحتكاك والمناظر الطبيعية ، ولكن هذا أدى إما إلى سحب القوة إلى القيم الكونية (أكثر من 20 مرة أكثر من القيم الحقيقية ، ونتيجة لذلك ، تصرفت السيارات بشكل غير مستقر وغير متوقع) ، أو إلى مجموعات من المعدات (PhysX) يعمل بشكل جيد مع كتلة من المركبات في منطقة طن ونصف).


كان مصممو اللعبة من هذا أبعد ما يكون عن الحماس. بكى المبرمجون ، وخزوا ، لكنهم استمروا في أكل الصبار (تتطلب الحفلة حلًا عمليًا!). تمت الموافقة على النموذج الأولي من قبل القيادة وإرساله لإنشاء نسخة ألفا (بالمناسبة ، الفيديو من النموذج الأولي على Youtube . ولكن مر الوقت ، وأصبحت الآمال بمستقبل أكثر إشراقًا لمثل هذه الفيزياء أقل وأقل. الإعدادات لم تكن كافية ، وبدا سلوكهم مثل السحر الأسود. والموقف "اللعبة ، وليس التكنولوجيا" قيدت يديها بطريقتها الخاصة ، على الأقل مع شكوك حول ما إذا كان بإمكاننا سحبها.


مسلح بهدوء مع ويكيبيديا ، المعرفة والخبرة المدرسية المتبقية في العمل على الفيزياء "على الطوافات" la Assassin's Creed ، في غضون يومين أنشأت نموذجًا أوليًا لفيزياء الدبابات الجديدة ، والتي شكلت أساس البرنامج المساعد PsRealVehicle. في غضون أسبوع ، تم وضع إثبات صحة الفكرة على قدميه ، وتم عرض فرق CTO وحمايتها من خلال اختبار الحمل. قالت الأرقام: أن تكون فيزياءك.


... - ... وفي الإنتاج


لقد ذهب المسار من النموذج الأولي إلى المبيعات لفترة أطول. إذا كان أسبوعًا كافيًا لإجراء فحص نظري ، فقد استغرق الأمر شهرًا ونصف للحصول على إصدار تجريبي مناسب . استغرق إنشاء إصدار "كامل" كاملًا حوالي ستة أشهر ، واستمر في التحسين والتصحيح - طوال فترة العمل الكاملة على المشروع. من نواح عديدة ، نحن مدينون بهذه السرعة العالية لتطوير وتنفيذ الفيزياء في المشروع لمصمم اللعبة التقنية إيغور ، الذي جاء إلى فريقنا في ذلك الوقت ، والذي أدى دقة تفاصيله في جوانب النموذج الرياضي وإدراكه الشخصي من قبل اللاعبين إلى النتيجة الحالية. يجب أن أعترف ، من الناحية التكنولوجية ، أنني بربري : من واجبي أن أقوم بفأس لقطع غابة. بعد معالجة إيغور وضبط النموذج مع أشخاص آخرين ، حصلنا على حل مفتوح جاهز للإنتاج قابل للتطوير ومحسن للغاية لتلبية احتياجات اللاعبين المتعددين . هناك شيء تفخر به: من بين العديد من المكونات الإضافية المتاحة في السوق (بما في ذلك مركبات PhysX المدمجة) ، أسرع إعدادنا وأكثر شفافية.


بالمناسبة ، كانت هناك بعض الحالات المضحكة. بينما كنا نعمل مع مركبة PhysX ولم يكن بمقدور مركباتنا الزلقة المتعددة العجلات أن تتسلق التلال الصغيرة ، سمعت اللوم أكثر من مرة ، قائلة أن فريقنا لم يتمكن من إعدادها حتى يحصل عليها الناس. تم اتخاذ قرار استخدام البرنامج المساعد ، بما في ذلك تحت تأثير هذا الإطار:



آخر تطورات الجيش السوفيتي! دبابة عنكبوت يمكنها تسلق جدران 89 درجة . ببساطة لم يكن هناك شيء لتغطية: د


ميزات حلنا


قبل أن أنتقل إلى وصف تكوين الدبابات والمركبات في PsRealVehicle كمثال على AW: Assault ، أريد أن أذكر شيئين شكلا أساس النموذج المادي المستخدم.



أولاً ، نحن نلتزم بوضوح بحقيقة أننا لا نصنع جهاز محاكاة فيزياء الدبابات ، بل لعبة ذات ممر كافٍ. إنه أمر محزن ، لكن قلة من الناس يحتاجون إلى دبابة حقيقية في سلوكهم - هذا رائع فقط في مقاطع الفيديو التقديمية ، وليس في السيطرة ، وأكثر من ذلك في مطلق النار. يحتاج اللاعب إلى دبابة تتصرف مثل الدبابة بمعنى أن الافلام الأخرى قد أنشأتها بالفعل. والعمل على جهاز عادي ، وليس بعض تيتان.


النقطة الأولى لها نتيجة: بعض الأشياء في اللعبة تعمل وهمية. إذا كان هناك شيء يشبه الخزان ويتصرف مثل الخزان ، فهو خزان ، ولا يهم أنه داخله فرقاطة صغيرة ، أو أن هذا الجزء من الفيزياء تم إعداده بسحر الاحتكاك المشروط. إحدى هذه الاتفاقيات هي التحكم في دوران الماكينة عن طريق تغيير السرعة الزاوية ، وليس عن طريق القوى المطبقة على العجلات والتعليق. تقليديا ، يدور الخزان بمقدار X درجة في الثانية ، لأننا قررنا ذلك على أساس اعتبارات اللعب ، وليس لأن مساراته تدور بهذه السرعة.



بالمناسبة ، هذا لا ينفي حقيقة أنه "تحت غطاء المحرك" يمكنك تشغيل الفيزياء "الحقيقية" للدوران ، فقد تم استخدامه في النماذج الأولية الأولى . بطريقة جيدة ، من المفيد ربط عمل التعليق الزاوي وقاعدة العجلة وما إلى ذلك. إذا بدأنا في إجراء محاكاة السباق ، فسوف نعود بالتأكيد إلى هذا ، ولكن في الوقت الحالي هذا هو أحد العناصر في قائمة التحسينات المحتملة.



هيكل الخزان في AW: الاعتداء


التسلسل الهرمي للصف


AAwmVehicle هي فئة C ++ الرئيسية المسؤولة عن الآلة في اللعبة ، مقسمة إلى العديد من المكونات (الحركة - UPsRealVehicleMovementComponent والأصوات و VFX والإحصاءات والدروع وغيرها). BP_DefaultVehicle توريث BP_DefaultVehicle منه ، وهو طبقة إضافية للإعدادات الافتراضية لجميع الأجهزة. جميع الآخرين هي مخططات خاصة للإعدادات لكل قطعة من المعدات في اللعبة.


كل جهاز عبارة عن مجموعة من هذه البيانات:


  • مخطط ، حيث يتم تسجيل جميع الأصول الخارجية ، والأصوات ، والخصائص التي يتم تعيينها "المركبات ذات العجلات / المتعقبة" ، ويتم إعداد الفيزياء.
  • هيكل عظمي شبكي وأصول مرتبطة به:
    - الأصول المادية (لا يوجد سحر ، كل شيء قياسي).
    - شجرة متحركة.
  • القوام (منتشر ، خريطة عادية ، RMM).
  • المواد المثالية (بدن ، مسارات + حالة محطمة).
  • مجموعة من شبكات الدروع لنظام الاختراق.
  • الكاميرات وأجهزة فحص منسوب المياه وغيرها من التصادمات المساعدة.

الرسوم المتحركة للدبابات


إنشاء خزان واحد هو تافه ، بغض النظر عن مدى تعقيد شجرة الرسوم المتحركة. إن تكوين العشرات من هذه الدبابات وإبقائها محدثة عند تغيير العظام والشبكات وما إلى ذلك هو مبلغ غير مناسب تمامًا للعمل اليدوي . لحسن الحظ ، في حالتنا نحن نتحدث عن "شخصية" موحدة إلى حد ما: يمكن تشريح الخزان إلى كيانات ويطلق عليها قوالب نمطية. هذا بالطبع يتعلق بتسمية العظام.


سمح لنا هذا النهج باستخدام شجرة الرسوم المتحركة نفسها بشكل أساسي ، والتي تتكاثر القديسين Ctrl + C / Ctrl + V بأي عدد من الدبابات ولا تتطلب أي دعم باستثناء فحص QA الأولي.



كل السحر يحدث داخل العقد الرملية المخصصة. لم يسمح هذا بتوحيد الشجرة فحسب ، بل أدى أيضًا إلى تقليل عدد الحسابات لكل رسم متحرك (العقد القياسية مثل دفع أنظمة الإحداثيات ذهابًا وإيابًا).


مواد الخزان


بالنسبة لجميع أجزاء الخزان ، يتم استخدام مادة رئيسية واحدة ، يتم تخصيصها بواسطة زوج من عقد التبديل.



بعد ذلك نحصل على شجرة مثل هذه:


  - المركبات M_
  - - MI_Vehicles_Clean_Body
  - - - MI_Leopard2
  - - - - MI_Leopard2_LOD
  - - MI_Vehicles_Clean_Treads (تم تحديد "Treads")
  - - - MI_Leopard2_Treads
  - - - - MI_Leopard2_Treads_LOD 

"الوزن" الحقيقي هنا هو فقط M_Vehicles و MI_Vehicles_Clean_Treads ، وجميع الحالات الأخرى هي مجرد مجموعات معلمات وتستهلك الحد الأدنى من الذاكرة ومساحة القرص.



بشكل عام ، مجموعة الأصول الرسومية للدبابات قياسية جدًا لأي لعبة.


عمل الدروع


عند السؤال عدة مرات عند التواصل مع الزملاء ، أثير السؤال ، لماذا كان لكل قطعة من الدروع شبكة منفصلة ، ولماذا لا نستخدم نظام الاصطدامات Anrilov؟



في الواقع ، نستخدم اصطدامات أنريلوف المعتادة ، ولكن فقط "لالتقاط" الرصاصة . بعد دفع المقذوف نفسه في الخزان ، يتم حساب الضرر بشكل متعدد الأضلاع عبر جميع صفائح الدروع ، مع مراعاة خصائص كل قطعة ، متعدد الطبقات ، وإعادة انعكاس المقذوف ، وقمع تراكمي وغيرها من الميكانيكا المثيرة للاهتمام.


الأكثر ملاءمة لهذه الحالة هو قراءة بيانات الشبكة "العارية" ، التي لا نقوم بتجريدها من أجل خادم مخصص.


الشبكة والتحسين الإضافي


بضع نقاط "قرب الدبابة" أود أن أذكرها بإيجاز.


  • يتم تنفيذ جميع حركة الخزانات فقط على الخادم ، ويقوم العملاء فقط باستيفاء القيم المستلمة. يتم استخدام أي استقراء. تردد المزامنة 10 مرات في الثانية .


  • اعتمادًا على ScreenSize للدبابات ، نتخطى عددًا أو آخرًا من علامات التجزئة لشبكة الهيكل العظمي ، والتي تتضمن حساب جميع الرسوم المتحركة وبعض التفاعلات المادية. إذا كان الخزان غير مرئي على الشاشة ، فهو صندوق غبي غير متحرك يطفو في الفضاء . إن تحسين معدل التحديث المدمج ، على الرغم من الفكرة الجيدة ، لديه تطبيق أولي للغاية لا يعطي دفعة ملموسة للأداء. خاصة عندما يتعلق الأمر بالهواتف المحمولة.


  • بالنسبة لجميع الدبابات ، باستثناء دبابيسها ، يتم قطع جميع المكونات باستثناء أبسطها على العميل: الكاميرات ، والداما ، والأشياء الأخرى التي تشكل الخزان. في الواقع ، ليس لديهم سوى المظهر .




  • محرك خزان LOD1 مخصص على خادم مخصص. قمم أقل - استخدام أقل لوحدة المعالجة المركزية. علاوة على ذلك ، يحدث تحديث موضع قطع الدروع المخصصة فقط في اللحظة التي تضرب فيها المقذوفات: لا معنى لتحديث حالة الأجزاء في كل علامة.

أنا ونفسي وخزانات


في Pushkin Studio ، نعتقد أن تبادل الخبرات التنموية مهم للغاية ، بما في ذلك لنمو المستوى المهني داخل الفريق. تعد المشاريع مفتوحة المصدر مكونًا مهمًا في هذا النهج ، ويسعدني أن أتمكن من تقديم للمجتمع مثل التكنولوجيا مثل PsRealVehicle .


في رأيي ، من المهم جدًا أن نستخدم أنفسنا جميع المكونات الإضافية والأدوات المساعدة التي ننشرها يوميًا. بعد كل شيء ، المسار الواضح من Epic Games نفسها هو أن نجاح التكنولوجيا الجيدة هو استخدامها من قبل المطورين أنفسهم في منتجاتهم الخاصة. الآن نحن نعمل بالفعل على الإصدار UE 4.20 ، لقد ذهب المكون الإضافي لدينا بهذه الطريقة معنا ، ولن نتوقف!


Source: https://habr.com/ru/post/ar423653/


All Articles