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

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

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

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

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

    مقدمة :

    نبدأ اول موضوع في خدع و برمجة الألعاب و يتكلم عن الشادرز , و سنعرف ما هى الشادرز, و سنعرف تاريخ الشادرز و كيف بدأت, و بعض التأثيرات و التكنيكات المستعملة

    ما هي الشادرز :

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


    تاريخ الشادرز :

    قبل ان يتم عمل كروت الشاشة التي تعمل بالشادرز كان هناك خط لأظهار المجسمات موحد و هنا ظهرت مشكلة ان الاجسام اصبحت متشابهة لأن المبرمج لا يدخل في عمل اظهار المجسم فيقوم كارت الشاشة بأظهار كل المجسمات بنفس الطريقة و بدأت الألعاب تصبح مملة, و بعدها قامت Microsoft بأنشاء طريقة للتحكم بأظهار المجسمات و هي بأستخدام لغة الأسمبلي و هي لغة جميلة تتيح لنا النزول الي الهاردوير و استعمال المسجلات (Registeries) و لكنها صعبة جدا , لهذا اعادت مايكروسوفت التفكير و قامت بأنشاء مشروع مع Nividia لعمل أول لغة متخصصة في الشادرز و تم تسميتها High level shading language(HLSL) ثم ظهر لأول مرة كارت شاشة يدعم للشادرز 1.1 و كان الكارت Geforce 3 Series و طبعا من انتاج Nivide, و كان هذا من حلم المبرمجين ان يتم عمل مثل هذه اللغة ليقوموا بالتحكم بأظهار المجسمات التي لديهم من دون استعمال لغة صعبة مثل الاسمبلي , ثم توالت الاصدارات في الشادرز وصولا لشادرز 5.0 و لكن لا يتم استعمالها الا قليلا و الان المنتشر هو شادرز 3.0.

    طريقة عمل الشادرز :

    طريقة عمل الشادرز بسيطة يتم ادخال مجسم في خط الاظهار (Rendering) و يقوم هذا الخط بجعل كل فيرتكس في المجسم و بكسل بالدخول لكود الشادرز الذي كتبته لتتم معالجته فمثلا :


    Float4x4 view_proj_matrix;
    Struct VS_OutPut
    {
    Float4 pos:POSITION;
    }


    VS_OUTPUT vs_main(float4 inPos:POSITION)


    {

    VS_OUTPUT out;
    Out.pos = mul(view_proj_matrix,inPos);

    Return out;

    }



    Float4 Ps_Main():COLOR0


    {

    Return Color(1,0,0,1);

    }


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

    Out.pos = mul(view_proj_matrix,inPos);

    و اخيرا الجملة Ps_Main هي تخص كود البكسل فكل بكسل تمر هنا لكي اللون النهائى بعد كل الحسابات , لقد جعلنا الدالة تأخد قيمة اللون 1,0,0,1 و هو اللون الأحمر فكل بكسل ستمر من هنا سيتم تلوينها باللون الأحمر فيظهر المجسم أحمر , و كما قلت هذا أبسط كود يمكن كتابته لأظهار المجسم و هذه النتيجة :



    ملاحظة : الألوان في الشادرز تتكون من RGBA و هو اختصار لـ: اول لون هو الأحمر Red و ثاني لون هو الأخضر Green و ثالث لون هو الأزرق Blue و أخر قيمة هي الAlpha و هي اظهار المجسم فأذا وضعت اقصي قيمة و هي 1 سيتم اظهار المجسم و اذا وضعت قيمة أقل سيكون المجسم شفافا.

    تكنيكان مستعملان في الشادرز :

    هناك تكنيكات مستعملان للشادرز الأول هو استعمال الشادرز كما هي فيمر كل مجسم و يتم عمل التأثير علي المجسم و لكن هناك بعض التأثيرات التي لا يمكن ان تقوم بعملها علي كل المجسمات لعدة أسباب :

    • المجسمات كثيرة و هذا سيؤثر علي أداء الجهاز و ستعاني اللعبة من البطء
    • من الممكن ان يكون المجسمات عادية و لكن التأثير يحمل كثيرا علي الجهاز فخذ في اعتبارك انك لو اضفت الجملة 1 + 1 في كود البكسل فسيتم عمل هذا الحساب في كل مرة يتم رسم بكسل فلو هناك مليون بكسل علي الشاشة سيتم عمل هذه الحسابات مليون مرة !! فما ادراك لو كانت الحسابات أعقد من 1 + 1 !!!!
    • هناك بعض التأثيرات لا يمكن عملها علي كل المجسمات و يجب ان يستعمل التكنيك الاخر الذي سيتم شرحوا
    التكنيك Render to texture :

    هذا التكنيك يقوم بعمل الآتي : كل المجسمات يتم عمل لها اظهار (render) عادي من دون اى شادر و لا حسابات, و بعدها يتم وضع الصورة النهائية و عمل الشادرز و الحسابات علي الصورة و هذا مثال بسيط :
    الصورة النهائية قبل وضع التأثير :




    و هنا يتم عمل التأثير علي الصورة النهائية :




    ارجو ان تكون الصورة وضحت لك.

    خدع الشادرز :

    كل الألعاب العالمية الي تراها تقوم بأستخدام الشادرز لعمل خدع لأظهارالمجسم الذي لديها , و سنقوم في هذا الجزء بشرح هذه الخدع عمليا و من دون كود , أولا خدعة Blur,motion blur, نري اولا صورة لهذه الخدعة :




    اولا هذه الصورة من Need for speed undercover اللعبة الشهيرة و الغنية عن التعريف , نري هنا ان الصورة و كأنها مهزوزة و هذا التأثير تم عمله لكي يجعل اللاعب يحس و كأن السيارة تجري سريعا !! , في هذا التكنيك يتم أخذ صورة قبل الحركة و صورة أخري بعد الحركة (حركة السيارة مع الكاميرا الخ..) و عمل دمج بين ألوان الصورتان فيطلع لك الصورة مشوهة هذا بالنسبة للتكنيك motion blur, و الفرق بين هذا التكنيك و التكنيك blur ان التكنيك الثاني يحصل من دون تحرك فمثلا في لعبة call of duty لو استعملت الsniper اول ما تقوم بالتقريبا يتم عمل blur للصورة و كأن عينك لم تأخذ علي السلاح بعد لأضافة بعض الواقعية للعبة و طبعا يتم عمل هذا التأثير بالتكنيك Render to texture لأن هنا انت تستعمل الصورة السابقة و الصورة الحالية و تقوم بدمجهم و ليس من الواقعي ان تقوم برسم المجسمات مرتين مرة في الصورة السابقة و مرة في الصورة الحالية !!!, سيكون هذا من الجنون لأن كل مجسم لديك سيتم رسموا مرتين و عمل الحسابات مرتين و انت تريد أفضل اداء للجهاز.

    سأكمل في الرد القادم لأن المنتدي لا يسمح بأكثر من 20000 حرف !!
    أخر تعديل بواسطة general1 في 12 / 08 / 2009 الساعة 05:18 PM
    Egypt


    I Love Direct-X

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


  2. #2
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    التكنيك الثاني و هو تكنيك Normal mapping و يقوم هذا التكنيك بأظهار بعض التفاصيل للمجسم و هي أساسا غير موجودة بالمجسم !! و لكن ببعض الأضاءة يوهمك بذلك و هذه بعض الصورة للتأثير:





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




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




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

    التأثير الثالث و الأخير الذي سنشرحه هو الReflection,refraction طبعا هذه ليست كل التأثيرات التي من الممكن عملها بالشادرز و لكنه الشهير منها , حسنا اولا نعرف ما الrefraction,reflection , الاول هو الReflection هو الانعكاس و هو ان يعكس المجسم بقية المشهد كالمرآه و التأثير الثاني هو انكسار الضوء و هو ان يمر الضوء من مادة الي مادة أخري, فمثلا لو مر الضوء من الهواء الي الزجاج فسينكسر الضوء و يظهر الصورة التي بعده منكسرة و يمكنك رؤية هذا التأثير في أى كوب لديك, بعيدا عن كيفية حدوث هذا التأثير في الحياة, ففي الجهاز لن تقوم بكسر الضوء و حساب الضوء المكسور لكل بكسل الخ…., هذا سيجهد الجهاز فسنبعد عن الحقائق التي في الحياة و نقوم بعمل التأثير بطرق أخري مبتكرة, نلاحظ معا هذا الصورة :




    حسنا نريد من المجسم الذي لدينا ان يقوم بعمل انكسار للمشهد الذي وراءة يمكنا فعل هذا بسهولة و سنستخدم هنا التكنيكات render to texture و التكنيك العادة , فسنقول للشادرز ان يأخذ صورة للمشهد من دون مجسمنا ثم نقوم بوضع هذه الصورة علي المجسم , مع استعمال دالة جهازة تسمي refract و هي دالة داخلية في الشادرز تضعها في اى صورة لتظهر و كأن بها انكسار للضوء , طريقة مبتكرة اليس كذلك !! و ستكون النتيجة هكذا :




    و بالنسبة للReflect فهو تقريبا نفس التأثير فنقوم بأخذ صورة للمشهد (render to texture )و كأن الكاميرا تنظر للوراء (الاتجاه المعاكس للمجسم)و نقوم بأخذ هذه الصورة و لصقها علي المجسم مع وضع دالة جاهزة تسمي Reflect. و تكون هذه النتيجة النهائية :




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


    I Love Direct-X

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

  3. #3
    موضوع رائع اخى جينيرال منتظرين البقية بشوق ^_^
    حلمى ان اكون مصمم العاب و3دى ناجح

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

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

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

    و بإنتظار مواضيعك الباقية

    <<Nobody>> سابقاً

  5. #5
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    موضوع رائع اخى جينيرال منتظرين البقية بشوق ^_^

    اشكرك اخي و ان شاء الله انتظر الدرس في الاسبوع القادم

    اقتباس الموضوع الأصلي كتب بواسطة <<nobody>> معاينة الرد
    شكراً لك على الموضوع ....و في الواقع كان موضوع الشادرز بالنسبة لي أصعب من برمجة الأسمبلي تخيل !!

    و بإنتظار مواضيعك الباقية
    يااااه الاسمبلي !! هوا المشكلة انها محتاجة تخيل و لازم تدرسها كذي مرة عشان تفهمها و تبدع فيها , و انتظرني
    Egypt


    I Love Direct-X

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

  6. #6
    الله الله ما شاء اله عليك يا جنرال بجد موضوع رائع جدا ووالله انا استفدت منه وفعلا نوعية هذه المواضيع المميزة والنادرة الشرح كانت تنقصنا فى مجتمعاتنا العربية - استمر فى مجهوداتك يا جنرال وبالتوفيق لك

    صورة من الشيدر بتاعى



    واللى عاوز يشوف مقطع فيديو منه اهو
    http://filaty.com/f/908/98965/shaderwater.rar.html

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

    ممكن يستخدم Blur,motion blur في الأفلام أيضاً

    مثل الفيلم 6 لهاري بوتر في بدايته تكون المباني مثل هكذا تقنية هل هذا صحيح ؟؟

    تقنياً كيف يمكننا عمل هذه الخاصية في الألعاب بدمج الصور التي تكلمت عنها ؟؟

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

  8. #8
    عضو متميز
    صور رمزية omarzonex
    تاريخ التسجيل
    Jan 2009
    المنطقة
    نبض قلبي- فلسطين
    ردود
    6,681

    Lightbulb موضوع رائع من البداية

    موضوع رائع من البداية يا صديقي وأخي العزيز

    اتمنالك التوفيق والنجاح في اعمالك المميزة أخي

    واصل التقدم نحن معك لأخر المشوار حتى الأحتراف

    الله معك بأذن الله

  9. #9
    السلام عليكم ورحمة الله وبركاته
    1. هذه الغرفة لتبادل الافكار عن صناعة الالعاب 3d game studio
    2. يجب ان يكون عندك برنامج Windows Live Messenger
    3.طريقة الدخول الى الغرفة اضط على add a contact ثم اكتب
    group357624@groupsim.com
    ثم next ثم اتظر قليلا ثم close
    4. الغرفة مفتوحة 24/24 ساعة
    5. ممنوع الشتم من فضلكم
    انا اتظركم السلام عليكم

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


    و الله اشكرك اخي علي هذا الاطراء و انتظر ان شاء الله الدرس الجديد و علي فكرة الشادر قوي جدا و انا عملت داون لود للفيديو (شادر محترفين) ^_^

    موضوع جميل جداً بارك الله فيك

    ممكن يستخدم Blur,motion blur في الأفلام أيضاً

    مثل الفيلم 6 لهاري بوتر في بدايته تكون المباني مثل هكذا تقنية هل هذا صحيح ؟؟

    تقنياً كيف يمكننا عمل هذه الخاصية في الألعاب بدمج الصور التي تكلمت عنها ؟؟

    احسن الله إليك
    اشكرك علي ملاحظاتك و بالنسبة للشادر فهو يستخدم في الأفلام ايضا كما قلت و لكن في الأفلام لا يأخذ في حساباته اذا كان الشادر معقد او هناك موديلز كثيرة لأنه سيقوم بعمل أظهار للمجسمات كلها من دون ان يكون هناك runTime فمثلا سيقوم بعمل جميع الحسابات في 70 ساعة ثم سيسجلها و يحفظها في ملف لن تؤثر في المستخدم فيما بعد

    تقنيا فبأستخدام الشادرز يمكنك فعل هذا , لذلك اذا كنت تريد فعل هذا يمكنك ان تتعلم لغة الشادرز HLSL


    موضوع رائع من البداية يا صديقي وأخي العزيز

    اتمنالك التوفيق والنجاح في اعمالك المميزة أخي

    واصل التقدم نحن معك لأخر المشوار حتى الأحتراف

    الله معك بأذن الله
    اشكرك اخي و ان شاء الله انتظروا الموضوع القادم
    Egypt


    I Love Direct-X

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

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

    ممكن عمل هذه الخاصية من غير لغة برمجة

    يعني في الماكس والافتر إفكت فقط أم لا ؟؟ "أم يجب لغة برمجية"



    والكود أعلاه باي لغة ؟؟

    هل هو #C ؟؟؟

  12. #12
    مذهل للغاية هذا الموضوع

  13. #13

    Wink

    بالنسبة للأخ اللذى يسأل بأى لغة صنع الكود - بعد اذن الجنرال - هذه اللغة تسمى لغة HLSL وهى التتى تستخدم لصنع الشيدر
    واليك عينة اخرى من كود اخر لتتفحصة

    matrix ViewProj;//by bna
    vector Color;//By bna
    vector BColor={1.0f,1.0f,0.0f,1.0f};
    struct Input
    {
    vector Pos:POSITION;
    };
    struct Output
    {
    vector Pos:POSITION;
    vector Color:COLOR;
    };

    Output Main(Input input)
    {
    Output output=(Output)0;
    output.Pos=mul(input.Pos,ViewProj);
    output.Color=BColor*Color;
    return output;
    }

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

    حتى Blur,motion blur تصنع من لغة HLSL

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

    حتى blur,motion blur تصنع من لغة hlsl
    طبعا كما رد عليك الاخ احمد البنا فبكود hlsl يمكنك عمل هذه التأثيرات و كل التأثيرات التي في الالعاب يتم عملها بهذه اللغة hlsl : High level shading language

    ممكن عمل هذه الخاصية من غير لغة برمجة

    يعني في الماكس والافتر إفكت فقط أم لا ؟؟ "أم يجب لغة برمجية"
    بالنسبة للماكس فالصراحة لا اعرف هل يمكنه عمل هذه الخاصية ام لا و لكن بالنسبة لافتر افكت به هذه الخاصية

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

    مذهل للغاية هذا الموضوع
    شكرا اخي علي مرورك و الرد و بالتوفيق للجميع...
    Egypt


    I Love Direct-X

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

Bookmarks

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

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