الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فكرة مشروع جماعي: تطوير محرك ألعاب ثنائي البعد .

مغلق
بدأه Abdullah.Alshammeri في 16 سبتمبر 2009 · 22 رد · 3,021 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :

هذا الموضوع خاضع لقوانين قسم برمجة الألعاب .

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

مارأيكم باسم أندلس 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

    [*]scene ( e.g: ParentNode - CameraNode - SpriteNode ..)

    • camera
    • sprite
    • particles
    • ...

بعض الحزم لاتعمل الا على لغة برمجية معينة أو نظام تشغيل معين ... مثل 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 .

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

تم تعديل هذه المشاركة بواسطة الشمري في 16 سبتمبر 2009 في 20:39

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

هنالك محرك جاهز مصنوع للموبايل

تصفح الموقع التالي

Voxel Engine

وهذه ديمو عنه عاليوتيوب

تحياتي

#3

أظن أن الهدف ليس الحصول على محرك جاهز لكن أن يجتمع أعضاء المنتدى في مشروع وتكون هناك نقاشات وكل واحد يستفيد من الآخر

لكن الأمر الذي لم أستطع فهمه هو كيف تريد أن تدمج ثلاث لغات في برنامج واحد؟؟

بالنسبة لC# في لينوكس فهناك مشروع mono لكن هناك من يقول أنه لا يتيح نفس إمكانات الframework في windows

#4

لم افصد ان نعتمد عليه ان هنالك محرك جاهز

بل دراسته و الاستفادة منه بما انه مفتوح المصدر.

#5

يا عيني عليك يا عبدالله دايماً تتحفنا بفكرة جديدة سير ونحن من خلفكم ...

اتمنى تكون بالـ C++ - OpenGL

مجرد رأي لحد يزعل...

تم تعديل هذه المشاركة بواسطة al-programmer في 17 سبتمبر 2009 في 19:59

## Al-programmer Will Coming ##

#6

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

هل الصورة واضحة يا اخوان .. تكلموا رجاء :(

تم تعديل هذه المشاركة بواسطة الشمري في 17 سبتمبر 2009 في 20:15

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7

واااااااااااااضح....لكن هل جعل المحرك متاح لأكثر من منصه/نظام تشغيل بنفس السهوله مثل جعله متاح لأكثر من لغه ومكتبه؟

If Games Are Fun.....So Making Games Making Fun

#8

طلب سخيف جدا جدا :) هل يمكن أن تكتب سطرين عن مفهوم محرك الألعاب (بشكل عالم) :( :(

طريقة ترتيب الأفكار و تنظيم المشروع المقترحه جميلة جدا و أتوقع لها النجاح.

أيضا المشروع بحاجة لدعم من هباجذة المنتدى، إضافة إلى أنه بحاجة إلى دعاية و إعلان (ممكن رابط في Header المنتدى) :)

بالتوفيق، طبعا هذا ليس ردي على المشاركة أو عدمها

#9
ame5r كتب:
واااااااااااااضح....لكن هل جعل المحرك متاح لأكثر من منصه/نظام تشغيل بنفس السهوله مثل جعله متاح لأكثر من لغه ومكتبه؟

الفكرة هي بالتالي :

- مناقشة المحرك جزء جزء .

- كتابة مواصفات المحرك .. مثلا نقول أننا نحتاج الى class لتحميل الصور ... يحوي على دالة اسمها load .

- يتبرع كل شخص بتحويل هذه المواصفات الى كود ( هنا .. لانحتاج الى خبير .. لان الخبراء شاركوا في النقطة السابقة .. وشرحوا كل شيء .. لذلك العملية هنا مجرد تحويل الكلام الى كود .. السي شارب لها طريقة - الجافا لها طريقة .. الخ ) .

لذلك عندنا ثلاث مشاريع :

1- مشروع لدعم لغة السي بلس و OpenGL و DirectX ( يمكن بسهولة ان نقوم بذلك .. انظر كيف قام بها المحرك irrlicht ) .

2- مشروع لدعم لغة السي شارب و xna ( اذا لم يتطوع أحد يتم تعليق هذا المشروع )

3- مشروع لدعم الجافا و opengl ( اذا لم يتطوع احد .. يتم تعليق هذا المشروع )

المحرك ممكن يدعم أكثر من لغة واكثر من نظام اذا أحب أحد ذلك .

وممكن يدعم لغة ومكتبة واحدة .. اذا لم يتطوع أحد .

اقتباس
هل يمكن أن تكتب سطرين عن مفهوم محرك الألعاب

تستطيع أن تقول .. تغليف الكود على شكل كلاسات ودوال تشمل ( الرسوميات - الرياضيات - الذكاء ) .. بشكل بسيط وميسر .

فمثلا في xna لايوجد طريقة واضحة لدعم اللغة العربية فيها .. يمكن أن تقدم كلاس Font يعالج هذه المشكلة .

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

ولانه يوجد عدة أسطر لعملية استيراد وعرض الصورة .. يمكن أن تختصر ذلك في xna فتكتب :

Image image = new Image("x.bmp");
Graphics graphics = Device.getGraphics();
graphics.drawImage(image,x,y);

ستتضح الأمور عندما نبدأ .. لكن نحتاج الى مزيد من الخبراء :D .

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

تم تعديل هذه المشاركة بواسطة الشمري في 17 سبتمبر 2009 في 22:38

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#10
اقتباس
طبعا يااخوان .. الامر هنا ليس طلب اعلان مشاركة أو لا .. يمكنك أن تدخل في أي نقطة في المشروع ..وتطرح رأيك ومحاولتك .. أو أن تترك المشروع برمّته ولا تشارك فيه .. نحن هنا لا نقوم بكتابة أسماء من يشارك ومن لايشارك .. فقط نريد طلب رأي والمشاركة باي شيء مفيد .. يعني لايوجد أحد يربطك بالمشروع .. يعني لازم تشارك بالقوّة والا فأنك خائن

أعجبتني هذه :D

#11
اقتباس
1- مشروع لدعم لغة السي بلس و OpenGL و DirectX ( يمكن بسهولة ان نقوم بذلك .. انظر كيف قام بها المحرك irrlicht ) .

2- مشروع لدعم لغة السي شارب و xna ( اذا لم يتطوع أحد يتم تعليق هذا المشروع )

3- مشروع لدعم الجافا و opengl ( اذا لم يتطوع احد .. يتم تعليق هذا المشروع )

اذاً على كذا يجب فتح ثلاثة مواضيع حتى يتم التركيز اكثر المشروع ..

## Al-programmer Will Coming ##

#12

لا .. سيتم فتح أكثر من 10 مواضيع .. كل موضوع سيناقش حزمة معينة من المشروع .. اقرأ الموضوع مرة أخرى بتركيز :D ..

كل موضوع سيمر بأربع مراحل :

1- التحليل ومعرفة ماذا نريد من الحزمة التي نناقشها.

2- كتابة المواصفات specification بالتفصيل .

3- implementation اي كتابة الكود ( كل شخص يتولى مهمة معينة .. بأي لغة برمجية وبأي مكتبة ) .

4- الاختبار - اختبار الكود

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

هل هناك أي أسئلة او ملاحظة أو اقتراح قبل أن نبدأ ..

تم تعديل هذه المشاركة بواسطة الشمري في 18 سبتمبر 2009 في 04:14

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#13
اقتباس
3- implementation اي كتابة الكود ( كل شخص يتولى مهمة معينة .. بأي لغة برمجية وبأي مكتبة ) .

اعتقد أنا ان في هذي المرحلة اذا لم يكن هناك تقسيم سيضيع OpenGL مع DirectX و C++ مع Jafa

اقتباس
يبدو أنني فشلت كالعادة في ايصال الفكرة للكل

بالعكس يا عبدالله والله اني افهم على دروسك اكثر من غيرك والله يوفقك ...

## Al-programmer Will Coming ##

#14
اقتباس
اعتقد أنا ان في هذي المرحلة اذا لم يكن هناك تقسيم سيضيع OpenGL مع DirectX و C++ مع Java

قد يكون كلامك صحيح .. همم .

ولكن لو وضعنا لكل لغة ومكتبة موضوع لضاع الأعضاء أيضا ...

الان سيكون لدينا حوالي 11 موضوع , بعد أن يعرف كل عضو ماله وماعليه نستقبل الأكواد .. لذلك من الممكن أن يستفيد كل شخص من كود الاخر حتى لو كان بلغة أخرى .. فاللغات متقاربة .

سنرى ان شاء الله أي مشاكل وتحصل في أول موضوع ونتفاداها .. هل لديك اقتراح أفضل ..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#15

بسم الله الرحمن الرحيم

فكرة جميله يا عبد الله و لكن لى تعليق (إن سمحت لى بالطبع)

1 - الهدف من المشروع هو انتاج محرك ثنائى الأبعاد عام لكل الألعاب او البرامج التى تحتاج لمحرك من هذا النوع و ايضا سيعمل المحرك على لينوكس و ويندوز كبدايه و بالتالى اللغه المشتركه بين تلك الأنظمه هى الـ C++ و لا تنفع لا الجافا و لا السى شارب و السبب فى ذلك أنهم ByteCode و هذا قد يقلل من كفائة المحرك حيث اننا نريده ان يعمل بأقصى سرعه و هذا غير متوفر إلا للـ C++ و C و Assembly.

2 - و حيث اننا نتكلم عن مبرمجى العاب سيقوموا بصناعة محرك و بالتالى ستعتمدوا على API موجوده و لن تقوموا بصناعة واحده جديده و المتوفر لدينا هو DirectX و OpenGL و حيث ان الـ OpenGL اشمل على كل نظم التشغيل لذا فمن الأفضل التعامل معها و ترك الـ DirectX و السبب فى ذلك انه عندما نركز على API معينه سنقوم بإستخدام كامل امكانياتها على الإطلاق و سيكون تركيزنا عليها و لن يحدث اى تشتت لنا.

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

قمت بدراسة Framework عديده و قد احببت منهم الـ Dot Net لتنظيمها و اسلوبها الجميل فى ترتيب الفئات و الوجهات و الـ Enums و غيرهم لذا اتمنى ان نصنع المحرك على غرار الـ Dot Net و على الرغم من حبى للـ DirectX أرجو ان نتركها و نستخدم الـ OpenGL حتى نوحد لغة التخاطب داخل المشروع.

توجد لدى بعض الأفكار الأخرى و سأضعها لكم بعد صلاة الفجر

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 18 سبتمبر 2009 في 04:57

مدونتي: C++ Tips and Tricks

#16

جميل .. سأوضح الهدف من كثرة اللغات والمكتبات ,

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

- سيتم توحيد تصميم الكود , بحيث تكون واجهة المحرك متوافقة 90% تقريبا .. مع كل اللغات .. حيث سنعتمد على البرمجة الكائنية الخالصة OOP مع بعض مفاهيم Design Patterns ليكون تصميم المحرك تقريبا يخضع لهيئة واحدة .. بالتالي المستخدم النهائي للمحرك لن يلاحظ أي اختلاف .

- implementation يختلف من لغة لاخرى ومن مكتبة لاخرى ( opengl vs dx مثلا ) , وهذا لايهمنا .

- يمكن بسهولة الجمع بين OpenGL و DirectX بنفس المشروع .. في لغة السي بلس .. وذلك بأن نصمم واجهات معينة interface ونطلب من كل مهتم عمل implementation لها .. ونستطيع وبسهولة أيضا ترجمة الكود بتغيير سطر واحد في linux أو windows .. المهم أن يكون الكود يعتمد على اللغة والمكتبات القياسية Standard .

- لايمكن اسقاط أي مكتبة .. المجال مفتوح لجميع الاعضاء .. لمن أحب المشاركة .

- الفكرة .. هي باتباع هذا الاسلوب :

1- التحليل ومعرفة ماذا نريد من الحزمة التي نناقشها. ( لا علاقة لأي لغة أو مكتبة بهذا )

2- كتابة المواصفات specification بالتفصيل .( لا علاقة لأي لغة أو مكتبة بهذا )

3- implementation اي كتابة الكود( هنا .. كل شخص يتبرع بتحويل ما سبق الى كود حسب لغته التي يريد + مكتبته التي يريد .. سننسق الأمور بحيث كل عضو يهتم بجزئية معينة يعرف لها ).

4- الاختبار - اختبار الكود .

- لمحركات الألعاب اسلوب خاص في التصميم .. في الغالب يعتمدون على مبدأين :

1- التغليف encapsulation

2- مفهوم Abstract factory pattern

حيث باستخدام هذين المبدأين يمكن دعم أي نظام تشغيل وأي مكتبة رسومية أو غير رسومية .

ستتضح الأمور اذا بدأنا المشروع بحول الله .. سأضع قبل ذلك موضوع نناقش فيها الأعراف التي سنسير عليها أثناء المشروع مثل تسمية المتغيرات + طريقة النقاش .. حتى تكون الأمور واضحة .

الخلاصة :

لاتقلقوا من أي تعارض أو لخبطة بسبب المكتبات أو لغات البرمجة .. ستكون الأمور تحت السيطرة بحول الله :) .

