موضوع: أسرار و خدع برمجية 4

ردود: 11 | زيارات: 861
  1. #1
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066

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

    بسم الله الرحمن الرحيم
    مقدمة :

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

    اكتشاف التصادم :

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

    الطريقة الأولي (المسافة) :

    الطريقة الأولي هي ان نقيس المسافة بين المجسمين و اذا كانت المسافة اقل من عدد معين فنعتبر ان المجسمان متصطدمان , فمثلا هذه الصورة :




    فالان نعتبر ان المسافة بين المجسمين 80 فليس هناك تصادم و لكن الصورة هنا :





    المسافة اصبحت 50 فأصبح هناك تصادم و لكن لو تلاحظ ان هذا النوع من التصادم غير دقيق فشكل المجسم حجموا غير متوازي فمثلا لو حاولنا ان نفيس التصادم بهذه المنقطة من الجنب فستحصل مشكلة هكذا :






    حسنا المسافة هنا 50 و طبقا لحسابتنا فهذا الدبابتان بينهم تصادم مع انهم بعيدين عن بعض تماما !! , حسنا نستنتج من هذا ان هذه الطريقة للتحقق من التصادم ليست دقيقة و لكن من الممكن استعمالها في العاب بسيطة و لكنها ايضا كما تري غير مكلفة للجهاز تمام .

    الطريقة الثانية (Bounding box,sphere)

    تقوم هذه الطريقة علي عمل مربع او دائرة تعبر عن المجسم و يكون لهذا المربع او الدائرة خصائص و هي : المكان و الحجم , بمعني ان لكل دبابة من الدبابات التي في الصور يكون هناك دائرة وهمية غير موجودة غير في حساباتنا تكون مثل هذه :




    حسنا لو تلاحظ هذه الكور نحسب من خلالها التصادم بطريقة معينة و اذا كنت مهتم بالطريقة الحسابية مع ان معظم المحركات توفرها من دون علمك و لكن ها هي :

    relPosition = sphere1 position – sphere2 position
    dist = relPosition * relPosition
    minDist = sphere1 radius + sphere2 radius
    if (dist <= minDist * minDist)
    {
    collision
    }
    Else
    {
    No collision
    }
    فبهذه العملية يعرف الجهاز اذا كان هناك اصطدام ام لأ و لكن ايضا هناك مشكلة فهذه العملية غير دقيقة فالمجسم ليست علي شكل دائرة فمن الجانب ستحصل مشكلة ايضا :




    التكملة في الرد القادم
    .
    Egypt


    I Love Direct-X

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


  2. #2
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    مع انهم ايضا يبعدوا عن بعض و لكنه سيحسب ان هناك تصادم و هذا لأن الشكل ليس متوازي من جميع اجزاءه , حسنا هذا النوع من التصادم أدق من النوع الذي مدي و لكنه ما زال ليس بالدقة المطلوبة , حسنا ماذا لو استعملنا في هذا النوع بدل الدائرة الصندوق , ففي بعض الأحيان نستعمل الصندوق لأنه يكون أدق كما سنري , و لكنه أدق في بعض الحالات فقط , و لكن للصندوق خصائص أخري فتقول للمحرك بداية الصندوق من الأتجاه الx و حجموا في هذا الاتجاه و ايضا بداية الصندوق من الاتجاه z و حجموا من هذا الاتجاه و هكذا ايضا بالنسبة للy ,فستكون هذه الحال من الأمام :



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



    حسنا في هذه الحالة سيحسب انه هناك تصادم و لكن كما تري ليس هناك تصادم و ايضا فأنت ستقوم بعمل صندوق او دائرة لكل مجسم لديك و هذا عمل متعب و في الاخر الدقة ليس كما نريد و ايضا تخيل لو المجسم يقوم بالدوران فستكون الدقة اسوأ اكثر كهذه الصورة :



    حسنا بهذه الطريقة تعتقد ان هذه الطريقة فاشلة , هي ليست كذلك بل هي تنفع في بعض الحالات و ما زالت تستعمل لأنها خفيفة علي الجهاز , و في بعض الأحيان لا تحتاج الي تكنيكات افضل , و لكن هل تقول لنا ان هذا كل ما نستطيع فعله , الأمر ليس كذلك و لكننا سنشرح التكنيكات الأفضل في الدرس القادم ان شاء الله ^_^ .
    Egypt


    I Love Direct-X

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

  3. #3
    طب انا اقولك ايه مش كفاية عليك اقولك انك راجل محترم وابن حلال ربنا يخليك لينا يا جينيرال وكل سنة وانت طيب
    حلمى ان اكون مصمم العاب و3دى ناجح

    ادعووووووووووووولى

    عضو في نادي محبي البطاطا

  4. #4
    مشرف منبر 3D Games Design
    صور رمزية oms
    تاريخ التسجيل
    Oct 2004
    المنطقة
    Turkey
    ردود
    6,683
    جميل ...
    يعطيك العافية يا جينيرال . هذا جزء مهم في صناعة الألعاب .

  5. #5
    عضو متميز
    صور رمزية kakarot
    تاريخ التسجيل
    Dec 2007
    المنطقة
    الأردن
    ردود
    1,174
    بارك الله فيك

    بإنتظار الجزء القادم

    لنعرف أفضل الطرق

  6. #6
    عضو متميز
    صور رمزية The MAS
    تاريخ التسجيل
    Apr 2009
    المنطقة
    Amman, Jordan, Jordan
    العمر
    24
    ردود
    2,132
    فعلاً بالإنتظار

    <<Nobody>> سابقاً

  7. #7
    عضو
    صور رمزية A.H.M
    تاريخ التسجيل
    Jun 2008
    المنطقة
    الاردن-ابو نصير
    العمر
    24
    ردود
    104
    تسلم اخي جينيرال الدرس من شكلو رائع
    ونحن في الانتظار المزيد
    ................................
    إذا أردت أن تعصي الله
    فاختبئ في مكان لا يراك الله فيه ..


    إذا أردت أن تعصي الله ..
    فلا تعصه فوق أرضه ..


    إذا أردت أن تعصي الله ..
    فلا تأكل من رزقه ..


  8. #8
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    اقتباس الموضوع الأصلي كتب بواسطة nacasho معاينة الرد
    طب انا اقولك ايه مش كفاية عليك اقولك انك راجل محترم وابن حلال ربنا يخليك لينا يا جينيرال وكل سنة وانت طيب
    و الله هذا من ذوقك بس و كل سنة و انت طيب

    جميل ...
    يعطيك العافية يا جينيرال . هذا جزء مهم في صناعة الألعاب .
    شاكر مرورك أسامة

    بارك الله فيك

    بإنتظار الجزء القادم

    لنعرف أفضل الطرق
    فعلاً بالإنتظار
    تسلم اخي جينيرال الدرس من شكلو رائع
    ونحن في الانتظار المزيد

    انتظروا الدرس القادم ان شاء الله يعجبكم و شاكر مروركم ^_^

    و اتمني ان الدرس افادكم ...
    Egypt


    I Love Direct-X

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

  9. #9
    ما شاء الله عليك مبدع دائما بمقالاتك - المقالة جميلة جدا وفعلا تبرز مهارات كشف التصادم بانواعة بارك الله فيك وننتظر المزيد

  10. #10
    جزاك الله خيراً استاذ جنرال مواضيع روعة .
    لكن عندي ملاحظة هنا :
    اقتباس الموضوع الأصلي كتب بواسطة general1 معاينة الرد
    و ايضا تخيل لو المجسم يقوم بالدوران فستكون الدقة اسوأ اكثر كهذه الصورة :
    في البلندر عند استخدام هذه الطريقة يقوم المكعب بالدوران مع المجسم .
    سنشرح التكنيكات الأفضل في الدرس القادم ان شاء الله ^_^ .
    في انتظار الدرس
    بالتوفيق
    .
    C. 4d سابقاً

  11. #11
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    اقتباس الموضوع الأصلي كتب بواسطة ahmedbna معاينة الرد
    ما شاء الله عليك مبدع دائما بمقالاتك - المقالة جميلة جدا وفعلا تبرز مهارات كشف التصادم بانواعة بارك الله فيك وننتظر المزيد
    و الله ده من ذوقك بس , شاكر لك مرورك ^_^

    في البلندر عند استخدام هذه الطريقة يقوم المكعب بالدوران مع المجسم .
    واضح ان ليس جميع المحركات تفعل هذا , فيعض المحركات تدعم تدوير الbounding box و بعضها لا يدعمها مثل الXNA و شكرا علي ملاحظتك
    Egypt


    I Love Direct-X

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

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل