سؤال

لقد قارنت مؤخرا بعض محرك الفيزياء هناك للمحاكاة وتطوير اللعبة. بعضها حر، بعضها مفتوحة، بعضها تجاري (1 حتى الآن تجاري جدا $$$$). Havok، ODE، Newton (AKA Oxnewton)، Bullet، Physx و "الفيزياء" الخام "في بعض المحركات ثلاثية الأبعاد.

في مرحلة ما جئت إلى الاستنتاج أو السؤال: لماذا يجب أن أستخدم أي شيء سوى Nvidia Physx إذا استطعت استخدام أدائها المذهل (إذا كنت في حاجة إليها) بسبب معالجة GPU؟ مع بطاقات NVIDIA المستقبلية، يمكنني أن أتوقع المزيد من التحسينات مستقلة عن خطوات جيل وحدة المعالجة المركزية العادية. SDK مجاني ومتوفر Linux أيضا. بالطبع هو القليل من قفل البائع وليست مفتوحا.

ما رأيك أو تجربتك؟ إذا كنت تبدأ الآن مع التنمية، فهل توافق على ما ورد أعلاه؟

في صحتك

هل كانت مفيدة؟

المحلول

إخلاء المسئولية: لقد لم أستخدم Physx أبدا، وتقتصر تجربتي المهنية على الرصاص ونيوتن وأود. من هؤلاء الثلاثة، قصيدة بعيدة ومفضلة إنه أكثر المستقر عدديا والآخرين لديهم مشكلات نضج (المفاصل المفيدة غير مطبقة، تتصرف المجموعات المشتركة / المحركات القانونية بطرق غير محددة، و C).

قمت بالذات الإشارة إلى قضية قفل البائع في سؤالك، لكن الأمر يستحق التكرار: إذا كنت تستخدم Phystx كحل الفيزياء الوحيد الخاص بك، فلن يتمكن الأشخاص الذين يستخدمون بطاقات AMD من تشغيل لعبتك (نعم، وأنا أعلم أنه يمكن أن تكون في العمل, ، لكنه ليس رسميا أو يدعمه NVIDIA). طريقة واحدة حول هذا هو تحديد محرك تجاوز الفشل، باستخدام ODDE أو شيء ما على الأنظمة مع بطاقات AMD. هذا يعمل، لكنه يضاعف عبء العمل الخاص بك. إنه مغر الاعتقاد بأن ستكون قادرا على إخفاء الاختلافات بين المحرمين وراء الواجهة المشتركة وكتابة الجزء الأكبر من رمز الفيزياء اللعبة مرة واحدة ولكن معظم الصعوبات الخاصة بك مع الفيزياء اللعبة ستكون في التعامل مع خصوصياتك الخاصة محرك الفيزياء، والتحديد على قيم الأشياء مثل الاحتكاك والاسترداد الملامسة. هذه القيم لا تملك معاني متسقة عبر محركات الفيزياء ويمكن أن تستمد (في الغالب) رسميا، لذلك أنت عالق من العثور على قيم جيدة مظهرا ويمكن تشغيلها عن طريق التجربة. مع PhysX بالإضافة إلى فشل أنت تفعل كل هذا العمل Scut مرتين.

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

حتى الآن من رؤية Physx كخيار واضح لتطوير الألعاب الراقية، أود أن أقول أنه يجب تجنبه إلا إذا كنت لا تعتقد أن الأشخاص الذين يعانون من بطاقات AMD يشكلون جزءا كبيرا من قاعدة اللاعب الخاصة بك (من غير المرجح للغاية) أو أنت لديك ما يكفي من الترميز والقوى العاملة ضمان الجودة لاختبار اثنين من محركات الفيزياء (أكثر من المعقول، على الرغم من أن شركتك هي أن الأثرياء سمعت أشياء جيدة عن havok). أو أعتقد، إذا كنت قد صممت لعبة فيزياء مع مطالب الأداء مكثفة للغاية بحيث يمكن أن تتلقى لك الفيزياء فقط - ولكن في هذه الحالة، سأصرفك ببدء فرقة واترك قانون مور يفعل شيئا لمدة عام او اثنين.

نصائح أخرى

إجابة تحديث أوائل 2013 أطور أيضا مع المكتبات الثلاثة الكبيرة الفيزيائية: PhysX، Havok، Bullet.

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

لذلك في حين أن توقعات ملك الفيزياء SIM يجري PhysX، Havok، والرصاصة في هذا الأمر، أرى العكس في الواقع. أصدرت Bullet Lib 2.8.1 مع أخذ عينات من دعم OpenCL. رصاصة صغيرة نسبيا مع ترخيص سخي. هدفهم هو الإفراج عن 3 مع تسريع الجسم الجامي الصلب بالكامل متكامل بالكامل.