بانتظار أي ملاحظة أو اعتراض :) .. من المهم سماع أي ملاحظة .

تم تعديل هذه المشاركة بواسطة الشمري في 18 سبتمبر 2009 في 05:39

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#17

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

انا اعمل على مكتبه خاصة بى و استخدم فيها Assembly و C++ و C و السبب فى ذلك ان الـ Object Code الناتج من هؤلاء يمكن دمجه داخل ملف تنفيذى واحد (ايا كان امتداده) و لهذا فأنا استخدمهم بحريه.

عندما نقوم بإستخدام الـ C# و Java مع C++ اى لغه منهم ستكون هى الأساس و كيف سيتم توحيد الـ Object Code هذا ما لا افهمه.

نقطه اخرى إذا لاحظت ستجد ان XNA و Managed DirectX اساسهم هو الـ Unmagaed COM DirectX و SDL اساسها الـ OpenGL ايضا كل منهم يعتمد على اسلوب مختلف فى عملية حجز مساحة الذاكره له او عمل Initialize له ايضا الدوال و الفئات تعمل بإسلوب مختلف لكل منهم حتى مع وجود اساس واحد و بالتالى عند استخدام كل هؤلاء داخل مشروع واحد او برنامج واحد او ايا كان الإسلوب الذى سيتم اتباعه لدمجهم ستصبح فوضى عارمه و السبب فى ذلك لأن بعض الـ API مبنيه فوق أخرى و تلك الأخرى بدورها سيتم استخدامها بجانب واحده اخرى .....

