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

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

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

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


    مقدمة :

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

    التأثير الأول (النار) :

    كثيرا ما نقوم برؤية النار او انفجار في الألعاب , و ربما تفكر كيف يقومون بعمل هذه النار , حسنا لدينا هنا أكثر من تكنيك لعمل هذا , اولا باستعمل صورة ثنائة الأبعاد مثل هذه (يسمي هذا التكنيك Scrolling) :



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





    و بعدها هذه الصورة :



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

    • هذا التكنيك يتيح لك عمل عدد ما تريد من الانفجارات لأنه خفيف علي الجهاز و لا يستهلك أداء عالي من الجهاز.
    • هذا التكنيك يظهر و كأنه غير حقيقي و كان يستعمل قديما في البيئة الثلاثية الأبعاد اما الان فهو يعتبر غير قوي و يضعف من شكل اللعبة و لكنه مناسب جدا للبيئة الثنائة الأبعاد.
    • هذا التكنيك لا يحتاج خبرة عالية ابدا فهو سهل برمجيا.
    حسنا التكنيك الثاني و المستعمل في الألعاب الجديدة مثل CRYSIS و هذه بعض الصور له :



    حسنا هذا التكنيك يتم استعمال الـParticles, فالنقول بإيجاز ما هي البارتكلز , ترجمتها بالعربية هي الجزيئات و ببساطة هي عبار عن نقاط (جزيئات) نقوم بوضعها بجانب بعضها و نشكلها لتكون لتا شكل النار او الانفجار الذي نريده ثم نقوم بوضع بعض الشادرز عليها لتكون لنا هذا اللون ( لون النار) و ربما نستعمل بعض الصور لنأتي منها بلون الانفجار مثل هذه الصورة :



    طبعا بواسطة الشادرز نزيد من الوهج (Glowing) لكي تظهر و كأنها نار حقيقية بالظبط !,و نقوم بتشكيلها علي شكل نار بواسطة الشادرز, و ايضا طبعا لهذا التكنيك مساوىء و ايجابيات :

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

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


    I Love Direct-X

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


  2. #2
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    التأثير الثاني (المياة):

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

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

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

    و طبعا مع كل هذا و لكن لهذا التكنيك مساوىء و ايجابيات :

    • فهذا التكنيك واقعي جدا.
    • لكنه أيضا مجهد للجهاز لدرجة كبيرة لا تتوقعها فأنه يجهد الجهاز أكثر من الانفجارات لأنه سيظهر أمام الشاشة طوال الوقت تقريبا لهذا في بعض الألعاب تجد في الخيارات (Options) ان تقوم بتقليل درجة الGraphics في اللعبة و هذا يقوم بقفل بعض الشادرز المستخدم فمثلا تجد ان البحر ليس به انعكاس او انكسار الخ….
    و هذه صورة للتكنيك من لعبة CRYSIS الشهيرة :



    التأثير الثالث (SkyBox)

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

    هذا المجسم الذي سنضع عليه الصورة :





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



    حسنا , نلاحظ انها صورة غير عادية فهي عبار عن 6 صور في صورة واحدة و سيتم وضع كل صورة في جزء علي مجمسنا فالصورة التي في الأعلي سيتم وضعها في أعلي المجسم و الصورة التي في اليسار سيتم وضعها علي اليسار و الصورة الثانية من جهة اليسار سيتم وضعها في الأمام و الصورة الثالثة من جهة اليسار سيتم وضعها في اليمين و اخر صورة سيتم وضعها علي المجسم من الوراء و الصورة التي في الأسفل سيتم وضعها في الأسفل,و غالبا ما يكون امتداد هذه الصورة DDS , و لكن السؤال الان كيف سنقوم بوضع كل صورة من هذه الصور علي المجسم كما قلت !! , حسنا لن نقوم بفعل هذا و لكن الشادرز هي التي ستقوم بهذا فهناك دالة جاهزة في الشادرز تسمي texCube و تستعمل لهذا و بعد وضع الصورة علي المجسم يصبح هكذا :




    الان المشكلة الاخيرة ان المجسم لا يحيط بنا و كأنه ليس بيئة حسنا لحل هذه المشكلة سنقوم بجعل مكان هذا المجسم هو مكان الكاميرا (view_position) لتكون النتيجة النهائية هكذا :







    و طبعا كلما كانت الصورة أفضل كلما كان المظهر أفضل و لكن التكنيك سيبقي هو نفس التكنيك !! , و يمكنك عمل نفس هذه النتيجة بواسطة البرمجة من دون استخدام الشادرز و لكنك في هذه الحالة ستضطر لأنشاء المجسم كاملا ثم عمل حسابات كل صورة ستقوم علي اى قطعة من المجسم , و اري ان هذا التكنيك أفضل , طبعا شىء رائع و سهلو بهذا نكون قد عرفنا بعض التأثيرات المشهورة التي تستعمل في الألعاب و عرفنا كيق نقوم بعمل هذه التأثيرا ,و نأمل ان تعم الفائدة و انتظروا الدرس الجديد و لا تنسونا من دعاءكم .
    أخر تعديل بواسطة general1 في 15 / 08 / 2009 الساعة 05:17 PM
    Egypt


    I Love Direct-X

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

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

    كبير يا معلم على قولت الشوالي ^^

    لي قراءة ثم همرك بأسئلتي ^^

    ما تنسى الموشن بلور خاصية جميلة يا ريت تعلمنا كيفية صتعها بإحترافية

    وفقك الله

    وألف مبروك على الإشراف

  4. #4
    عضو متميز
    صور رمزية The MAS
    تاريخ التسجيل
    Apr 2009
    المنطقة
    Amman, Jordan, Jordan
    العمر
    24
    ردود
    2,132
    شكراً على الموضوع المهم و المفيد .......بس حاب أسأل من وين بجيب هاي المعلومات ؟؟

    <<Nobody>> سابقاً

  5. #5
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    اقتباس الموضوع الأصلي كتب بواسطة <<Nobody>> معاينة الرد
    شكراً على الموضوع المهم و المفيد .......بس حاب أسأل من وين بجيب هاي المعلومات ؟؟
    هذه المعلومات ليست غريبة او قوية كما تتوقع و لكن لأن في الوطن العربي لا يوجد هذه المعلومات لأن معظم الكتب بالانجليزية

    انا جبت هالمعلومات لأني عندي عدة كتب بالانجليزية : Shader for game programmers and artists
    Microsoft xna unleashed
    Microsoft xna 2.0
    و كتب أخري... و ايضا انا عضو في المنتدي http://creators.xna.com/ و هو منتدي أجنبي خاص بالXNA و فيه برضو قسم للدايركت اكس و به امثلة تعليمية قوية جدا ,و طبعا لله الحمد علي علمي و ان كان قليل

    و بالتوفيق للجميع
    أخر تعديل بواسطة general1 في 15 / 08 / 2009 الساعة 03:41 PM
    Egypt


    I Love Direct-X

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

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

    كبير يا معلم على قولت الشوالي ^^

    لي قراءة ثم همرك بأسئلتي ^^

    ما تنسى الموشن بلور خاصية جميلة يا ريت تعلمنا كيفية صتعها بإحترافية

    وفقك الله

    وألف مبروك على الإشراف
    شكرا لردك و انا دايما استني اسئلتك

    و الله يبارك فيك و عقبالك يمكن تصير مشرف عام ^_^
    Egypt


    I Love Direct-X

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

  7. #7
    بسم الله الرحمن الرحيم
    بالنسبة للنار فيمكن إستخدام الاسلوب الثاني لكن مع
    Scrolling
    مثل هذا الفيديو
    http://www.maxforums.net/showthread.php?t=150665
    هنا الفيديو ريندر لكن اظن انه يمكن استخدامه مع الالعاب .
    بالنسبة للتأثير الثاني (الماء)
    ايضا يقوم بتحريك أماكن الVertex (النقاط المكونة للمجسم) لكي يظهر و كأنها أمواج .
    اليس من الافضل عمل نورمال ماب و جعلها متحركة مثلاً .
    بالنسبة للسماء الاحظ انك استعملت مجسم كرة مع تكستر مكعب .
    اسف على النقد ان ازعجك .
    بالمناسبة موضيعك جميلة لكن مسابقة المنابر و بعض الاشياء الاخرى تمنعني من قراءة الدرس الثالث للـ(xna)
    جزاك الله خيراً ووفقك لما يحبه و يرضاه
    و مبروك الاشراف .
    .
    C. 4d سابقاً

  8. #8
    يا سلام عليك وعلى مواضيعك المميزة - استاذ ورئيس قسم طول عمرك يبنى - بارك الله فيك

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

    بالنسبة للنار فيمكن إستخدام الاسلوب الثاني لكن مع
    Scrolling
    مثل هذا الفيديو
    http://www.maxforums.net/showthread.php?t=150665
    هنا الفيديو ريندر لكن اظن انه يمكن استخدامه مع الالعاب .
    بالنسبة للتأثير الثاني (الماء)

    اليس من الافضل عمل نورمال ماب و جعلها متحركة مثلاً .
    بالنسبة للسماء الاحظ انك استعملت مجسم كرة مع تكستر مكعب .
    اسف على النقد ان ازعجك .
    بالمناسبة موضيعك جميلة لكن مسابقة المنابر و بعض الاشياء الاخرى تمنعني من قراءة الدرس الثالث للـ(xna)
    جزاك الله خيراً ووفقك لما يحبه و يرضاه
    و مبروك الاشراف .
    هوا بالنسبة للفيديو فهل تقصد انه استعمال التكنيكان معا ؟؟ يعني استعمال الscrolling مع البارتكلز

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

    بالنسبة للسماء فأنا عملت كما تقول و لو تلاحظ ان النتيجة واحدة فيمكنا استخدام الصندوق او الكرة

    لا طبعا النقد و الاسئلة بالنسبة لي اهم من الردود و الموضوع نفسه

    و لو عندك تعقيب اخر علي كلامي اكتبه

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

    يا سلام عليك وعلى مواضيعك المميزة - استاذ ورئيس قسم طول عمرك يبنى - بارك الله فيك
    البنا وصل الله يبارك فيك حبيبي و يا ريت تفيدنا بخبرك الطويلة في الشادرز
    Egypt


    I Love Direct-X

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

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

    ألا نستطيع عمل ريندر مسبق للكائنات الثقيلة مثل الإنفجار وغيرها

    لكي لا تثقل اللعبة ؟؟

    ونستطيع عمل مطر من خلال Scrolling أليس كذلك ؟؟

    وأخر شيء ممكن عمل بارتكلز في الماكس مثلاً وتصديره إلى محرك ألعاب أم يجب كتابته يدوياً ؟؟

    واحسن الله إليك ^^

  11. #11
    اقتباس الموضوع الأصلي كتب بواسطة general1 معاينة الرد
    هوا بالنسبة للفيديو فهل تقصد انه استعمال التكنيكان معا ؟؟ يعني استعمال الscrolling مع البارتكلز
    ايوا .
    انا عندي سؤال بالنسبة لالعاب السباقات ؟
    .
    C. 4d سابقاً

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

    ألا نستطيع عمل ريندر مسبق للكائنات الثقيلة مثل الإنفجار وغيرها

    لكي لا تثقل اللعبة ؟؟

    ونستطيع عمل مطر من خلال Scrolling أليس كذلك ؟؟

    وأخر شيء ممكن عمل بارتكلز في الماكس مثلاً وتصديره إلى محرك ألعاب أم يجب كتابته يدوياً ؟؟

    واحسن الله إليك ^^
    بالنسبة للسؤال الاول فتقريبا الاجابة لا فمثلا لو قمت بعمل ريندر للانفجار و لكن من الأمام و حاول اللاعب ان يدور حوله فماذا سيحدث ؟؟ و في بعض الحالات تحتاج ان يكون الانفجار random بمعني يحصل الانفجار بشكل عشوائى حتي يجعل كل الانفجارات لا تشبه بعضها البعض.

    بالنسبة لفكرة المطر فأنت يمكنك عملها من خلال Scrolling لكي يظهر أمام الشاشة فقط و لكن لو تريد ان يصطدم المطر في الأرض فسيختلف الأمر تمام و ستضطر ان تستعمل الParticles .

    بالنسبة لتصدير البارتكلز للمحركات فأنا استعملت الفيرتوولز و الXNA و لكن لم يكن هناك هذه الخاصية اعتقد ان ملفات الماكس نفسها لا تصدر البارتكلز بها و لكن اذا كانت تصدر البارتكلز فيمكن كتابة كود في الXNA لقراءة هذه البارتكلز و لكني لم اري مثل هذا العمل .

    و شكرا لأسألتك التي تفيد الجميع.
    انا عندي سؤال بالنسبة لالعاب السباقات ؟
    يا ريت تسألوا لكي يستفاد الجميع.

    و بالتوفيق للجميع...
    Egypt


    I Love Direct-X

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

  13. #13
    في العاب السباق في الغالب تجد و انت في السباق مكتوب انت الاول ام الثاني و هكذا كيف ممكن نعمل ده بالبرمجة ؟
    .
    C. 4d سابقاً

  14. #14
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    اقتباس الموضوع الأصلي كتب بواسطة C. 4d معاينة الرد
    في العاب السباق في الغالب تجد و انت في السباق مكتوب انت الاول ام الثاني و هكذا كيف ممكن نعمل ده بالبرمجة ؟
    حسنا هذه احد الطرق التي تؤدي الغرض :

    اولا نحسب عدد اللفات لكل عربة فمثلا هناك عربة لعلي و عربة لسيف و عربة لمحمد , فسيف في اللفة الأولي و محمد في اللفة الثانية و علي في اللفة الثانية حسنا فهكذا سيف هو الأخير و المشكلة في عربة علي و محمد.

    حسنا فالنعتبر ان التراك الذي لدينا هكذا :



    فسنقوم بوضع nodes علي التراك(الطريق) و كأنها نقط بين حواف الطريق هكذا :



    فمثلا لو محمد في النود رقم 2 و علي في النود رقم 3 فعلي هو الأول و لكن لو كان الأثنين في node واحدة فهناك مشكلة ^_^ , في هذه النقطة سنقوم بحساب المسافة بين علي و النود القادمة و محمد و النود القادمة و المسافة الأقل هو الأول.

    هذه الطريقة التي وجدتها و من لديه طريقة اخري أبسط فاليقول.
    أخر تعديل بواسطة general1 في 17 / 08 / 2009 الساعة 06:19 PM
    Egypt


    I Love Direct-X

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

  15. #15
    والله مشكوووووور جدا أخي جنرال
    وخاصة على معلومة السكاي بوكس

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


    I Love Direct-X

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

Bookmarks

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

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