السلام عليكم :
هذا الموضوع خاضع لقوانين قسم برمجة الألعاب .
هذه فكرة تطوير محرك ألعاب ثنائي البعد , العمل سيكون جماعي بحول الله وقوته , نعرف أن الاعمال الجماعية غالبا ما تفشل , لكن سنسعى وبكل ما أوتينا من قوة كأعضاء ، أن نقدم منتج متكامل , وسيتم ادارة المشروع بطريقة مختلفة عن السابق , وذلك بعد دراسة معمّقة لمعرفة أسباب فشل المشاريع السابقة ،وأسباب نجاح المشاريع البرمجية العالمية بعد الدخول فيها ومعرفة طريقة ادارتها ، اذا طبقنا ماسيتم اقتراحه , سنتمكن من اتاحة الفرصة لجميع الاعضاء بالمشاركة بفعالية ودون وجود أي تعارض بين الاعضاء بحول الله ، كل مانحتاجه , النيّة الطيبة ، والتغاضي عن الاخطاء البسيطة حتى ولو لم تكن الامور تسير كما تحب أنت أو ترغب .
مارأيكم باسم أندلس Al-Andalus كاسم حركي للمحرك الى أن ننتهي من اكماله .. بعدها سنتفق على الاسم النهائي .. نريد اسم للمحرك .. حتى نتمكن من اكمال النقاش والعمل .. فقط
مواصفات أساسية في المشروع :
- نوع المحرك: محرك ثنائي الأبعاد عام لجميع الألعاب الثنائية البعد .
- نظام التشغيل المستهدف : Windows XP/Vista - Linux .
- لغات البرمجة : C++ - C# - Java
- نوع المصيّر / المكتبات الرسومية : OpenGL For Java and C++ - Direct3d 9 for C++ - XNA For C Sharp
- المترجمات و المحررات : Visual Studio 2008- GCC - NetBeans
- سيتم استخدام المكتبات القياسية بكل لغة برمجية وذلك من أجل الملفات - النصوص - الحاويات مثال : FileReader - String - List , لذلك سنستخدم stl - java collection - c# collection
- مواصفات أخرى سيدعمها المحرك : OOP - Design Patterns - Scene Graph
- سيتم استخدام Win32 APIs - QT - SDL كأطر عمل في المحرك ( بعضها اختياري ) .
اذاً , سيتم اتاحة المشاركة لجميع الاعضاء تقريبا ، أي عضو يرغب في المشاركة يمكنه ذلك دون أي يكون للغة البرمجة أو المكتبة الرسومية أو نظام الشغيل أي تأثير .. طبعاً لايجب أن يدعم المحرك كل هذه اللغات ولا كل انظمة التشغيل .. بل يمكن أن يكون الناتج النهائي , محرك ألعاب باستخدام لغة السي بلس + ويندوز + OpenGL مثلا .. وذلك لو لم يتطوع شخص في القيام بالتطوير للمنصة المستهدفة .
سنقوم بحول الله باعتماد طريقة تقسيم المشروع الى جزيئات صغيرة ، كل جزء سنطلق عليه اسم package ( حزمة ) ، وهي تقابل namespace ، بحيث يكون لكل حزمة كلاسات - فئات معدودة - وكل حزمة من هذه الحزم سيتم افراد لها موضوع خاص وفق ترتيب معين ومجدول - بعد انتهاء المشروع سنقوم باعادة ترتيب هذه الحزم ودمجها .
المحرك سيصدر على نسختين .. النسخة الأولى 0.1 وتحتوي على هذه الحزم .. كل حزمة تقريبا .. سيتم افراد لها موضوع خاص
Al-Andalus Game Engine 0.1
- core (e.g. : Vector - Matrix - Log ... etc )
- io(e.g : FileInputStream - XMLWriter - TextStream - ZipStream .. )
- kernel (e.g : Device - KbInput - MouseInput - Timer.. )
- win32
- sdl
- qt
[*]gfx (e.g. : Graphics - Texture - Color - Material .. )
- renderer
- opengl
- direct3d9
- sdl
- xna
[*]image
[*]material
[*]font
[*]texture
- opengl
[*]scene ( e.g: ParentNode - CameraNode - SpriteNode ..)
- camera
- sprite
- particles
- ...
- win32
بعض الحزم لاتعمل الا على لغة برمجية معينة أو نظام تشغيل معين ... مثل xna للسي شارب للويندوز و sdl للغة السي بلس لنظام linux .
كل حزمة من هذه الحزم سيتم تطبيق الاتي عليها :
1- فتح موضوع جديد .
2- تحليل الفكرة من وراء الحزمة وماهي الكلاسات - الفئات التي ستحتويها .
3- تحليل كل كلاس- فئة لوحدهها ، وكتابة مواصفات Specification لكل فئة , بعد رسم العلاقات ( وراثة - واجهات .. الخ ) .
4- تعيين مهمة عمل impelemntation طبقا للمواصفات المتفق عليها لاعضاء محددين .
5- اعتماد الملفات المكتوبة كاصدار أولي .. ويخضع للمراجعة والتعديل لاصلاح المشاكل طوال فترة التطوير ..
6- ننتقل الى حزمة أخرى لمناقشتها .
مثال :
لنفرض أننا نريد تطوير الحزمة image .
1- نحدد الكلاسات والوجهات وهي ImageReader - ImageWriter - ImageBuffer .
2- نكتب مواصفات كل Method أو Function في الكلاس .. عملها + البارمترات المطلوبة + النتيجة + الاخطاء أو الاستثناءات التي ستنتج في حال الخطأ .
3- نعمل implementation ( كتابة الكود ) , بالطريقة المناسبة ...مثلا .. من الممكن أن نعتمد في السي بلس على مكتبة DevIL , أو أن نقوم بتطوير كلاسات خاصة بنا .. مثال : BmpReader - TgaWriter - .. وقد يختلف الكود وطريقة عمله من لغة برمجية الى أخرى وذلك لاختلاف المكتبات المستخدمة .. المهم هو توحيد الواجهة قدر الامكان .
من الممكن أن يظهر الموضوع معقد في البداية .. لكن هو مجرد نظام نتمنى ان نسير عليه .. وذلك حتى نصل الى النجاح المطلوب .. ولو جزمنا .. سننتهي خلال أقل من شهر بحول الله . أما فيما بتعلق بالامور المتطورة مثل الفيزياء أو الذكاء .. الخ , فسيتم تطويرها بالنسخة الثانية 0.2 .
المطلوب من الاخوان , التفاعل وابداء الرأي , والمساعدة على انجاح المشروع ... الموضوع مطروح بالكامل للنقاش .. أتمنى فقط المساهمة .. رجاءً .