عندما تحاول الشركات الكبيره مثل CAPCOM او UBISoft او EA صناعة لعبه فإنه يتم صنع واجهه واحده و يتم استخدامها مع الـ API المتاحه لكل Platform لإن الـ API للبلاى ستيشن مختلفه عن Linux و عن و يندوز و عن و عن وعن ....

فى رأيي اذا اردت اتاحة الفرصه لكل تلك اللغات و كل تلك الـ API يتم صنع محرك بنفس الإسم و بنفس الواجهه و لكن كل واحد فى لغته اى C# مع XNA و C++ مع DirectX و واحد اخر مع OpenGL و Java مع OpenGL.

اه نسيت C++ مع SDL.

إذا كان ما قلته بالأعلى هو ما سيتم تنفيذه فصدقنى سيتم العمل بالمشروع لفتره و سيترك و السبب فى التعدد و الكثره و كما قلت كل اثنان او ثلاثه لهم ما يفضلوه، انا جربت هذا النظام من قبل و لكن حتى لا تظن انى اهدم من عزيمتك انا معكم بلغة الـ C++ و DirectX او OpenGL داخل مكتبة الرياضيات.

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 18 سبتمبر 2009 في 06:26

مدونتي: C++ Tips and Tricks

#18

قد أكون أكثر نفعا عندما تبدوا العمل على النسخه 0.2

ولكن سأبدل ما في وسعي للمساعده

#19
اقتباس
فى رأيي اذا اردت اتاحة الفرصه لكل تلك اللغات و كل تلك الـ API يتم صنع محرك بنفس الإسم و بنفس الواجهه و لكن كل واحد فى لغته اى C# مع XNA و C++ مع DirectX و واحد اخر مع OpenGL و Java مع OpenGL.

