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

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

حسناً، أعتقد إذن أننا سنعتمد خيار بناء البرنامج بأنفسنا. سأقوم بوضع تخطيط واجهة البرنامج بقلم الرصاص وأضع التخطيط هنا لنبدأ في التنفيذ وفقاً له... انتظروني ☺

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

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

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


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

محترف  انس مشاركة 13

السلام عليكم.
لدي سؤال و اقتراح و تعليق :

السؤال : ما دور : القاذف ؟
الاقتراح : اقترح ان يتم برمجة خاصية الالسنة للمحرر(Tabs) فمن المستحسن اي يستطيع المصمم العمل على عدة مراحل في نفس الوقت.

التعليق:
لدي فكرة قد تكون متأخرة نوعا ما، لكن ساطرحها رغم ذلك :
 لاحظت ان الحدث الخاص بالاعداء عام، و ليس مرنا (على حسب فهمي على الاقل 😄 )  لذا اقترح امكانية تعديل الاحداث بنفس الطريقة التي تعدل بها المرحلة مثال :
-من الثانية 3-10 : ظهور الاعداء
نفس الحدث السابق الذي يستغرق 7ثواني نقوم بمايلي :

0 - 2 ثانية : ظهور عشوائي للاعداء من الصنف 1 ( لتكن هناك خاصية التردد لهذا الصنف : 2عدو/ثانية)
3 - 5 ثواني : ظهور عشوائي للاعداء من الصنف 1 و الصنف 2 ، بالتردد التالي : الصنف 1 : 0.5عدو/ثانية، الصنف 2 : 2عدو/ثانية)
5 - 7 ثواني : ظهور عشوائي للاعداء من الصنف 2 و الصنف 3 ، بالتردد التالي : الصنف 2 : 1عدو/ثانية، الصنف 3 : 2عدو/ثانية)

مارأيكم ؟
ماعدا هذا فانني ذاهب بلوحة الفنان وسام الى احد المعارض العالمية☺
سلام

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

في 16/صفر/1432 07:59 ص، عقد انس حاجبيه بتفكير وقال:

السؤال : ما دور : القاذف ؟

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


وفي 16/صفر/1432 07:59 ص، قال انس متحمساً:

الاقتراح : اقترح ان يتم برمجة خاصية الالسنة للمحرر(Tabs) فمن المستحسن اي يستطيع المصمم العمل على عدة مراحل في نفس الوقت.

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


وفي 16/صفر/1432 07:59 ص، ظهر شبح ابتسامة على وجه انس وهو يقول:

لاحظت ان الحدث الخاص بالاعداء عام، و ليس مرنا (على حسب فهمي على الاقل 😄 )  لذا اقترح امكانية تعديل الاحداث بنفس الطريقة التي تعدل بها المرحلة مثال :
-من الثانية 3-10 : ظهور الاعداء
نفس الحدث السابق الذي يستغرق 7ثواني نقوم بمايلي :

0 - 2 ثانية : ظهور عشوائي للاعداء من الصنف 1 ( لتكن هناك خاصية التردد لهذا الصنف : 2عدو/ثانية)
3 - 5 ثواني : ظهور عشوائي للاعداء من الصنف 1 و الصنف 2 ، بالتردد التالي : الصنف 1 : 0.5عدو/ثانية، الصنف 2 : 2عدو/ثانية)
5 - 7 ثواني : ظهور عشوائي للاعداء من الصنف 2 و الصنف 3 ، بالتردد التالي : الصنف 2 : 1عدو/ثانية، الصنف 3 : 2عدو/ثانية)

مارأيكم ؟

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

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

محترف  انس مشاركة 15

وفي 21 يناير 2011 08:02 م، قال وسام البهنسي متحمساً:

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

اذا كانت "برمجيا" بسيطة التطبيق، فانا افضل دعم هذه الخاصية، انا شخصيا لا احب فتح نفس البرنامج مرتين. اما اذا كانت معقدة فلا بأس.



وفي 21 يناير 2011 08:02 م، ظهر شبح ابتسامة على وجه وسام البهنسي وهو يقول:

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

نعم الفكرة قريبة جدا الى ماذكرته استاذ وسام (ان لم اقل هي الفكرة ذانها) الشيئ الوحيد الذي اريد اضافته : هو اضافة حدث "عام" يعتبر حاملا لاحداث خاصة. مثلا :
الحدث العام : ظهور الاعداء..........خاصيته الوحيدة(على سبيل المثال) : زمن الاظهار.
الاحداث الخاصة التي يمكن اضافتها للحدث العام "ظهور الاعداء" :
 -ظهور العدو من الصنف 0 ... الخاصية : زمن الاظهار و التردد، الاحداثيات، عدد الطلقات المحتملة...الخ
 - ظهور العدو من الصنف 1 ... نفس الشيئ