جزء من التعليقات تحدث عن مسارات رمز متعددة. رأيي هو أن هذا ليس صفقة كبيرة جدا. أنا بالفعل دعم ثلاثة أجهزة تشغيل مع الحد الأدنى من دعم الكائنات الصعبة (خيوط في معظمها ولا تستخدم رمز نظام التشغيل الخاص بنظام التشغيل؛ استخدام قوالب C ++ و STD LIB). انها مماثلة لمكتبات الفيزياء. يمكنني استخدام مكتبة مشتركة وإزالتها واجهة شائعة. هذا جيد لأن الفيزياء لا تتغير كثيرا؛) ستحتاج إلى إعداد بيئة محاكاة وإدارة الكائنات وتقديم التكرارات في البيئة وتنظيفها عند الانتهاء. الباقي هو فلاش، تم تنفيذه في أوقات الفراغ.

مع ظهور OpenCL في المكتبات الرئيسية (NVIDIA CUDA هو قريب جدا - انظر Bullet OpenCL Demos) سوف يتقلص أعمال البرنامج المساعد فيزياء الفيزياء.

لذلك، بدءا من الصفر والقلق فقط مع نمذجة الفيزياء؟ لا يمكنك أن تخطئ بالرصاص. رخصة صغيرة ومرنة (مجانية)، قريبة جدا من الإنتاج جاهز OpenCL والتي ستكون منصة عبر عبر ثلاثة أيام OS و GPU.

حظ سعيد !

قد تجد هذا مثير للاهتمام:

http://www.xbitlabs.com/news/video/display/20091001171332_amd_nvidia_physx_will_be_irrelevant.html.

إنه متحيز ... إنه في الأساس مقابلة مع AMD ... لكنها تجعل بعض النقاط التي أعتقد أنها تستحق النظر في قضيتك.

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

لذلك، إذا كنت ترغب حقا في تسريع الأجهزة الفيزياء في المحرك الآن، فانتقل إلى PhysX، ولكن كن على علم أنه عندما تصبح الحلول مثل تلك التي قامت بها AMD في هذه المقالة متاحة (هم تماما إرادة لكنهم ليسوا هنا بعد)، سوف تواجه خيارات غير سارة:

1) أعد كتابة المحرك الخاص بك لاستخدامه (إدراج اسم محركات الفيزياء المتسرعة للأجهزة عبر المنصة الجديدة)، يحتمل أن يغير ديناميات لعبتك بطريقة سيئة

2) مواصلة استخدام Physx فقط، إهمال مستخدمي AMD بالكامل

3) حاول الحصول على Physx للعمل على AMD GPUS (Bleck ...)

بصرف النظر عن فكرة ديفيد عن استخدام محرك فيزياء وحدة المعالجة المركزية كعطاس (القيام ضعف العمل وإنتاج المحركات 2 التي لا تتصرف بشكل متطابقة) خيارك الآخر الوحيد هو استخدام فيزياء وحدة المعالجة المركزية النقية.

ومع ذلك، نظرا لأن الأشياء مثل OpenCL تصبح سائدة، فقد نرى ODE / Bullet / KIN بدأت في دمج ذلك ... Iow إذا كنت قد رمز الآن مع ODD / Bullet / Kin، فربما تكون في نهاية المطاف) الحصول على تسارع GPU "مجانا" في وقت لاحق (لا توجد تغييرات على التعليمات البرمجية الخاصة بك). لن تتصرف قليلا بشكل مختلف مع إصدار GPU (مشكلة لا مفر منها بسبب تأثير الفراشة والاختلافات في التنفيذ العائم)، ولكن على الأقل سيكون لديك مجتمع ODE / Bullet / Kin يعمل معك لتقليل هذه الفجوة وبعد

هذه توصيتي: استخدم مكتبة الفيزياء مفتوحة المصدر التي تستخدمها حاليا وحدة المعالجة المركزية فقط، وانتظرها للاستفادة من GPUs عبر OpenCL و CUDA و ATI's Languction، وما إلى ذلك. سيكون الأداء صراخ سريعا عند حدوث ذلك، وسوف يحدث ذلك انقاذ نفسك الصداع.

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

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

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

لقد استخدمت قصيدة والآن باستخدام physx.. physx. يجعل إنشاء مشاهد أسهل و (رأيي الشخصي) يبدو أكثر واقعية، ومع ذلك، لا توجد وثائق كافية ل physx.; ؛ في الواقع بالكاد أي وثائق على الإطلاق. من ناحية أخرى، قصيدة هو مصدر مفتوح وهناك الكثير من المستندات والبرامج التعليمية وما إلى ذلك. ملاحظة: استخدام GPU تسارع يساعدني وزملائي بشكل كبير؛ نحن نستخدم ذروة تدمير و physx. حبيبات.

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

إذا كان كل التعليمات البرمجية غير قابلة للضغط بشكل كبير، فانتقل إليه!

بالنسبة لكل شيء آخر، فإن GPUs غير كافية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top