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

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

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

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

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

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

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

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

السلام عليكم.
فكرت في طريقتين :الاولى باستعمال الوقت، عند انطلاق اللعبة ينطلق عداد لحساب الوقت، و من خلال هذا العداد نقوم بانشاء الاعداء، الثانية 10 العدو أ، الثانية 12 العدو ب
الثانية، و التي تبدو لي سهل لمصمم المراحل هي مسار خيالي نضع فيه الاعداء، مادام العدو لم يصل الى نهاية المسار : لا تحديث و لا رسم، فقط نحدث مكانه فيما يخص المسار. اذا وصل الى النهاية : تحديث + اظهار

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

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

أما الطريقة الأولى (لاحظ انني تكلمت عن الثانية اولا) سيكون من الأسهل التعامل مع الكائنات عندما يتم صنعها برمجيا من الxna و لكن كيف سيتم بناء المرحلة ؟ هناك طريقة و هي حفظ كل المعلومات في ملف مثل متى سيظهر العدو و نوعوا و يتم قراءة الملف في اول المرحلة و بناء الأعداء , فهنا ستواجهنا صعوبة في البناء و أيضا سنحتاج الى الكثير من التجربة

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

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

برأيي أن نجعل (أو تجعلوا ☺ ) الموضوع عشوائياً نوعاً ما. بمعنى أن المستخدم يدخل معاملات معينة تحدد المنحى العام للأعداء وأنواعهم لكن الأعداء الذين يظهرون عشوائيون
بهذا لن يكون لعب المرحلة مرتين الأمر نفسه

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

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

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

وفي 11/صفر/1432 08:19 ص، أعرب انس عن رأيه بالموقف كالآتي:

الاولى باستعمال الوقت، عند انطلاق اللعبة ينطلق عداد لحساب الوقت، و من خلال هذا العداد نقوم بانشاء الاعداء، الثانية 10 العدو أ، الثانية 12 العدو ب

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

في 11/صفر/1432 08:19 ص، قال انس بهدوء وتؤدة:

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

هممم.. لا بأس بهذه. طالما أن العملية بصرية، فيستطيع المصمم فهم المرحلة كلها بمجرد النظر إلى المسار. 


في 11/صفر/1432 03:20 م، عقد علي امين حاجبيه بتفكير وقال:

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

مفهوم. ما أفكر به الآن هو أن لا نجعل تصدير الأعداء يتم مع المرحلة. مجسم المرحلة (الأنبوب) يتم بناؤه وتصديره لوحده. ومجسمات الأعداء أيضاً تصدر كل منها على حدة، ونقوم برمجياً ببث العدو المناسب في الوقت المناسب. لذلك يبقى علينا التفكير بطريقة حفظ معلومات توقيت بث الأعداء وكيفية تحريرها.


وفي 11/صفر/1432 03:20 م، قال علي امين متحمساً:

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

نعم. حفظ المعلومات في ملف دون تمثيلها بصرياً سيجعل التصميم صعباً جداً... 


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

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

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


أما في 11/صفر/1432 07:13 م، فقد تنهد عبد اللطيف حاجي علي بارتياح وهو يرد:

برأيي أن نجعل (أو تجعلوا ☺ ) الموضوع عشوائياً نوعاً ما. بمعنى أن المستخدم يدخل معاملات معينة تحدد المنحى العام للأعداء وأنواعهم لكن الأعداء الذين يظهرون عشوائيون
بهذا لن يكون لعب المرحلة مرتين الأمر نفسه

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

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

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

خبير  أحمد عبد الغني مشاركة 7

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

مين قدك يا ++C ؟

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

في 12/صفر/1432 02:24 م، غمغم أحمد عبد الغني باستغراب قائلاً:

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

فكرة ممتازة، ولعل برنامج أدوبي آفتر إيفكتس يقدم واجهة أفضل؟
 

 
السؤال الآن، هل يوجد برنامج ما يقدم هذه الواجهة ونستطيع استخدامه لتصميم المراحل؟ إن لم يوجد فسنضطر لبنائه بأنفسنا...

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

خبير  سعيد بسيوني مشاركة 9

لقيت موجود التحكم هزا جاهز لتحديد الفترات الزمنية:
 
http://www.codeproject.com/KB/selection/zzzzrangebar.aspx
 

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

السلام عليكم

بالرغم من أنني أعتقد أننا في الغالب سنضطر لبناء محرر الاحداث هذا بأنفسنا، ونتيح للمصمم رسم الاحداث بشكل بياني بسيط ومن ثم نقوم بحفظها في جدول بصيغة xml مثلا. إلا أنني أثناء بحثي وجدت أن هذا الرسم البياني يسمى Gantt chart
http://en.wikipedia.org/wiki/Gantt_chart

ووجدت البرنامج التي وهو برنامج مفتوح المصدر ويتيح إخراج الرسم البياني بصيغ متعددة، ولكني لم أجربه بعد
http://www.ganttproject.biz/

سمعت أيضا عن صيغة csv والتي يمكن تخريجها من عدة برامج لادارة المشاريع والمهام وتوقيتاتها مثل Microsoft project
ويمكننا قراءتها واستخدامها مباشرة

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

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