....
اما بما قصدته بـ : "عام و ليس مرنا" هو لانني ظننت ان "حدد الحدث" هي المسؤولة على انشاء الاعداء، لم اكن اعرف ان القاذف عدو من الاعداء التي تشملهم اللعبة 😄 ...اعتذر ان سبب سوء فهمي هذا الى الازعاج

سلام

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

السلام عليكم

شكراً على التخطيط المبسط أخي وسام 😄
أعتقد أن ما ذكرته كافي لنبدأ في تطوير المحرر إن شاء الله

سأبدأ في إنشاء مشروع المحرر وسأقوم برفعه قريباً إن شاء الله

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

على كل حال سأبدأ بتنفيذ التخطيط المقترح وتصميم واجهة البرنامج، لتكون جاهزة إن شاء الله لبرمجتها،
ولكنني سأترك الجزء الخاص بـ "خط الزمن" حتى نتفق على طريقة تنفيذه (لدي اقتراحات لتنفيذ هذا الجزء، وسأذكرها لاحقاً إن شاء الله)

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

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

أما في 16/صفر/1432 05:47 م، فقد تنهد ahmed ezz بارتياح وهو يرد:

شكراً على التخطيط المبسط أخي وسام 😄
أعتقد أن ما ذكرته كافي لنبدأ في تطوير المحرر إن شاء الله

سأبدأ في إنشاء مشروع المحرر وسأقوم برفعه قريباً إن شاء الله

ممتاز!
 


في 16/صفر/1432 05:47 م، غمغم ahmed ezz باستغراب قائلاً:

1- سنحتاج للتفكير في طريقة تخطيط وحفظ بيانات المرحلة في ملفات يمكننا قراءتها لاحقاً من اللعبة
وأقترح هنا أن يتم تطوير كلاس برمجي مستقل يقدم خدمات حفظ وقراءة ملف بيانات المرحلة، بحيث يمكننا أن نعيد استخدام هذا الكلاس مباشرة ضمن مشروع اللعبة.

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

enum LevelEvent
{
   Shooter, // القاذف، قيمته 0
   Crawler, // المتسلق، قيمته 1
   HeavyGuns, // المدجج، قيمته 2
   BossMasterMind, // الزعيم الذكي، قيمته 3
   BossSpeedster, // الزعيم السريع، قيمته 4
   RechargeUnit, // وحدة شحن سلاح خارق، قيمتها 5
}
 
فلو حفظنا القيم في ملف المرحلة، نحفظها برقمها، وعندها يجب الحفاظ على الترقيم... هممم... الآن السؤال يطرح نفسه، لم نحفظها بالأرقام؟ لم لا نحفظها بأسمائها؟ صحيح أن التحميل سيصبح أبطأ قليلاً، لكني أتحدى أن يكون مصدر بطء هائل في التحميل...
 


بتاريخ 16/صفر/1432 05:47 م، قطب ahmed ezz حاجبيه بشدة وهو يقول:

2- سنحتاج لتقسيم مهام المحرر، بحيث يمكن أن يعمل أكثر من شخص على تنفيذها

نعم، ممكن. هناك 3 جوانب. الواجهة العامة، الحفظ والتحميل، وتحكم شريط الزمن. نستطيع العمل على هذه الجوانب الثلاثة بالتوازي. فعلى من يرغب باستلام أحدها أن يعلن ذلك ويبدأ العمل... 
 

وفي 16/صفر/1432 05:47 م، أعرب ahmed ezz عن رأيه بالموقف كالآتي:

ولكنني سأترك الجزء الخاص بـ "خط الزمن" حتى نتفق على طريقة تنفيذه (لدي اقتراحات لتنفيذ هذا الجزء، وسأذكرها لاحقاً إن شاء الله)

نحن بالانتظار... ☺

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

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

السلام عليكم

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

في 22 يناير 2011 01:17 م، غمغم وسام البهنسي باستغراب قائلاً:

هناك 3 جوانب. الواجهة العامة، الحفظ والتحميل، وتحكم شريط الزمن. نستطيع العمل على هذه الجوانب الثلاثة بالتوازي. فعلى من يرغب باستلام أحدها أن يعلن ذلك ويبدأ العمل... 

سأعلن اختياري لأحدى المهمات قريباً إن شاء الله 😄
وسأوافيكم ببعض الأفكار حول تنفيذ بعض الأمور من وجهة نظري

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

محترف مشرف عبد اللطيف حاجي علي مشاركة 19

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

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

عبد اللطيف حاجي علي
مبرمج
In|Framez

مبتدئ  علي امين مشاركة 20

لست محترف كثيرا في برمجة الويندوس فورم و لكن أريد هذا :
تحكم شريط الزمن