Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

أسرار و خدع برمجية 5

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • أسرار و خدع برمجية 5

    بسم الله الرحمن الرحيم


    مقدمة :
    هذا هو الموضوع الخامس من سلسلة مواضيع (أسرار و خدع في برمجة الألعاب) , تكلمنا من قبل عن التصادم و لكننا لم نشرح التكنيكات القوية في التصادم, و ايضا بعض التكنيكات التي تخفف الجهد علي اللعبة ,و تذكر ان هذا الموضوع لا يشرح علي لغة او برنامج معين و انما نشرح التكنيك ليستعمل علي اى لغة او برنامج.

    اكتشاف التصادم :
    نريد الان ان نشرح طريقة قوية لاكتشاف التصادم . أفضل من الطرق السابقة, لقد قلنا اننا نقدر ان نستخدم الBonding sphere او نحسب التصادم بواسطة المسافة و لكن كل هذه الطرق لم تكن بالدقة التي نريدها , لذلك نريد الطريقة الأخيرة التي لدينا و هي اكتشاف التصادم علي كل Polygon .

    التصادم علي كل Polygon :
    كما نعرف ان المجسم مكون من عدة polygon و هي المربعاتالمكونة للجسم بالتالي تأخذ شكل المجسم بالظبط !! , لذلك اذا حسبنا التصادم علي كل Polygon بمعني مثلا لو كان هناك مجسمان كل مجسم مكون من 100 polygon فنتحقق من كل polygon في المجسم الاول اذا كانت تصادمت في اى polygon في المجسم الثاني و لكن هناك مشكلة , و هي اننا سنتحقق من التصادم 100 الف مرة !! , و هذا لمجسمان فقط , و لعبتنا ستكون فيها مثلا 100 مجسم في المرحلة الواحدة ,سيكون هذا مجهد للجهاز جدا !! , فهل هذه الطريقة مستحيل استعمالها !! , الفكرة ليست كذلك فأنت لن تحسب التصادم بين كل المجسمات الموجودة , فيجب عليك ان تتحقق من المسافة بينك و بين كل مجسم و اذا كانت المسافة اقل من 50 مثلا فتحقق من التصادم , فلماذا اجهد الجهاز بحسابات كبيرة و اساسا المسافة كبيرة و مستحيل التصادم بينهم , شىء اخر و هو ان المجسمات الثابتة و ذو الشكل غير المتعرج مثل المباني من الأفضل ان تستعمل لها التقنيات السابقة مثل bounding box حتي لا تجهد الجهاز بحسابات لن تحتاجها ^_^ , و اخر تقنية أعرفها و يمكنك استعمالها هنا هي ان تقوم بأعداد مجسمين واحد هاي بولي (يملك polygons كثير) و هذا الذي سيظهر لللاعب , و من نفس المجسم نسخة لاو بولي (تملك polygons قليلة) لكي تحسب عليها التصادم , فمثلا لو لديك مجسم لشخصية فيها 5000 polygons اظهرها للمجسم و قم بعمل نسخة اخري مكونة من 500 polygon مثلا لكي تحسب عليها التصادم و بهذا تخفف الكثيييييييييييير علي الجهاز .

    تقنية الLod :

    هذه التقنية قوية جدا , كل اللعب تعاني من كثرة المجسمات الموجودة في اللعبة و بالتالي تحتاج اللعبة الي جهاز قوي لكي تعمل , و لكن هذه المشكلة تم حلها جزئيا بواسطة البرمجة !!, فبواسطة هذه التقنية ستقوم بجعل الجهاز بخوارزمية معينة بتقليل عدد الفيرتكس في المجسم كلما ابتعد اللاعب عن المجسم , بمعني انه ما فائدة ان يكون المجسم يأخذ حسابات 10 الاف فيرتكس و هو اساسا لا يظهر الا بكسل واحد منه علي الشاشة !! , هذا شىء مكلف علي الجهاز و نحن لا نريده , لذلك لدينا طريقتان اما ان نصمم اكثر من نسخة من المجسم و نقوم برسم كل نسخة علي حسب اقتراب اللاعب من المجسم , و لكن هذه الطريقة ليست جيدة كما نريد فسيظهر هذا لللاعب و لكنها تنفع في بعض الاحيان , و الطريقة الأخري ان نقوم بوضع خوارزمية برمجية تقوم بتقليل الفيرتكس بطريقة لا تقوم بتدمير المجسم او عمل تشويهات فيه و بهذا ينقص الVertex بطريقة لينة لا يحس بها اللاعب .

    تقنية الـThreading :
    هذه التقنية قوية جدا , و ايضا مهملة في الوطن العربي رغم سهولتها , نحن نعرف ان اللعبة تعمل علي جزء من الذاكرة , بالتالي لو هناك حسابات كبيرة في هذا الجزء سيتوقف اللعبة الي ان تتم الحسابات او بمعني اخر لو قلنا ان هناك 5 عمليات ستتم في اللعبة و هي كالتالي :
    1
    2
    3
    4
    5
    سيتم تنفيذ العملية الأولي ثم الثانية و هكذا , و لكن لو اخذت العملية الثانية وقت كبير بالتالي سيتوقف تنفيذ باقي العمليات الي ان تتم هذه العملية بالتالي ستحصل مشكلة كبيرة و هي ان تتوقف كل اللعبة لأجل هذه العملية , فلماذا لا نقوم بجعل العملية التي تأخذ وقت كبير تتنفذ من دون التأثير علي باقي اللعبة , بمعني ان نضع هذه العملية علي Thread وحدها يعني منطقة من الذاكرة وحدها بحيث يتم تنفيذ مع العمليات التي بعدها من دون ان تؤثر عليهم , و لكن عليك هنا ان تنتبه ففي بعض الأحيان لا يمكنك ان تستعمل الThreading فهذا قد ينتج عليه اخطاء في اللعبة كعدم ظهور المجسمات , فيجب عندما تستعمل الThreading تستعمله في عمليات ثانوية لا تؤثر علي اللاعب تأثير مباشر ^_^ .

    انا لم اري مثل هذه التقنيات و انا اصنع الالعاب من سنين ؟ !

    قد يكون هذا هو السؤال الذي تطرحه علي نفسك الان و لكن الفكرة ان من الممكن انك تستعمل محركات جاهزة , و في هذه الحالة فهذه المحركات اما توفر عليك كل هذه التقنيات او لا تستعملها اساسا لهذا نري المحركات القوية و الضعيفة !! , و لكن معظم لغات البرمجة مثل C++,C#,Java بها تقنيات مثل الThreading و يمكنك ايضا ان تقوم بعمل تقنية الLod و ان تتحكم بالتصادم بنفسك .

    الان لديك تقنيات قوية يمكنك البحث عن الكتب و دراستها و يمكن ان تجد مصادر مجانية فيها شرح كل هذا ! , الان لديك مفاتيح البحث التي من الممكن ان تكون بها افضل في برمجة الألعاب , و اتمني لي و لكم التوفيق و انتظروا الدرس القادم ان شاء الله .
    Egypt


    I Love Direct-X

    سبحان الله و بحمده سبحان الله العظيم
    اللهم صلي وسلم و بارك علي سيدنا محمد

  • #2
    جزاك الله خيراً استاذ جنرال .
    موضوع رائع و انت اروع .
    تسلم ايدك , و فقك الله .
    .
    C. 4d سابقاً

    تعليق


    • #3
      لي الشرف اني ارد على مواضيعك اخوي جنرال
      الموضوع جميل ويحتوي على الكثير من الافكار عموما لي عودة لاقرء السلسلة كاملة ان شاء الله

      تعليق


      • #4
        ما شاء عليك يا جنرال - دائما مبدع بمقالاتك المفيدة

        مع تحياتى
        عميد المبرمجين العرب سابقا

        تعليق


        • #5
          موضوع جميل جداً أخي ......و سلسلة أروع
          و أحب أعلق على تقنية lod فهناك درس على الماكس يشرحه مشرفنا أسامة موجود على يوتيوب

          <<Nobody>> سابقاً

          تعليق


          • #6
            المشاركة الأصلية بواسطة C. 4d مشاهدة المشاركة
            جزاك الله خيراً استاذ جنرال .
            موضوع رائع و انت اروع .
            تسلم ايدك , و فقك الله .
            شكرا لك علي المرور و ان شاء الله تستفيد

            ما شاء عليك يا جنرال - دائما مبدع بمقالاتك المفيدة
            شوف ازاي ما لحقت اول رد بس لا تزعل برد عليك بلونك اهو ^_^
            انت الي معلمنا برضو

            لي الشرف اني ارد على مواضيعك اخوي جنرال
            الموضوع جميل ويحتوي على الكثير من الافكار عموما لي عودة لاقرء السلسلة كاملة ان شاء الله
            بانتظارررررك ان شاء الله بعد القراءة

            موضوع جميل جداً أخي ......و سلسلة أروع
            و أحب أعلق على تقنية lod فهناك درس على الماكس يشرحه مشرفنا أسامة موجود على يوتيوب
            طبعا أسامة له خبرة كبيرة بالحتة ديه ^_^ ينفع اللينك ؟

            Egypt


            I Love Direct-X

            سبحان الله و بحمده سبحان الله العظيم
            اللهم صلي وسلم و بارك علي سيدنا محمد

            تعليق


            • #7
              من بعد إذنك يا أسامة
              http://www.youtube.com/watch?v=oVa9H8FBw6g
              و أتمنى ما يزعل أسامة

              <<Nobody>> سابقاً

              تعليق

              يعمل...
              X