المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [درس] عمل ارضية غير مستوية لألعاب البلاتفورم



d.a.m.h
18-04-2008, 01:58 AM
بسم الله الرحمن الرحيم
اليوم اتكلم عن درس جديد يهم مستعملى الجيم ميكر وبالتحديد محبى تصنيع العاب البلاتفورم.
دائما ما نجد العاب البلاتفورم التى نصنعها نمطية حيث اللاعب يسير فى اتجاه واحد على ارضية مستوية ويقفز من فوق حفر وعوائق ثم يقابل الوحش.
السؤال هنا : لماذا نجعل ارضيتنا مستوية دائما ولا نجعلها ذات تضاريس من مرتفعات ومنخفضات مثل لعبة Sonic الشهيرة؟؟ فهذا على الاقل يعطى نوع من الواقعية على اللعبة.
لنبدأ بعمل شكل جديد لألعاب البلاتفورم عندنا...ولنشرح طريقة عمل تضاريس يتحرك عليها اللاعب.
الفكرة المستخدمة:

اذا نظرنا الى هذه الصورة:
http://www.a.7m7.org/uploads/images/7m7.org-14fd7be8e0.gif
قيمتى snapX و snapY هى قيم تحدد اقل مسافة ممكنة تفصل بين اثنين objects فى غرفة واحدة
انظر الى هذه الصورة
http://www.a.7m7.org/uploads/images/7m7.org-4b71c817d6.gif

http://www.a.7m7.org/uploads/images/7m7.org-2c351c8749.gif

لذا فان هناك نوع من التقييد لمصمم اللعبة عندما يرغب فى وضع objects بينها مسافة صغيرة جدا
اول شىء سنفعله هو وضع قيمتى snapX و snapY بواحد كما بالشكل
http://www.a.7m7.org/uploads/images/7m7.org-178c7b4761.gif

ضع الobject الخاصة بالارضية ولتكن obj_land
وادخل ايضا صور اللاعب واجعل الBounding Box متساوى وكذلك نقطة الOrigin
انظر الى هذا الدرس (http://montada.com/showthread.php?t=573572) اذا لم تكن تعرف كيف تضبطها
الخطوة الثانية هى ان تزيل علامة صح من على هذا المربع
http://www.a.7m7.org/uploads/images/7m7.org-6acc171198.gif

.....لكن ما معنى هذا المربع؟؟
قلت فى درسى السابق ان الBounding Box الموجود حول الobject هو الذى يحدث التصادم لكن فى حالة ان تضع علامة صح على هذا المربع فان التصادم سيكون بين اخر جزء من البيكسل الخاص بالصورتين....انظر الى هذه الصورة لتفهم
http://www.a.7m7.org/uploads/images/7m7.org-a75157aa9c.gif

اما اذا ازلت علامة صح من المربع المشار اليه فان التصادم سيصبح بين المربعين كما بالشكل
http://img3.7m7.org/1-2008/fdgsdgs.lkjhef2j4fblj3w69876429.gif

وهذه النقطة لم انبه لها فى درسى السابق والسبب انه عندما تختار الBounding Box ان يكون Automatic
فانه يقوم بتغليف الصورة حتى اخر جزء من البيكسل...انظر هنا
http://www.a.7m7.org/uploads/images/7m7.org-a4692867f4.gif

وعموما هذه الطريقة مفضلة اكثر لأنها من جهة تضبط التصادم وتجعله اكثر اتقانا كما انها تقلل من حجم الذاكرة المستخدمة كما يقول ملف المساعدة الخاص بالبرنامج.....ارجو ان تكون الفكرة واضحة.....نعود الى موضوعنا
الان ضع الخلفية الخاصة باللعبة والتى تحتوى على مرتفعات ومنخفضات وضعها داخل الroom
ثم ابدأ فى وضع obj_land داخل الroom وحاول ان تضعها على الخلفية مع مراعاة تضاريس الخلفية ويفضل استعمال زر Shift مع الضغط على الزر الايسر من الماوس
انظر الى الصورة
http://www.a.7m7.org/uploads/images/7m7.org-3f0d0e0602.gif


لاتنس جعل obj_land solid
الان ضع obj_player بعد ان تعلمنا عملها بالكامل فى الدرس السابق لكن هنا سنقوم بتغيير قيم صغيرة حتى يكون التصادم متقن اكثر فمثلا فى حالة القفز نضع الكود

{
if !place_meeting(x,y+8) then vspeed=-10
}
اما الباقى فهو كما تعلمناه من قبل
الان نجرب نتيجة العمل!!
تمام باذن الله
حسنا قبل ان انهى الدرس لى بعض الملحوظات احب ان انوه عنها:
اولا: حاول بقدر الامكان ان يكون ترتيب obj_land داخل المرحلة منسق ومستوى
انظر الصورة هنا
http://www.a.7m7.org/uploads/images/7m7.org-ca4ff88c0e.gif

وهذا لا يحدث خلل فى حركة الشخصية
ثانيا: اجعل sprite الخاصة بobj_land صغيرة لأنك ستملأ الغرفة بها فاذا كانت ابعاد صورتها كبيرة قد تبطأ اللعبة
انا افضلها 16X16 او 8X8

http://www.a.7m7.org/uploads/images/7m7.org-e4e5c2e35d.gif

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

PrinceOfSorrow
18-04-2008, 10:46 AM
السلام عليكم ورحمة الله وبركاته

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

بتوفيق وإلى الأمام

d.a.m.h
18-04-2008, 02:56 PM
السلام عليكم ورحمة الله وبركاته



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


بتوفيق وإلى الأمام

شكرا على الرد وارجو ان اكون وفقت فى شرحه....بالنسبة للعبة Joe2000 فلم تظهر بالمستوى الطلب نظرا لنقص الخبرة سواء فى البرمجة او تصميم المراحل لكنى لا انكر انى استفدت منها فى فهم كيفية تحريك اللاعب وكيفية عمل تصادم متقن...وطبيعى ان الفرد يتعلم من اخطاء العابه السابقة
فى انتظار Masked Dragon....والسلام عليكم

Prince Of Pain
01-05-2008, 10:57 AM
مشكووووووووور على الدرس كنت منتظره منذ زمن.....
........حاليا اعد مفاجئة للمنتدى.....

d.a.m.h
02-05-2008, 12:37 AM
مشكووووووووور على الدرس كنت منتظره منذ زمن.....
........حاليا اعد مفاجئة للمنتدى.....
الدرس ده انا كتبته على شرفك والمثال الموجود افضل من اللى عطيته لك مع شرح بالصور كمان :D:D...وفى انتظار المفاجئة

Prince Of Pain
02-05-2008, 09:42 PM
وفي مشكلة ماحد يقدر يحلها hspeed المتدرجة ...... متنفع على المرتفعات.....مهما سويت
لانها متدرجة....اتمنى نشوف حل لهذه المشكلة الصعبة هذه المشكلة عجزتني....مالها حل....-_-

d.a.m.h
04-05-2008, 12:31 AM
وفي مشكلة ماحد يقدر يحلها hspeed المتدرجة ...... متنفع على المرتفعات.....مهما سويت
لانها متدرجة....اتمنى نشوف حل لهذه المشكلة الصعبة هذه المشكلة عجزتني....مالها حل....-_-
انا عملت مثال حليت فيه المشكلة...تحتاج متغير يسمى the_x يزداد بالضغط على ازرارالاتجاهات(يمين او يسار) مع ضبط بعض القيم الخاصة بالتصادم.....حمل هذا المثال الموجود بالمرفقات وادرسه جيدا واى مشكلة اسأل....وشكرا انك نبهتنى لهذه النقطة

Prince Of Pain
05-05-2008, 04:17 AM
اشكرك اخي على ابداعك هذا......
بس اتمنى انك تخلي اول ما يفك الزر يمين او يسار تبدأ السرعة تتناقص حتى يتوقف.....^^
اتمنى تحلها...ارجوك.

Prince Of Pain
05-05-2008, 04:22 AM
اتمنى تحلها بسرعة

d.a.m.h
11-05-2008, 12:44 AM
اشكرك اخي على ابداعك هذا......
بس اتمنى انك تخلي اول ما يفك الزر يمين او يسار تبدأ السرعة تتناقص حتى يتوقف.....^^
اتمنى تحلها...ارجوك.
هذه المشكلة لها حل لكنه غير دقيق...جرب هذا المثال

Prince Of Pain
13-05-2008, 09:32 PM
THANKS
VERY MACH
GOOD LUCK

Prince Of Pain
13-05-2008, 09:35 PM
عموما تمكنت من تنضيم IMAGE_ANGLE بنسبة 95% على سطحية الأرض بس الأمر تطلب وجود سكربت
.....اشوف واراجع حتى اتوصل لابسط طريقة ممكنة...

.TJ
24-05-2008, 06:17 PM
كان ودي استفيد من الدرس لكن للاسف الصور غير ظاهرة

تحياتي لك

d.a.m.h
24-05-2008, 08:13 PM
كان ودي استفيد من الدرس لكن للاسف الصور غير ظاهرة

تحياتي لك
مع ان الصور تعمل عندى...سأحاول رفعها على موضع zshare.com لكن تأكد اولا انه غير محجوب عندك...وشكرا

.TJ
27-05-2008, 08:20 PM
اهلا عزيزي
zshare.com ليس محجوب لو تتكرم وترفع علية اكون شاكرا لك واسف على تعبك

.TJ
01-06-2008, 10:51 PM
اهلا عزيزي
zshare.com ليس محجوب لو تتكرم وترفع علية اكون شاكرا لك واسف على تعبك

d.a.m.h
03-06-2008, 07:17 PM
بسم الله الرحمن الرحيم
اليوم اتكلم عن درس جديد يهم مستعملى الجيم ميكر وبالتحديد محبى تصنيع العاب البلاتفورم.
دائما ما نجد العاب البلاتفورم التى نصنعها نمطية حيث اللاعب يسير فى اتجاه واحد على ارضية مستوية ويقفز من فوق حفر وعوائق ثم يقابل الوحش.
السؤال هنا : لماذا نجعل ارضيتنا مستوية دائما ولا نجعلها ذات تضاريس من مرتفعات ومنخفضات مثل لعبة Sonic الشهيرة؟؟ فهذا على الاقل يعطى نوع من الواقعية على اللعبة.
لنبدأ بعمل شكل جديد لألعاب البلاتفورم عندنا...ولنشرح طريقة عمل تضاريس يتحرك عليها اللاعب.
الفكرة المستخدمة:

اذا نظرنا الى هذه الصورة:
http://www.zshare.net/image/12999784b4cf38dd/
قيمتى snapX و snapY هى قيم تحدد اقل مسافة ممكنة تفصل بين اثنين objects فى غرفة واحدة
انظر الى هذه الصورة
http://www.zshare.net/image/12999808087f03a0/

http://www.zshare.net/image/1299982585b9f3c2/

لذا فان هناك نوع من التقييد لمصمم اللعبة عندما يرغب فى وضع objects بينها مسافة صغيرة جدا
اول شىء سنفعله هو وضع قيمتى snapX و snapY بواحد كما بالشكل
http://www.zshare.net/image/12999838cf45fb3b/

ضع الobject الخاصة بالارضية ولتكن obj_land
وادخل ايضا صور اللاعب واجعل الBounding Box متساوى وكذلك نقطة الOrigin
انظر الى هذا الدرس (http://montada.com/showthread.php?t=573572) اذا لم تكن تعرف كيف تضبطها
الخطوة الثانية هى ان تزيل علامة صح من على هذا المربع
http://www.zshare.net/image/129998621dde8c55/

.....لكن ما معنى هذا المربع؟؟
قلت فى درسى السابق ان الBounding Box الموجود حول الobject هو الذى يحدث التصادم لكن فى حالة ان تضع علامة صح على هذا المربع فان التصادم سيكون بين اخر جزء من البيكسل الخاص بالصورتين....انظر الى هذه الصورة لتفهم
http://www.zshare.net/image/129998877cf43015/

اما اذا ازلت علامة صح من المربع المشار اليه فان التصادم سيصبح بين المربعين كما بالشكل
http://www.zshare.net/image/129998961a145f24/

وهذه النقطة لم انبه لها فى درسى السابق والسبب انه عندما تختار الBounding Box ان يكون Automatic
فانه يقوم بتغليف الصورة حتى اخر جزء من البيكسل...انظر هنا
http://www.zshare.net/image/12999911e73d21cd/

وعموما هذه الطريقة مفضلة اكثر لأنها من جهة تضبط التصادم وتجعله اكثر اتقانا كما انها تقلل من حجم الذاكرة المستخدمة كما يقول ملف المساعدة الخاص بالبرنامج.....ارجو ان تكون الفكرة واضحة.....نعود الى موضوعنا
الان ضع الخلفية الخاصة باللعبة والتى تحتوى على مرتفعات ومنخفضات وضعها داخل الroom
ثم ابدأ فى وضع obj_land داخل الroom وحاول ان تضعها على الخلفية مع مراعاة تضاريس الخلفية ويفضل استعمال زر Shift مع الضغط على الزر الايسر من الماوس
انظر الى الصورة
http://www.zshare.net/image/12999935e5d25bc2/


لاتنس جعل obj_land solid
الان ضع obj_player بعد ان تعلمنا عملها بالكامل فى الدرس السابق لكن هنا سنقوم بتغيير قيم صغيرة حتى يكون التصادم متقن اكثر فمثلا فى حالة القفز نضع الكود


{




if !place_meeting(x,y+8) then vspeed=-10

}




اما الباقى فهو كما تعلمناه من قبل

الان نجرب نتيجة العمل!!
تمام باذن الله
حسنا قبل ان انهى الدرس لى بعض الملحوظات احب ان انوه عنها:
اولا: حاول بقدر الامكان ان يكون ترتيب obj_land داخل المرحلة منسق ومستوى
انظر الصورة هنا
http://www.zshare.net/image/12999953faac3126/

وهذا لا يحدث خلل فى حركة الشخصية
ثانيا: اجعل sprite الخاصة بobj_land صغيرة لأنك ستملأ الغرفة بها فاذا كانت ابعاد صورتها كبيرة قد تبطأ اللعبة
انا افضلها 16X16 او 8X8

http://www.zshare.net/image/1299997745c0fa1f/

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

.TJ
03-06-2008, 08:30 PM
للاسف لم تظهر

لو تقدر تحط الموضوع بملف وورد وترفعها يكون افضل
تعبتك معاي كثير

.TJ
03-06-2008, 08:31 PM
للاسف لم تظهر

لو تقدر تحط الموضوع بملف وورد وترفعها يكون افضل
تعبتك معاي كثير

d.a.m.h
03-06-2008, 10:37 PM
للاسف لم تظهر

لو تقدر تحط الموضوع بملف وورد وترفعها يكون افضل
تعبتك معاي كثير
فكرة عبقرية :biggthump:biggthump....حمل الملف من المرفقات
ياراجل ماتقولش تعب ولا حاجة ...انت تعبك راحة

.TJ
04-06-2008, 09:23 AM
شكر عزيزي على الشرح وبضيف هذي الحركة للعبتي القادمة

ابغى رايك بالديمو من هنا (http://www.montada2.com/showthread.php?t=592087)
يهمني رأيك

تشكر