NubiaPrince
31-12-2005, 08:49 PM
:ciao: مبادئ برمجة الـ 3D والألعاب......................
بسم الله الرحمن الرحيم
- لنبدأ بعون الله
اولاً مازلت أشدد علي أن مبرمج الألعاب يحتاج الي الكثير من الأدوات والبرامج لتساعده علي إخراج عمله؛
أقدم لكم 3 مواقع الأول لتدرب من خلال الكتب والدروس العربية والأجنبية التي يقدمها علي التعامل مع برامج الـ 3D Designing مثل : الماكس و مايا و Z-Brush سوفت إيمج.....إلخ.
و برامج الجرافيكس مثل : Flash و Corel Draw و PhotoShop....إلخ.
والموقع للأخ ( أحمد مراد ) مصمم جرافيكس وبالمقع أدوات عديدة لتسهيل عملك علي الماكس ومايا :http://www.geocities.com/mourad3d/book.htm (http://www.geocities.com/mourad3d/book.htm)
الموقع الثاني صيني(إنجليزي) و به مجموعة من الكتب الأنجليزية المختارة في برمجة الألعاب
و هو:http://www.newebug.com/ebook/game/index.shtml (http://www.newebug.com/ebook/game/index.shtml)
وستجد ركن للبرمجة أيضاً بهذا المقوقع إن شاء الله
الموقع الثالث Server Gamers الشهير:
www.free.gameres.com (http://www.free.gameres.com/)
به الألف من كتب تعليم برمجة الـ 3D و برمجة الألعاب وبناء المحركات و الاف من ملفات مفتوحة المصدر .
***********************والأن الي صلب المضوع********************************
:jester: برمجة الألعاب أمر ممتع ورائع و لكن علينا أن نعرف الخطوات الصحيحة الي إحتراف هذا الجال إن شاء الله.
كمقدمة مني لكم بعض هذه النصائح والمعلومات للتذكرة:
1- ان المحركات هي أخر خطوات تعلم برمجة الألعاب .
2- ليس الـ DirectX او كما نسميه الـ X المكتبة الوحيدة أو الأشهر أو الأفضل أو حتي الأسهل في برمجة الألعاب ، ولكن
مكتبة الـ OpenGl وملحقاتها من أعظم مكتبات تصميم الـ 3D بصفة عامة.
3- لأكون مصمم العاب من الجيل الحلي يلزمني تعلم:
أ-البرمجة علي ++C (الأفضل)-VisualBasic أو الـ #C أو VisualBasic.NET.
ب-دراسة الـ DirectX أو الـ OpenGl بإحتراف لأهميتهم كعامل ربط بين الكود البرمجي والـ 3D Model أي النماذج ثلاثية الأبعاد.
ج-دراسة الألكترونيات و الاسيمبلي Assimbly.
ء-دراسة الفيزباء والرياضيات الثلاثية الأبعاد :تفاضل-تكمل-هندسة فراغية-جبر خطي...إلخ.
هـ -معرفة ان المحركات في تصميم الألعاب نوعين (رسومي-فيزيائي).
-المحرك الرسومي: هو محرك تصميم Designing و رسم و التحكم في المجريات وعمليات التصييرRendering و العمليات الزسومية البسيطة وهذا ما نستطيع تصميمة من المحركات.
-المحرك الفيزيائي: هو المحرك المستحيل ؟! لأنه المسؤل عن الحركة والمادة والجزيئات والعمليلت المتسلسلة Chain Reactions والخوارزميات, وهذا المحرك غالبا أقصد دائماً نحضره جاهز..لماذا؟ لأن تصميمه يحتاج الي 20 سنة ومن منا لديه هذا الكم من وقت الفراغ؟:11:
* الخوارزميات: هي عمليات منطقية وهي تمثل الطريق الذي يسير عليه القصة ودورها يائتي في كونها عامل تخيير لك بأن تنهي كل مرحلة بالشكل الذي يناسبك وقرباً إنشاء الله سأحضر رسم يبسط العملية لكم أكثر.
و-الذكاء الأصطناعي AI:هو ما لم اصل غليه بعد لأتمكن من شرحه ولكنه العامل المحدد علي ما اظن لمستوي صعوبة اللعبة وردة فعل الخصم.
*مهمة الدايركت أس DirectXاو الأوبن جي إل OpenGl في المحرك هي الأمتداد الذي يمكننا أثناء التصميم من التعديل في اللعبة من خلال التصميم الرسومي والكود البرمجي وربطهم لتصميم اللعبة وهي المكتبات الأشهر والأضمن والأكثر إنتشاراً في التعمل مع تصميم الألعاب.
:06: الفرق بين الـ OpenGL و الـ DirectX :
الفرق بين الـ DirectX أو كما نسميه كمبرمجين الـ X و الـ OpenGL أو كما نسميها أيضاً الـ GL ؛
أولاً :أعرفك بهما:-
1- DirectX :
* و هو مكتبة من تصميم Microsoft بها عدة أقسام تتضمنها و هي:
- Direct Play:
خاص بنوافذ التشغيل والعرض.
- Direct Sound:
خاص بالصوتيات.
- Direct Draw:
خاص بالرسوميات و بصفة خاصة الـ 2D منها الثنائية الأبعاد .
- Direct 3D:
و هو الجزء المفضل لنا و هو الخاص بإنشاء المجسمات الثلاثية الأبعاد و التحم فيها وتصميم أدوات تسهل لنا ذلك ، هذا هو الجزء الخاص بالعمل علي التصميم بالمجسمات الـ 3D .
:02: و هناك أجزاء أخري خاصة بالأتصالات لعمل إتصالات شبكات داخلية أو عبر الإنترنت....و لكن لا أتذكرها الأن لأني لم أعمل عليها بعد :09: ..و انا أسف علي هذا.
* أكثر ما يميز الـ DirectX هو إنه يتم التعامل معه من خلال اكواد مباشرة و من خلال إستدعاءنا لدوال الـ API أي أن أي مبرمج للغة أو أكثر من لغات البرمجة التي تدعمهة مكتبة الـ X يكون أكثر قدرة عن غيره علي التعامل معها.
2- OpenGL :
- هي مكتبة مفتوحة المصدر يمكن أن تقوم بإنزالها من موقعها : www.opengl.org (http://www.opengl.org/)
و هي إختصار لكلمة (Open Graphics Library) أي مكتبة الرسوميات المفتوحة ،
و يتميز الـ OpenGL بأنه لا يحتاج لخبرة كبيرة في البرمجة فقط أن نعرف أساسيات إحدي لغات البرمجة و نعرف علي أي منصة سوف نستخدمها فهي كما تعرفون موجهة لكل نظم التشغيل ليس كالـ DirectX صمم للـ Windows Microsoft فقط ،
فمكتبة الـ GL تدعم كافة نظم التشغيل تقريباً لكن إن أردنا أن نستخدمها في الـ Windows لنتعلم أساسيات إحد لغات البرمجة ثم نقوم بدراسة برمجة الـ Windows أو الـ Win32 Programming فقط ، ثم أن نتعلم الدوال التي يتم إستخدامها لبرمجة متكبة الـ GL لإنها تستخدم دوال ليس أكواد :D ( أسهل للمبتدئين).
ثانياً: بعض النقاط المهمة لكل مكتبة:-
1- المكتبتان (مدعمتان) داخل Microsoft Windows و لكن لنستخدم المكتبات البرمجية لهم لابد من وجود الـ SDK ) Service Development Kit ) لكل منهما وهي متوفرة مجاناً علي موقعي: www.microsoft.com (http://www.microsoft.com/) و www.opengl.org (http://www.opengl.org/) .
2- من حيث طعوبة البرمجة أو الفرق بينهم في الأكواد فالعنلية بينهم تعد نسبية حسب قدرات كل مبرمج لأنهم يتبعوا نفس الأسلوب في الإخراج و الإعداد و التجسيم و حتي النتيجة النهائية...إلخ
3- هناك أمر هام هو أن الـ OpenGL مكتبة رسوميات فقط أي إنها لا تدعم الصوتيات أو الشبكات ، لذا هناك مكتبات أخري مفتوحة تكملها مثل:
- مكتبة الصوتيات المفتوحة: OpenAL
- مكتبة الوسائط المفتوحة: OpenML
..........إلخ
و إن لم نستطع إستيعاب هذا الكم من المكتبات لنا القدرة (كخطوة متقدمة برمجياً) أن نستدعي ما ينقصنا في الـ OpenGL و ندعمه بالـ DirectX .
ثم زر هذا الرابط لموقع الفريق العربي يشرح فيه بشكل مفصل الفرق بين الـ : Direct3D و الـ OpenGL من هنا (http://www.arabteam2000-forum.com/index.php?showtopic=39229)
و لك الأن أن تختار أخي بماذا تبدأ
> اسف للأطالة ..., وأية خدمة أو معلومة لدي لن أبخل عليكم بها إنشاء الله ولا أي مسلم.
* إن كان يرى أحد المبرمجين المحترفين أو او المشرفين أو ذوي الخبرة نقص في موضوعاتي فليكمله . :)
- فالكمال لله سبحانه وتعالي -
و أخر قولي عن رسولنا الكريم -صلى الله عليه وسلم- "أطلوبوا العلم ولو في الصين " و" أطلبوا العلم من المهد الى اللحد" , و" إثنان لا يشبعان طـالـب عــلــم وطالب مال" -صدق رسول الله صلي الله عليه وسلم.
أخيكم في الله
NubiaPrince
أحمد أسامة
اللقب : أحمد زايد
بسم الله الرحمن الرحيم
- لنبدأ بعون الله
اولاً مازلت أشدد علي أن مبرمج الألعاب يحتاج الي الكثير من الأدوات والبرامج لتساعده علي إخراج عمله؛
أقدم لكم 3 مواقع الأول لتدرب من خلال الكتب والدروس العربية والأجنبية التي يقدمها علي التعامل مع برامج الـ 3D Designing مثل : الماكس و مايا و Z-Brush سوفت إيمج.....إلخ.
و برامج الجرافيكس مثل : Flash و Corel Draw و PhotoShop....إلخ.
والموقع للأخ ( أحمد مراد ) مصمم جرافيكس وبالمقع أدوات عديدة لتسهيل عملك علي الماكس ومايا :http://www.geocities.com/mourad3d/book.htm (http://www.geocities.com/mourad3d/book.htm)
الموقع الثاني صيني(إنجليزي) و به مجموعة من الكتب الأنجليزية المختارة في برمجة الألعاب
و هو:http://www.newebug.com/ebook/game/index.shtml (http://www.newebug.com/ebook/game/index.shtml)
وستجد ركن للبرمجة أيضاً بهذا المقوقع إن شاء الله
الموقع الثالث Server Gamers الشهير:
www.free.gameres.com (http://www.free.gameres.com/)
به الألف من كتب تعليم برمجة الـ 3D و برمجة الألعاب وبناء المحركات و الاف من ملفات مفتوحة المصدر .
***********************والأن الي صلب المضوع********************************
:jester: برمجة الألعاب أمر ممتع ورائع و لكن علينا أن نعرف الخطوات الصحيحة الي إحتراف هذا الجال إن شاء الله.
كمقدمة مني لكم بعض هذه النصائح والمعلومات للتذكرة:
1- ان المحركات هي أخر خطوات تعلم برمجة الألعاب .
2- ليس الـ DirectX او كما نسميه الـ X المكتبة الوحيدة أو الأشهر أو الأفضل أو حتي الأسهل في برمجة الألعاب ، ولكن
مكتبة الـ OpenGl وملحقاتها من أعظم مكتبات تصميم الـ 3D بصفة عامة.
3- لأكون مصمم العاب من الجيل الحلي يلزمني تعلم:
أ-البرمجة علي ++C (الأفضل)-VisualBasic أو الـ #C أو VisualBasic.NET.
ب-دراسة الـ DirectX أو الـ OpenGl بإحتراف لأهميتهم كعامل ربط بين الكود البرمجي والـ 3D Model أي النماذج ثلاثية الأبعاد.
ج-دراسة الألكترونيات و الاسيمبلي Assimbly.
ء-دراسة الفيزباء والرياضيات الثلاثية الأبعاد :تفاضل-تكمل-هندسة فراغية-جبر خطي...إلخ.
هـ -معرفة ان المحركات في تصميم الألعاب نوعين (رسومي-فيزيائي).
-المحرك الرسومي: هو محرك تصميم Designing و رسم و التحكم في المجريات وعمليات التصييرRendering و العمليات الزسومية البسيطة وهذا ما نستطيع تصميمة من المحركات.
-المحرك الفيزيائي: هو المحرك المستحيل ؟! لأنه المسؤل عن الحركة والمادة والجزيئات والعمليلت المتسلسلة Chain Reactions والخوارزميات, وهذا المحرك غالبا أقصد دائماً نحضره جاهز..لماذا؟ لأن تصميمه يحتاج الي 20 سنة ومن منا لديه هذا الكم من وقت الفراغ؟:11:
* الخوارزميات: هي عمليات منطقية وهي تمثل الطريق الذي يسير عليه القصة ودورها يائتي في كونها عامل تخيير لك بأن تنهي كل مرحلة بالشكل الذي يناسبك وقرباً إنشاء الله سأحضر رسم يبسط العملية لكم أكثر.
و-الذكاء الأصطناعي AI:هو ما لم اصل غليه بعد لأتمكن من شرحه ولكنه العامل المحدد علي ما اظن لمستوي صعوبة اللعبة وردة فعل الخصم.
*مهمة الدايركت أس DirectXاو الأوبن جي إل OpenGl في المحرك هي الأمتداد الذي يمكننا أثناء التصميم من التعديل في اللعبة من خلال التصميم الرسومي والكود البرمجي وربطهم لتصميم اللعبة وهي المكتبات الأشهر والأضمن والأكثر إنتشاراً في التعمل مع تصميم الألعاب.
:06: الفرق بين الـ OpenGL و الـ DirectX :
الفرق بين الـ DirectX أو كما نسميه كمبرمجين الـ X و الـ OpenGL أو كما نسميها أيضاً الـ GL ؛
أولاً :أعرفك بهما:-
1- DirectX :
* و هو مكتبة من تصميم Microsoft بها عدة أقسام تتضمنها و هي:
- Direct Play:
خاص بنوافذ التشغيل والعرض.
- Direct Sound:
خاص بالصوتيات.
- Direct Draw:
خاص بالرسوميات و بصفة خاصة الـ 2D منها الثنائية الأبعاد .
- Direct 3D:
و هو الجزء المفضل لنا و هو الخاص بإنشاء المجسمات الثلاثية الأبعاد و التحم فيها وتصميم أدوات تسهل لنا ذلك ، هذا هو الجزء الخاص بالعمل علي التصميم بالمجسمات الـ 3D .
:02: و هناك أجزاء أخري خاصة بالأتصالات لعمل إتصالات شبكات داخلية أو عبر الإنترنت....و لكن لا أتذكرها الأن لأني لم أعمل عليها بعد :09: ..و انا أسف علي هذا.
* أكثر ما يميز الـ DirectX هو إنه يتم التعامل معه من خلال اكواد مباشرة و من خلال إستدعاءنا لدوال الـ API أي أن أي مبرمج للغة أو أكثر من لغات البرمجة التي تدعمهة مكتبة الـ X يكون أكثر قدرة عن غيره علي التعامل معها.
2- OpenGL :
- هي مكتبة مفتوحة المصدر يمكن أن تقوم بإنزالها من موقعها : www.opengl.org (http://www.opengl.org/)
و هي إختصار لكلمة (Open Graphics Library) أي مكتبة الرسوميات المفتوحة ،
و يتميز الـ OpenGL بأنه لا يحتاج لخبرة كبيرة في البرمجة فقط أن نعرف أساسيات إحدي لغات البرمجة و نعرف علي أي منصة سوف نستخدمها فهي كما تعرفون موجهة لكل نظم التشغيل ليس كالـ DirectX صمم للـ Windows Microsoft فقط ،
فمكتبة الـ GL تدعم كافة نظم التشغيل تقريباً لكن إن أردنا أن نستخدمها في الـ Windows لنتعلم أساسيات إحد لغات البرمجة ثم نقوم بدراسة برمجة الـ Windows أو الـ Win32 Programming فقط ، ثم أن نتعلم الدوال التي يتم إستخدامها لبرمجة متكبة الـ GL لإنها تستخدم دوال ليس أكواد :D ( أسهل للمبتدئين).
ثانياً: بعض النقاط المهمة لكل مكتبة:-
1- المكتبتان (مدعمتان) داخل Microsoft Windows و لكن لنستخدم المكتبات البرمجية لهم لابد من وجود الـ SDK ) Service Development Kit ) لكل منهما وهي متوفرة مجاناً علي موقعي: www.microsoft.com (http://www.microsoft.com/) و www.opengl.org (http://www.opengl.org/) .
2- من حيث طعوبة البرمجة أو الفرق بينهم في الأكواد فالعنلية بينهم تعد نسبية حسب قدرات كل مبرمج لأنهم يتبعوا نفس الأسلوب في الإخراج و الإعداد و التجسيم و حتي النتيجة النهائية...إلخ
3- هناك أمر هام هو أن الـ OpenGL مكتبة رسوميات فقط أي إنها لا تدعم الصوتيات أو الشبكات ، لذا هناك مكتبات أخري مفتوحة تكملها مثل:
- مكتبة الصوتيات المفتوحة: OpenAL
- مكتبة الوسائط المفتوحة: OpenML
..........إلخ
و إن لم نستطع إستيعاب هذا الكم من المكتبات لنا القدرة (كخطوة متقدمة برمجياً) أن نستدعي ما ينقصنا في الـ OpenGL و ندعمه بالـ DirectX .
ثم زر هذا الرابط لموقع الفريق العربي يشرح فيه بشكل مفصل الفرق بين الـ : Direct3D و الـ OpenGL من هنا (http://www.arabteam2000-forum.com/index.php?showtopic=39229)
و لك الأن أن تختار أخي بماذا تبدأ
> اسف للأطالة ..., وأية خدمة أو معلومة لدي لن أبخل عليكم بها إنشاء الله ولا أي مسلم.
* إن كان يرى أحد المبرمجين المحترفين أو او المشرفين أو ذوي الخبرة نقص في موضوعاتي فليكمله . :)
- فالكمال لله سبحانه وتعالي -
و أخر قولي عن رسولنا الكريم -صلى الله عليه وسلم- "أطلوبوا العلم ولو في الصين " و" أطلبوا العلم من المهد الى اللحد" , و" إثنان لا يشبعان طـالـب عــلــم وطالب مال" -صدق رسول الله صلي الله عليه وسلم.
أخيكم في الله
NubiaPrince
أحمد أسامة
اللقب : أحمد زايد