مواد الرياضيات و الفيزياء في برمجة الالعاب, سؤال و جواب
:: منتديات التصميم و البرمجة :: منتدى برمجة الألعاب والجرافيكس والتصميم :: قسم : برمجة الألعاب والجرافكس العام
صفحة 1 من اصل 1
مواد الرياضيات و الفيزياء في برمجة الالعاب, سؤال و جواب
سؤال
ما هي مواد الرياضيات و الفيزياء التي احتاجها في برمجة الالعاب
وهل هناك مواد اخرى يتوجب علي دراستها بالاضاف لما ذكر اعلاه؟
جواب
على حسب ظنى فان القدر الذى تحتاجه من الرياضيات ليس
كبيرا. و ان اغلب الكتب للمبتدئين تبدا بشرح لل Vectors و Matrices و
Transformations و Planes و الاهم من ذلك ان كل العمليات التى ينطلبها
Direct3D هى موجودة فى المكتبة الملحقة معه D3DX و هى مريحة للغاية.
يعنى اذا كانت لك اى دراية بالمصفوفات من قبل يمكن ان تكمل الجذء المطلوب من
الراضيات فى اقل من ساعتين. (انا اقيس على نفسى "يمكن ان تكمله انت
فى نصف ساعة").
بقى الجذء الاهم و الاصعب و الذى يبدو مستحيلا (الفيزياء)
الفيزياء فى Direct3D يمكن ان تقسمها الى اثنين:
- الفيزياء التى يستخدمها Direct3D مثل الاضاءة
- الفيزياء التى تحتاجها فى اللعبة مثل محاكاة السيارة وهى تنقلب
بالنسبة للفيزياء التى يستخدمها Direct3D لن تتدخل فيها الا بعد ان تصبح محترف.
اما الفيزياء التى تكون اللعبة نفسها, يمكنك ان تقيم الوضع فى هذه الحالة.
يعنى
اذا كان الشئ المطلوب محاكاته بالفيزياء معقد نسبيا مثل محاكاة حركة
الجنزير او احتمالية وجود عدد من الصدمات لاجسام غير منتظمة الشكل و
متغيرة الكتل, فى هذه الحالة لابد ان تلجأ الى احدى المكتبات التى تقدم
ذلك. و اذا كانت العملية بسيطة قمت بها انت.
راي الادارة
نعم فيزياء ال Direct3D كالإضاءة والضباب
والضباب يمكن أن تعتبر رياضية أيضا حيث يوجد خط واهي بين الرياضيات
والفيزياء وأصلهما الرياضيات .
المهم توجد خوارزميات إضاءة أعقد من
خوارزميات إضاءة ال Direct3D المدمجة معه تسمى بال RayTracing متتبعات
الأشعة ,, وهي تحاكي الإضاءة الحقيقية في الواقع بعد إصطدامها بعدة سطوح
وإنعكاسها منها أكثر من مرة ,, وليس الحال كذلك في إضاءة Direct3D العادية
حيق هي لاتنعكس إلا من سطح واحد فقط .
ويوجد نوع إضاء جديد في Direct3D
9 c ضم حديثا في النسخة الأخيرة c تسمى بال HDR ,, روعة الإضاءة ,, وهي
الإضاءة الحجمية بحيث يظهر الضوء في الجو كضوء الشمس ,, وخوارزمية الإضاءة
العادية في Direct3D لاتعطي هذا التأثير .
وكما وضح أخي justnow
ستحتاج لفيزياء من نوع الحركة الكتلية والمقذوفات ,, يعني مثلا لو أردت أن
تقذف بقذيفة مدفع بشكل حقيقي من نقطة x وبكتلة قذيفة Z في الكرة الأرضية
طبعا ,, وبسرعة إبتدائية تحددها أنت ,, تستطيع أن تعرف أين ستسقط القذيفة
في النهاية بعد تحديد الإتجاه .
وهي من قوانين الحركة الرئيسية .
والفيزياء
المعقدة المتعلقة بالتصادم الكتلي مثلا كما في لعبة بيلياردو ,, لإنتقال
الطاقة الحركية من جسم لآخر أو كرة لأخرى بعد إصطدامها ببعض ,, يمكن أن
تنفذها أنت بنفسك لكن بعد تركيز كبير ومجهود ,, وربما تجدها جاهزة في مكان
آخر .
إضافة بسيطة
إضافة بسيطة وهي ماذا تحتاج من مواد .
لنفرض أن اللعبة تحتوي على
تصادمات بين الأجسام مثل البلياردو. ونفترض أن التصادم مرن أي أن الطاقة
الحركية تبقى محفوظة ولا يتم تحول أي جزء منها إلى شكل آخر .
والتصادم عدة أنواع ما يهمنا هو :
- تصادم ذو بعد واحد وفي هذه الحالة يصطدم الجسمان مباشرة بحيث يتحرك الجسمان قبل وبعد التصادم على نفس
الخط . سنتحاج الى المتغيرات التالية :
كتلة
الجسم الاول ، كتلة الجسم الثاني ، الزمن بعد التصادم ، سرعة الجسم الأول
، سرعة الجسم الثاني . وبتطبيق قانون حفظ الطاقة الحركية أو كمية الحركة
تستطيع حساب سرعة كل من الجسمين بعد التصادم مباشرة وتحديد اتجاه حركة
الجسمين ( أي أن الجسم هل ارتد الى الخلف أم توقف أم تحرك بنفس اتجاهه ) .
فإذا افترضنا أن الجسم ارتد الى الخلف فإنك تحتاج الى حساب الإزاحة التي
ارتدها :
نحسب الإزاحة كالتالي :
نحسب أولا تسارع الجسم -وهنا
تحتاج الى الزمن بعد التصادم- بإستخدام المعادلة الأولى للحركة ثم نحسب
الإزاحة التي تحركها الجسم من المعادلة الثانية .
وهذه الطريقة تستخدمها لحساب الإزاحة التي يقطعها الجسم أيا كان اتجاه حركته .
-
تصادم ذو بعدين وهنا ستعمل على تطبيق قانون حفظ الطاقة على بعدين سيني
وصادي وينتج معادلتين ثم تقوم بحساب الإزاحات ثم تطبق قانون حساب المحصلة
حسابيا لمتجهين - لتعرف موقع كل كرة .
العملية أكثر تعقيدا لأنك تحتاج الى وضع الزاوية التي تتحرك بها كل كرة بعد التصادم .
أما في لعبة السيارت فالأمر أكثر تعقيد لأنك هناك قوة إضافية ستزيد بعد التصادم وهي مقاومة السائق للارتداد .
إذا نحتاج الى دراسة قسم الميكانيكا كاملا ابتداء من المتجهات الى أن تصل التصادم المرن ، ويحتاج مالا يقل عن ثلاثة أشهر .
بالنسبة للعمليات الفيزيائية البسيطة يمكن ان نقول انها قابلة للمحاكاة
باستعمال خوارزميات معقدة.
اذا قمت بتصميم لعبة يقود فيها اللاعب سيارة و يقودها فى الشارع العام يمكن ان
تستخدم صندوقا يحوى السياره حتى تسهل لنفسك عملية ضبط الصدمات و لن تستطيع
معالجة اكثر من اصطدام فى نفس الوقت. كى اوضح اكثر.
ماذا اذا كنت فى الموقف التالى
انت الان مبرمج خول لك ان تصدر الاصدار الجديد من لعبة Vice City (للذين لم يشاهدوا
اللعبة لا استطيع ان اقول شيا) و عليك ان تحاكى تلك العمليات التى تحدث فى الاصدار
الاقدم و بصورة احسن (هذا هو الاصدار الاحدث) و تخيل ان الذاكرة التى تتعمل معها لن
تنفذ (كل هذا للتسهيل و التبسيط).
الان و بهذه المعطيات قل لى كيف سوف يحاكى انقلاب السيارة (يمكن ان يكون هذا بسيط)
و لكن الشئ الذى اظنه اصعب هو الحركة لممتصات الصدمة التى تتبع ذلك
او الحركة التى يمكن ان تحدث لممتصات الصدمة عندما تنحرف السيارة و انت تضغط
على مفتاح المكابح . كل هذا يمكنك ان تتحايل عليه ببعض العبارات بسهولة
و باطنان من الكود فى اشهر ان لم تكن سنين (طول الزمن لا هناك كميات من الاحداث
يمكن ان يؤدى التزامن فيها الى عواقب لا تسمح بالجمع الجبر للانفعالات "بالطبع انفعالات
السيارة" ).
بدون استعمال مكتبة مساعدة اظن انك سوف تتنازل عن اطنان الدولارات التى يمكن ان تكون
المقابل لتطوير اللعبة. اذن الحل يكمن فى الفصل بين الكود الذى يحاكى العملية الفيزيائية
و الكود المسؤال عن عملية الرسم.
فى الامثلة التى هى فى الموقع
http://www.codesampler.com
يكمن الحل
مواضيع مماثلة
» نظام الحركة Animation system, سؤال و جواب
» اصنع الالعاب بنفسك حمل بسرعة......
» تعلم البرمجة بأسهل لغة برمجة
» برمجة الألعاب والجرافكس باستخدام مكتبة OpenGL .
» اجمد الالعاب للاطفال
» اصنع الالعاب بنفسك حمل بسرعة......
» تعلم البرمجة بأسهل لغة برمجة
» برمجة الألعاب والجرافكس باستخدام مكتبة OpenGL .
» اجمد الالعاب للاطفال
:: منتديات التصميم و البرمجة :: منتدى برمجة الألعاب والجرافيكس والتصميم :: قسم : برمجة الألعاب والجرافكس العام
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى