الشبكة العربية لمطوري الألعاب

خبير  أحمد عزالدين مشاركة 31

السلام عليكم

كنت أجرب الكلاس AGDN Polyline وقمت بنصف المهمة
فهل يمكنني العمل عليها؟

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 32

وفي 25/شوال/1431 06:42 م، ظهر شبح ابتسامة على وجه ahmed ezz وهو يقول:

السلام عليكم

كنت أجرب الكلاس AGDN Polyline وقمت بنصف المهمة
فهل يمكنني العمل عليها؟

هي لك وأنت لها 😄

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 33

السلام عليكم

تم بحمد الله تنفيذ المطلوب ورفع اخر التعديلات

لدي بعض الملاحظات:
- الان الكود يقوم برسم الانبوب دون استخدام المظلل (بالغاء تفعيل الـ EnableGridShader) ويقوم باستخدام الكلاس AGDN polyline وذلك لاستخراج النقاط الموجودة على حواف الانبوب ثم يقوم برسم مكعب عند الحافة رقم صفر ويتم نقل المكعب من حافة لاخرى باستخدام أزرار الاتجاهات لليمين واليسار
- الكود يقوم ايضا برسم خطوط توضيحية (يمكن الغاؤها فيما بعد) وذلك من مركز الانبوب لكل نقطة على حافة الانبوب

انظر الشكل التالي



الان هناك شئ أعتقد أن فيه مشكلة وهو أنه لما أقوم بتفعيل استخدام المظلل
يكون شكل اللعبة حيث لا تتطابق خطوط شبكة المظلل مع الخطوط التوضيحية المرسومة من مركز الانبوب لكل نقطة على حافته
 ولحل هذه المشكلة حاولت ان اعدل قيم المتغير desnsityXY وتحديدا العنصر X والمسئول عن عدد الخطوط التي تظهر
لكن المشكلة أنه يبدو أن المظلل لا يقوم برسم عدد من الخطوط بشكل واضح بمسافات ثابتة بين الخطوط ، بمعنى اخر ان المظلل يقوم بزيادة عدد الخطوط
بشكل لم أفهمه بشكل واضح

لذا لم يمكنني اصلاح هذه المشكلة بجعل خطوط الشبكة الناتجة من المظلل تنطبق مع الخطوط التوضيحية
لكن لما جربت وضع قيمة المتغير كالاتي
densityXY.X = 1.57f;
تنطبق الخطوط ولكنها ناقصة

هل من توجيه نحو المشكلة؟

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 34

السلام عليكم أخي أحمد،
 
هناك بضعة ملاحظات على المهمة:
 
1- المطلوب هو "تصدير" مكعب وليس بناؤه يدوياً في الكود. الهدف هو أن يكون هذا تمهيداً لاستبدال المكعب بمجسم مركبة اللاعب لاحقاً.
 
2- المكعب يقفز قفزاً بين الرؤوس، والمطلوب هو الحركة الناعمة على كامل محيط الأنبوب. دقق أكثر في إجراءات AGDNPolyline، ستجد ما يعينك.
 
3- الأداء قـُـتـِل قتلاً!!! الآن كل لقطة تستهلك أكثر من 40 ميللي ثانية!!!  تحقق مما تفعله في كل لقطة وأزل سبب البطء.
 
4- الكود الخاص بكشف الأخطاء يجب أن يوضع ضمن معرف DEBUG كي لا يدخل في اللعبة النهائية.
 
5- تأكد من إزالة كافة التحذيرات والأخطاء أثناء ترجمة اللعبة. لا نريد أي منها على الإطلاق في أية لحظة من المشروع في أي من نمطي البناء Debug و Release.
 


في 26/شوال/1431 05:54 م، عقد ahmed ezz حاجبيه بتفكير وقال:

الان هناك شئ أعتقد أن فيه مشكلة وهو أنه لما أقوم بتفعيل استخدام المظلل
يكون شكل اللعبة حيث لا تتطابق خطوط شبكة المظلل مع الخطوط التوضيحية المرسومة من مركز الانبوب لكل نقطة على حافته
 ولحل هذه المشكلة حاولت ان اعدل قيم المتغير desnsityXY وتحديدا العنصر X والمسئول عن عدد الخطوط التي تظهر
لكن المشكلة أنه يبدو أن المظلل لا يقوم برسم عدد من الخطوط بشكل واضح بمسافات ثابتة بين الخطوط ، بمعنى اخر ان المظلل يقوم بزيادة عدد الخطوط
بشكل لم أفهمه بشكل واضح

أعتقد أن المسألة مسألة عيارات لا أكثر. لا تقلق نفسك بشأنها الآن...

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 35

السلام عليكم

لقد قمت بالتعديل والان تم تنفيذ كافة التعديلات المطلوبة
وقمت برفع التعديلات

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 36

أحمد، ما الفائدة من تمرير متغير GameTime في كافة إجراءات اللعبة تقريباً؟ 😲

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 37

لاننا غالباً نحتاج المتغير gameTime لمعرفة ال deltaTime واعتقدت أنه يفضل أن يتم تمريره للدوال Update و Draw
كما هو الحال في كلاس اللعبة الرئيسي Sudum


بالطبع قد لا نحتاجه الان في اغلب حالات اللعبة ، ولكني اعتقدت أيضاً أنه مفيد لبعض الحالات فقمت بتمريره من البداية لجميع حالات اللعبة في دالتي ال update و ال draw

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 38

وفي 28/شوال/1431 06:18 م، قال ahmed ezz متحمساً:

لاننا غالباً نحتاج المتغير gameTime لمعرفة ال deltaTime واعتقدت أنه يفضل أن يتم تمريره للدوال Update و Draw

لكننا نعرف فرق الوقت في كل نداء تحديث بالفعل. إنه دائماً 1/60.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

خبير  أحمد عزالدين مشاركة 39

إذن فأعتقد أن التعديل بالفعل ليس له فائدة كبيرة حالياً
لم أنتبه الى أن فرق التوقيت ثابت بقيمة 1/60 وفكرت في تمرير المتغير كما يحدث في كلاس اللعبة الرئيسي

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

خبير مدير وسام البهنسي مشاركة 40

في 29/شوال/1431 06:35 ص، غمغم ahmed ezz باستغراب قائلاً:

إذن فأعتقد أن التعديل بالفعل ليس له فائدة كبيرة حالياً

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

وسام البهنسي
مبرمج في إنفيديا وإنفريمز