بالظبط هذا ما أقصد أخي .

كل لغة لها مشروع منفصل تماما .. وهذا شيء بديهي .. من أراد أن يطور نسخة للسي شارب مع XNA حياه الله .. ومن لم يرد .. فلا يتم الالتفات للمشروع .

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

أما OpenGL و dx باستخدام السي بلس .. فيكونان في مشروع واحد .. وهذا أمره سهل أخي .. انظر للمحرك irrlicht طبعا اذا كان هناك من يتطوع ويساهم في ذلك .. والا يتم تعليق هذه النقطة أيضا ... يعني يتم ايقاف نسخة الدايركت اكس .. حتى يتطوع أحد .

سيكون شكل الكود كذا :

class Graphics
{
virtual void drawPoint(int x, int y)=0;
};

// openglGraphics.h

#ifdef XENGINE_OPENGL
class OpenGLGraphics : public Graphics
{
virtual void drawPoint(int x , int y)
{
glBegin(....); glVertex2i(x,y); ....
}
};
#endif

// d3dGraphics.h
#ifdef XENGINE_D3D
class D3DGraphics : public Graphics
{
virtual void drawPoint(int x , int y)
{
D3DDevice->drawPoint(.....); // pla pla pla ...
}
};
#endif

// main.cpp
Device *device = Factory.createDevice(PLATFORM_WINDOWS,GRAPHICS_OPENGL,window_width,window_height);
Graphics *gfx = device->getGraphics();
gfx->drawPoint(x,y);

- حياك الله أخوي عبدالله - hunter

- لكن لدي سؤال يا أخوان.. بالنسبة لنظام لينكس .. هل سيطور عليه أحد .. ماهو المترجم و ide المستخدم .. وماهي المكتبة التي ستستخدم مع opengl .. هل تريدون sdl مثلا ؟

تم تعديل هذه المشاركة بواسطة الشمري في 18 سبتمبر 2009 في 07:24

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#20

السلام عليكم

دعوكم من النقاشات الجانبية التي لا تغني ولا تسمن من جوع

ولنركز على العمل أكثر

أعرف أن الأخوة يريدون المساعدة جزاهم الله خيراً

لكن هذه المناقشات تعلق سير المشروع

بالنسبة للمشاركة فأنا متكفل بنسخة java بإذن الله

لكن لدي مشكلة بسيطة ألا وهي أن لي حزمتي الخاصة حزمة المحرك

معنى الكلام أني موجود قبل المحرك أندلس

فهل هذا يجعلني في معسكر الأعداء الذين يجب أن تستخدم معهم خدعة الحرب :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#21

تمام

لنبدء إذن فى مناقشة إمكانيات المحرك و مكوناته

مدونتي: C++ Tips and Tricks

#22

يا شباب قولوا بسم الله وخلونا نبدأ لا يضيع الشهر والشهرين وحنا لازلنا في النظري ...........العملي هو الاساس

## Al-programmer Will Coming ##

#23
اقتباس
بالنسبة للمشاركة فأنا متكفل بنسخة java بإذن الله

لكن لدي مشكلة بسيطة ألا وهي أن لي حزمتي الخاصة حزمة المحرك

معنى الكلام أني موجود قبل المحرك أندلس

فهل هذا يجعلني في معسكر الأعداء الذين يجب أن تستخدم معهم خدعة الحرب

سنؤجل مسألة التحريك Animation الى المرحلة الثانية 0.2 , ولكن تستطيع أن تدخلها الى المحرك الان لو كانت جاهزة :D .. وذلك في نسخة الجافا فقط .. سأعمل عليها تجارب بحول الله .. لكن سنحتاج اليك في أمور كثيرة في الجافا , Keyboard Input - Mouse Input - Timer .. هذا غير الملفات و الصور ومايتعلق بها .. سأتكلم عن الأدوات التي نحتاجها في الموضوع التالي ..

ننتقل الى الموضوع التالي :

محرك الأندلس : الأدوات - الخطة وأسلوب التطوير .

سيبقى الموضوع مفتوح لأي عضو لديه سؤال عن المشروع .

تم تعديل هذه المشاركة بواسطة الشمري في 19 سبتمبر 2009 في 03:52

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…