موضوع: مدخل في تصميم ألعاب الـ Isometric

ردود: 11 | زيارات: 2977
  1. #1

    Post مدخل في تصميم ألعاب الـ Isometric

    ماذا نعني بكلمة Isometric؟

    الـ Isometric يعني المنظور، أو الإسقاط الثلاثي البعد لمشهد ما من زاوية ثابتة متساوية الأبعاد. بحيث تكون أطوال ثلاثة خطوط مفترضة على المحاور الثلاثة ثابتة الطول ومتساوية. تكون نسبة هذا المنظور عادة مساوية إلى 1:1. خير مثال على ماقلناه يظهر في الشكل التالي:

    معظم ألعاب الحاسوب اليوم لاتستخدم النسبة 1:1، بل يستخدم الكثير منها النسبة 2.1:1، بحيث يظهر المنظور وكأنه يعطي اللاعب الشعور بالنظر إلى عوالم اللعبة من الأعلى، بعض المبرمجين يسمون هذا المنظور "بالنظرة الإلهية" أو "God View". ويبدو استخدام هذه النسبة أفضل من النسبة 1:1 لما تقدمه من تفاصيل أكثر دقة للعوالم المختلقة.

    ماهي رقاقات الـ Isometric؟

    تشبه رقاقات الـ Isometric الشكل المعين "مربع منحرف الأضلاع" الممثل على شكل صورة نقطية يتم دمجها مع بقية صور الـ Isometric الأخرى لتوليد خريطة أرضية غير متقطعة المظهر، تصلح لأن تستخدم لألعاب الـ Isometric تحديداً. تظهر رقاقة الـ Isometric وهماً بعمق المشهد، وذلك نظراً لطبيعة الشكل المعيني والذي تظهر عليه.



    أبعاد رقاقة الـ Isometric؟

    بعد إلقاء نظرة أولى على صورة رقاقة الـ Isometric الطبيعية، تظن وللوهلة الأولى بأنّ هناك بعدين وحيدين لها فقط، ألا وهو العرض والإرتفاع. ولكن هذا ليس صحيح أبداً. فبالرغم من أن الصورة لها في الحقيقة بعدان فقط (عرض وإرتفاع) إلا أن صورة الرقاقة تمثّل فضاء ثلاثي البعد ولذا من الضّروري أن يتم وصفها باستخدام ثلاثة أبعاد: الطول، العرض، والإرتفاع. سوف يكون هذا المبدأ مشوّشاً نوعاً ما في البداية وسوف يصعب تذكره. لاتقلق. سوف يصبح هذا الأمر أكثر سهولة مع تمرسك في استخدام رقاقات Isometric.

    الصورة التالية تظهر رقاقة الـ Isometric، مع وصف عن أبعادها الثلاثة:



    الطول: وهو البعد من نقطة أقصى اليسار للرقاقة إلى نقطة أقصى اليمين.
    العرض: وهو البعد من النقطة الأبعد للرقاقة من الشاشة إلى النقطة الأقرب للرقاقة من الشاشة. من المحتمل أن يكون هذا البعد هو الأكثر تشويشاً بالنسبة لرقاقات الـ Isometric.
    الإرتفاع: وهو 'إرتفاع' أو سمك الرقاقة.

    كيف نرسم رقاقات الـ Isometric

    باعتبار أن رقاقة الـ Isometric ليست شكلا مستطيلاً سهلاً، فإن أي عملية Bit Bliting بسيطة سوف تكون عديمة الفائدة. ما يتطلّب إنجازه هو عملية نقل شفّافة. إذا كانت الطريقة التي تستخدمها في نقل الرقاقة لا تدعم عمليات النقل الشفّافة، فإنك سوف تحتاج إلى قناع للرقاقة التي سوف يتم نقلها. الخطوات المطلوبة لنقل الرقاقة هي كالتّالي:

    إيضاح من المترجم: الـ Bit Bliting هو عملية نقل سريعة جداً يقوم بها عادة عتاد العرض لديك وذلك لنقل المعطيات الرسومية الموجودة في المخزن الذاكري الثانوي المؤقت إلى المخزن الذاكري الرئيسي المؤقت، أو ذاكرة العرض الرئيسية.

    1. تحتاج إلى صورة الرقاقة وصورة قناع الرقاقة. في الصورة التالية، الخلفية البيضاء لصورة الرقاقة تمثل الجزء الشفّاف للصورة.



    2. قم بنقل، القناع باستخدام المعامل OR. في Windows، يتم إنجاز هذه العملية باستخدام العملية الرسومية SRCPAINT أو (ROP). الناتج عن هذه العملية سوف يخلق نوع من الفصل في الصورة الرئيسية حيث أنّ الجزء المنقول من الصورة سوف يكون الجزء الأبيض.
    3. قم بنقل، الصورة الفعلية باستخدام المعامل AND. في Windows، يتم إنجاز هذه العملية باستخدام العملية الرسومية SRCAND أو (ROP). سوف ينتج عن ذلك نقل الصورة الرئيسية ووضعها في منطقة القطع البيضاء بشكل كامل وبدون أية أضرار لأطراف صورة الرقاقة الأصلية.

    يرجع تصميم القالب الفعلي للقناع إليك. إن قالب القناع الظاهر في الصورة أعلاه يسمح لكامل صورة الرقاقة بأن يتم رسمها كما هي.

    تغدو الأمور أكثر صعوبة نوعاً ما فيما إذا كنت ترغب في إظهار الجزء الأعلى من الرقاقة فقط. إن عملية نقل القناع والصورة ومن ثم القيام بعملية نقل أخرى لإزالة الجزء غير المرغوب فيه قد يكلفك ذلك أضرارً جسيمة لأطراف صورة الرقاقة الأصلية. وهذا يعتبر أحد عوائق الأبعاد الثلاثة في رسوميات الـ Isometric. لحلّ هذا العائق ينبغي أن يكون لديك صور منفصلة لجوانب الرقاقة. وهذا يعني أنك سوف تحتاج إلى عمليات نقل أكثر بكثير، ولكن سوف يكون لديك مرونة أكبر في رسم الرقاقات أيضاً. إذا كنت تحتاج لإعادة رسم سطح الرقاقة مرة أخرى، وليس الجوانب يمكنك أن تنجز ذلك إذا كانت الرقاقة ممثلة في صورتين معزولتين كما يظهر في الصورة التالية:



    استخدام الطبقات مع رقاقات الـ Isometric

    لكي تحصل على إنتقال ممهد وسلس من أحد أنواع رقاقات التضاريس إلى الرقاقة التالية، من الضروري أن تطبق ما يعرف بالطبقات 'الهامشية'. الطبقات الهامشية هي عبارة عن صور رقائق مستوية (بدون أية جوانب) يتم رسمها على سطح الرقاقة العلوي لإحداث تأثير إنتقال سلس مع الرقاقة التالية. المثال الموضح أدناه يمثل تطبيق هذه الفكرة على رقاقتين حجرية وأخرى عشبية مع إبراز الإنتقال السلس بين الرقاقتين. بالطبع الفنان الجيد يمكنه أن يجعل من الطبقة البينية تبدو أكثر واقعية وسلاسة بتطبيق بعض الأوساخ الصغيرة على جانبي الرقاقتين مع ألوان أفضل لكليهما مثلاً.



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

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

    الرقاقات ذات الأطوال المتغيرة وقاعدة الرقاقة

    إن رقاقة الـ Isometric تستحوذ على فضاء ثلاثي الأبعاد. لايوجد هناك أية قاعدة بأن كل الرقاقات المتضمنة في طاقم من الرقاقات هي من الضروري أن تكون بنفس الإرتفاع. إن وجود رقاقة متغيّرة الإرتفاع في تصميمك يعتبر ميزة جيدة في الحقيقة. دعنا نأخذ رقاقتنا الحجرية على سبيل المثال. الصورة الأولى للرقاقة تظهر بأن لها إرتفاع من 9 نقاط ضوئية. لايوجد هناك أية قاعدة تلزمنا بأنّ الرقاقة العشبية من الضروري أن تكون بنفس إرتفاع الرقاقة الحجرية. في الحقيقة، الإرتفاعات المختلفة للرقاقات بفارق نقطة ضوئية أو إثنتان سوف يجعل من المنظر الطبيعي المصير واقعياً بدرجة أكبر بكثير.

    لكي تكون قادراً على رسم الرقاقات بارتفاعات متغيّرة وبشكل صحيح، فأنت تحتاج لمعرفة موضع قاعدة هذه الرقاقة. ما هي قاعدة الرقاقة؟ إنّ قاعدة الرقاقة وببساطة هي مقدار الإزاحة الموجود من قمة الرقاقة (قيمة الإرتفاع القصوى) إلى النقطة التي يتم بها إلتقاء سطح الرقاقة مع أرض الكون المختلق. الصورة التالية تظهر مثالاً من 3 رقاقات بارتفاعات مختلفة وكيفية رسمهم إلى جانب بعضهم البعض باستخدام قاعدة الرقاقة كنوع من المؤشر التوجيهي.



    عندما يتم رسم الرقاقات عندما يكون مقدار قاعدة الرقاقة أي قيمة ما عدا 0، عندها وببساطة يتم تحريك الرقاقة على الاحداثي الصادي قبل النقل الذاكري ومن ثم يتم تنفيذ النقل الذاكري في ذلك الموقع تحديداً. إليك عيّنة توضيحية من شفرة ++C\C والتي تنجز مثل هذه المهمة:

    كود PHP:
    void DrawTile(char TileIDlong DestXlong DestYchar BaseOffset){
        
    //Initializing stuff
        
    DestY -= BaseOffset;    //Move the tile up the Y axis to take into
                                //account the tile base.
        //Actual bitblt call

    في الحقيقة تنفيذ مثل هذه المهام يعتبر سهل للغاية. الشيء المثير جداً فيما يتعلق بالرقاقات المتغيرة الارتفاع هو أنّها لا تحتاج إلى قوّة معالجة كبيرة لرسمها على خلاف ما يحدث مع عمليات النقل الذاكري المذكورة أعلاه.

    بقلم: دينو غامبون
    ترجمة وإعداد: رامي اللولح

    والباب مفتوح للنقاش البناء .... !!!!!!!!!!
    Live Free ... Die Well
    The Scorpion King


  2. #2
    مقال جيد جداً يا اخ رامي ... و لكن هناك مشكلة هو أن إدارة المنتدي لا تهتم بمثل هذه المقالات ، للاسف !
    و اتمني أن تسمح لي بالاضافة ؟ ..
    رب زدنِى علماً
    جيتس و اينشتين احدثوا ثورة في مجالاتهم و لكن بعد كل هذا هل استطاعوا ان "يميزوا" بعد كل ذلك ان الله احد لم يلد و لم يولد ؟
    نعم - احمد صالح .
    برمجة الألعابُ هي عملية تــحويل الصور الميتة إلي صور حية - احمد صالح .
    الامـة التى تــفرط فى لغـــتها كالتى تفرط فى عرضها !!!
    انا لو لم اكن مصريا * لوددت أن اكون مصريا

  3. #3
    أخي أحمد صالح جزاك الله كل خير على مداخلتك .... .... الواقع لايهمني إذا كانت إدارة المنتدى حاضرة أم غائبة أم غير مهتمة أصلاً .... الذي يهمني هو أن أستفيد من الآخرين أو يستفيد الآخرين مني بقدر ما أستطيع .... أعتقد أن فعالية أي منتدى تكمن في مدى فعالية أعضائه .... فلننظر إلى مستوى ما نقدمه من مواضيع وردود وعندها يمكننا البحث فيما إذا كانت إدارة المنبر تهتم لهذا أم لا .... وهو في الواقع آخر ما أفكر فيه أو أهتم له .... هذه وجهة نظري الشخصية وأشكرك مرة أخرى على مداخلتك !!!!
    Live Free ... Die Well
    The Scorpion King

  4. #4
    عضو فعال
    تاريخ التسجيل
    Sep 2003
    المنطقة
    مجرة درب التبانة
    ردود
    196
    مقال جيد جداً يا اخ رامي

    شكرا لك
    سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

  5. #5
    عضو فعال
    تاريخ التسجيل
    Jun 2001
    المنطقة
    مصر
    العمر
    34
    ردود
    199
    بسم الله الرحمن الرحيم
    بارك الله فيك أخ رامي , ومشكور جزيلا على هذا المقال ...
    شكرا مرة أخرى
    تحياتي

  6. #6
    عضو نشيط
    صور رمزية Egy_knight
    تاريخ التسجيل
    Jan 2004
    المنطقة
    مصر
    العمر
    33
    ردود
    302
    مشكور اخ رامى ..
    لى هذا الموضوع الممتاز ..
    انا جديد فى مجال الالعاب .. و استخدمت قبل كدة directx 7 فى الفيجوال بيسك و لما جبت الSDK بتاع DIRECTX 9 لل vs.net معرفتش استخدمة مع الvb.net ياريت لو عندك اى معلومات عن استخدام الdirectx 9 فى الفيجوال بيسك دوت نت تقولهالى .. او اى كتاب او حاجة تعليمية .. اى مساعدة تقدر تقدمها ..
    و بالمناسبة .. انا اشتغلت برمجة جرافيك بلغات كتير
    borlan c++5 , cbuilder 6,vb 0.6,vb.net
    انا جديد فى مجال برمجة الجرافيك و الالعاب زى مقلتلك و معرفش افضل لغة فى برمجة الالعاب هى ايه ..
    سواء من ناحية سرعة انجاز المشروع (اللعبة) او السهولة او سرعة اللعبة نفسها عند التشغيل و الحاجات دى ..
    انا اسف جدا انى طولت عليك ..
    منتظر درك .. و شكرا

  7. #7

    Lightbulb على الرحب والسعة !!!!!

    أخي Egy_knight أهلاً بك ، نعم ، مع ظهور لغات البرمجة NET. الجديدة مثل #C ، وVB.NET أصبح بإمكانك استخدام DirectX9 لتطوير برامج وسائط متعددة غنية ومؤثرة أيضاً ، ولكن ، عليك استخدام مكتبات DirectX المُعالجَة ، أو (Managed DirectX 9)، وهي عبارة عن مكتبة اطلقت مع الإصدار الأخير لـ DirectX والمخصصة لتطوير تطبيقات DirectX مع لغات NET. الجديدة .... الواقع أنه عندما تم إطلاق مكتبة DirecX المُعالجَة ، لم يتم إصدار أي وثائق تفصيلية عن كيفية استخدامها من قبل Microsoft ، وبالتالي واجه معظم المطورين صعوبات مع إنشاء تطبيقات من هذا النوع ..... على أية حال ، أنا لا أستخدم VB.NET مطلقاً ولذا لا أستطيع أن أعطيك إجابات وافية ومفصلة عن كيفية إنشاء مثل هذه التطبيقات ، ولكن إليك بعض اللمحات السريعة عن كيفية الحصول على معلومات بهذا الشأن:

    - كتاب "Learn Vb .Net Through Game Programming": يعطيك فكرة جيدة عن إمكانية استخدام VB.NET مع DirectX9


    - قم بزيارة المواقع التالية ففيها الكثير من المعلومات المتعلقة بـ DirectX و VB:
    http://www.vbgamer.com
    http://www.directx4vb.com
    http://voodoovb.talosstudios.com
    http://www.rookscape.com/vbgaming
    http://www.talosstudios.com

    بالنسبة لتساؤلك:

    انا جديد فى مجال برمجة الجرافيك و الالعاب زى مقلتلك و معرفش افضل لغة فى برمجة الالعاب هى ايه ..
    سواء من ناحية سرعة انجاز المشروع (اللعبة) او السهولة او سرعة اللعبة نفسها عند التشغيل و الحاجات دى ..
    قم بمراجعة ردودي على المواضيع التالية .... "أريد البدء ببرمجة الألعاب كيف أبدأ ومن أين وكيف؟؟؟؟" و "كيف أستطيع تصميم لعبة ثلاثية البعد ؟؟؟؟؟" و "عضو جديد واسئله كثيره اتمنى الاجابه عليها" .... وأتمنى أن تتمكن من إيجاد إجابات على تساؤلاتك ..... أتمنى لك التوفيق .... ونحن جاهزون للخدمة في أي وقت !!!!!!!!!
    Live Free ... Die Well
    The Scorpion King

  8. #8
    عضو نشيط
    صور رمزية Egy_knight
    تاريخ التسجيل
    Jan 2004
    المنطقة
    مصر
    العمر
    33
    ردود
    302
    الف شكر يا اخ رامى ..
    بس معلش لو تعرف الكتاب دة انا ممكن الاقى منه نسخة ازى .. ابقى شاكرلك فضلك ..
    و شكرا على اللينكات الممتازة دى ..
    اخوك egy_knight

  9. #9

    Lightbulb

    أخي Egy_knight .... يمكنك شراء هذا الكتاب وكتب أخرى مهمة من Amazon .... !!!!!
    http://www.amazon.com

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

    وبالتوفيق للجميع !!!!!!!!!!!!!!!!!!
    Live Free ... Die Well
    The Scorpion King

  10. #10
    عضو نشيط
    صور رمزية power3d
    تاريخ التسجيل
    Jul 2003
    المنطقة
    egypt
    العمر
    31
    ردود
    841
    أزيك يا رامي ....

    كويس جدا انك اتكلمت ف الموضوع ده انا فعلا اشتركت انا و فريق برمجه و عملنا لعبه استراتجيه (شبه كوماندوز) انا كان دوري الشخصيات و الحمد لله ربنا و فئني و و عملنا ديموا و عرضناه في مؤتمر للجرافك ( ديجي مديا )

    انت منين صحيح ؟؟

  11. #11
    أهلاً بك أخي العزيز power3d .... وشكراً على مداخلتك .... هل لديكم موقع تعرضون فيه اللعبة .... هل لنا أن نحصل على عرض حقيقي لهذه اللعبة ؟؟؟؟ ..... أو على الأقل صور لها ؟؟ .... أنا من سوريا وأعمل حالياً في بلاد الحرمين !!!! ..... وأشكر لك تواصلك !!!!!!!!!!!
    Live Free ... Die Well
    The Scorpion King

Bookmarks

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

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