السلام عليكم ورحمة الله وبركاته.....
تم نقل هذا الموضوع المفيد من أحد المنتديات......رابط الموضوع الأصلي:
هــــــــــــنـــــــــــا
وهو يشرح بعض الأشياء المهمة في الألعاب
ـــــــــــــــــــــــــــــــــــــــــــ.ـــــــــــــــــــــــــــــــــــــــــ**ــ**ـــــــــ ـــــــــــــــــــــــــــ,ــــــــــــــــــــــــــــــــــــ
صاحب الرد هو: رامي اللوح
أعتقد أن المشكلة ليست في المعاني أو الكلمات المستخدمة ، بل إنها تكمن حقيقة في طريقة الاستخدام ... أو موضع الاستخدام الخاطيء ، والذي ينتج عنه بالتالي سوء فهم يتعمق مع الأيام مع الإصرار على الاستخدام الخاطيء لهذا المصطلح ..... سوف أقوم بتعريف مصطلح المحرك ومكوناته من وجهة نظري الشخصية ، ومن ثم سوف أضع منتج ما إلى جانب كل مصطلحه الخاص به .... !!!!! ... الانتقال الطبيعي للتطوير يتم كالتالي:
الوظيفة -> وظيفة التغليف (إن وجدت) -> المكتبة (إن وجدت) -> المحرك -> بيئة التطوير (تستقر عادة على المحرك الرئيسي - وقد تمتلك محركاً مصغراً خاصاً بها) .... وهكذا .... !!!!!!
- الوظيفة: ببساطة عبارة عن مجموعة من المتغيرات ، التعليمات ، الأدوات المنطقية والتي يؤدي ناتج عمل كل هذه العوامل فيها مجتمعة إلى عمل ما.
- وظيفة التغليف: إن وجدت تكون عبارة عن استدعاءات مختصرة (مثل الـ Shortcuts الموجودة في Windows) لوظائف كبيرة تحتاج لاستدعائها القيام بالعديد من التحضيرات أو الإعدادات الأولية التي يمكن تضمينها واختصارها في وظيفة التغليف .... بصراحة الهدف الأول والأساسي من وظيفة التغليف هو تقليل عدد السطور المكتوبة في برنامجك إلى الحد الأدنى بحيث يجنبك ذلك الارتباك أو التشويش عند معاينة أو تصحيح الأخطاء البرمجية ... !!!!! .... ولكن انتبه إلى أن وظائف التغليف تحتوي عادة على وظائف من نفس نوع المهمة ، بمعنى أنه لا يمكنك منطقياً (يمكنك ذلك عملياً للأسف) أن تدمج وظيفة رسومية مع أخرى صوتية في وظيفة تغليف واحدة.
- المكتبة: مجموعة من الوظائف أو وظائف التغليف .... عادة المكتبات مثل DirectX وOpenGL لا تتضمن وظائف للتغليف لأنها تعتبر مكتبات مرجعية ، أي أنها مصممة لأداء مهام محددة ومعينة مهما صغرت أو كبرت باستخدام وظائف منفردة ومعزولة وذات خواص محددة .... الآن يأتي دور المطور بالتالي لوضع اختصاراته الكثيرة في وظيفة تغليف واحدة .... !!!!!! .... يفضل المبرمجين عادة اصدار مكتبات منفصلة لكل مهمة معينة ، كأن يكون هنالك مكتبة رسومية ، وأخرى صوتية ، وما إلى ذلك ، مع اعتبار أنه بالإمكان تضمين كل ذلك في مكتبة واحدة.
- المحرك: قد تتفاجأ ... يعتبر المحرك نظرياً التسلسل المنطقي في إدارة وتنظيم وضبط مكونات اللعبة أثناء وقت التنفيذ ، فعندما تقوم الانتهاء من تصميم مكتبتك البرمجية فهذا لا يعني أنك قمت بتصميم المحرك .... وهذا يشبه أن تقوم بالانتهاء من تصميم إطار السيارة ، ومن ثم تقول أنك انتهيت من تصميم محرك السيارة .... وهكذا يقوم المحرك بضبط أحداث اللعبة المختلفة من فيزياء ، ورسوم ، وأصوات ، ومن ثم استدعاء المكونات الخاصة بكل مهمة على حدة وبالوقت المحدد والدقيق ، يقوم المحرك أيضاً بإنجاز أمور قد تراها على الشاشة ، وأمور أخرى قد لا تراها مطلقاً ... الخلاصة ، أنا أشبه المحرك بالوظيفة main في ++C\C فهي تنجز مهام مشابهة لما هو حال المحرك عليه ، إليك مقالاً بالغ الأهمية عن ماهية محرك اللعبة:
http://www.3dactionplanet.com/features/articles/gameengines
وبالمناسبة لا يوجد شيء اسمه محرك فقط ، وشيء آخر اسمه محرك اللعبة .... المحرك هو المحرك مع امكانية تخصيص المصطلح ، كأن نقول مثلاً محرك السيارة ، محرك القطار ، محرك الألعاب ، وهكذا ... !!!!
- بيئة التطوير المرئية: تعتبر بيئة التطوير المرئية أحد التطبيقات الواسعة الانتشار هذه الأيام ، وهي عبارة عن مجموعة من المكونات الرسومية والصوتية ، ... الخ المدمجة تحت مظلة بيئة التطوير ، أي بمعنى أنه يمكنك تطوير لعبتك مرئياً ومن ثم الاستحصال على الملف التنفيذي بالنهاية ، والواقع يقول أن محركك الأساسي موجود في الشيفرة الناتجة عن عملية التطوير ، وهو الذي سوف يتحمل كافة أعباء إدارة ما قمت بتصميمه كاملة ، فكيف نأتي ونقول أن 3D Game Studio بكامله هو محرك ... أو كيف نطلق على محرر Unreal الكوني أنه محرك ، وهذا خطأ فادح .... في الواقع 3D Game Studio وUnreal Editor هما وجهان لعملة واحدة .... اسم هذه العملة "محررات كونية ، أو بيئات تطوير مرئية" ... !!!!!!
فمثلاً:
DirectX ، وOpenGL = مكتبات
Genius3D ، وTrueVision3D = مكتبات أو وظائف تغليف
Quake = محرك لعبة Quake
3D Game Studio = بيئة تطوير مرئية للألعاب
هذا ما أعلمه شخصياً والله أعلم .... وعذراً على الإطالة ،،،،،،،،،،،،،،
الوظيفة -> وظيفة التغليف (إن وجدت) -> المكتبة (إن وجدت) -> المحرك -> بيئة التطوير (تستقر عادة على المحرك الرئيسي - وقد تمتلك محركاً مصغراً خاصاً بها) .... وهكذا .... !!!!!!
- الوظيفة: ببساطة عبارة عن مجموعة من المتغيرات ، التعليمات ، الأدوات المنطقية والتي يؤدي ناتج عمل كل هذه العوامل فيها مجتمعة إلى عمل ما.
- وظيفة التغليف: إن وجدت تكون عبارة عن استدعاءات مختصرة (مثل الـ Shortcuts الموجودة في Windows) لوظائف كبيرة تحتاج لاستدعائها القيام بالعديد من التحضيرات أو الإعدادات الأولية التي يمكن تضمينها واختصارها في وظيفة التغليف .... بصراحة الهدف الأول والأساسي من وظيفة التغليف هو تقليل عدد السطور المكتوبة في برنامجك إلى الحد الأدنى بحيث يجنبك ذلك الارتباك أو التشويش عند معاينة أو تصحيح الأخطاء البرمجية ... !!!!! .... ولكن انتبه إلى أن وظائف التغليف تحتوي عادة على وظائف من نفس نوع المهمة ، بمعنى أنه لا يمكنك منطقياً (يمكنك ذلك عملياً للأسف) أن تدمج وظيفة رسومية مع أخرى صوتية في وظيفة تغليف واحدة.
- المكتبة: مجموعة من الوظائف أو وظائف التغليف .... عادة المكتبات مثل DirectX وOpenGL لا تتضمن وظائف للتغليف لأنها تعتبر مكتبات مرجعية ، أي أنها مصممة لأداء مهام محددة ومعينة مهما صغرت أو كبرت باستخدام وظائف منفردة ومعزولة وذات خواص محددة .... الآن يأتي دور المطور بالتالي لوضع اختصاراته الكثيرة في وظيفة تغليف واحدة .... !!!!!! .... يفضل المبرمجين عادة اصدار مكتبات منفصلة لكل مهمة معينة ، كأن يكون هنالك مكتبة رسومية ، وأخرى صوتية ، وما إلى ذلك ، مع اعتبار أنه بالإمكان تضمين كل ذلك في مكتبة واحدة.
- المحرك: قد تتفاجأ ... يعتبر المحرك نظرياً التسلسل المنطقي في إدارة وتنظيم وضبط مكونات اللعبة أثناء وقت التنفيذ ، فعندما تقوم الانتهاء من تصميم مكتبتك البرمجية فهذا لا يعني أنك قمت بتصميم المحرك .... وهذا يشبه أن تقوم بالانتهاء من تصميم إطار السيارة ، ومن ثم تقول أنك انتهيت من تصميم محرك السيارة .... وهكذا يقوم المحرك بضبط أحداث اللعبة المختلفة من فيزياء ، ورسوم ، وأصوات ، ومن ثم استدعاء المكونات الخاصة بكل مهمة على حدة وبالوقت المحدد والدقيق ، يقوم المحرك أيضاً بإنجاز أمور قد تراها على الشاشة ، وأمور أخرى قد لا تراها مطلقاً ... الخلاصة ، أنا أشبه المحرك بالوظيفة main في ++C\C فهي تنجز مهام مشابهة لما هو حال المحرك عليه ، إليك مقالاً بالغ الأهمية عن ماهية محرك اللعبة:
http://www.3dactionplanet.com/features/articles/gameengines
وبالمناسبة لا يوجد شيء اسمه محرك فقط ، وشيء آخر اسمه محرك اللعبة .... المحرك هو المحرك مع امكانية تخصيص المصطلح ، كأن نقول مثلاً محرك السيارة ، محرك القطار ، محرك الألعاب ، وهكذا ... !!!!
- بيئة التطوير المرئية: تعتبر بيئة التطوير المرئية أحد التطبيقات الواسعة الانتشار هذه الأيام ، وهي عبارة عن مجموعة من المكونات الرسومية والصوتية ، ... الخ المدمجة تحت مظلة بيئة التطوير ، أي بمعنى أنه يمكنك تطوير لعبتك مرئياً ومن ثم الاستحصال على الملف التنفيذي بالنهاية ، والواقع يقول أن محركك الأساسي موجود في الشيفرة الناتجة عن عملية التطوير ، وهو الذي سوف يتحمل كافة أعباء إدارة ما قمت بتصميمه كاملة ، فكيف نأتي ونقول أن 3D Game Studio بكامله هو محرك ... أو كيف نطلق على محرر Unreal الكوني أنه محرك ، وهذا خطأ فادح .... في الواقع 3D Game Studio وUnreal Editor هما وجهان لعملة واحدة .... اسم هذه العملة "محررات كونية ، أو بيئات تطوير مرئية" ... !!!!!!
فمثلاً:
DirectX ، وOpenGL = مكتبات
Genius3D ، وTrueVision3D = مكتبات أو وظائف تغليف
Quake = محرك لعبة Quake
3D Game Studio = بيئة تطوير مرئية للألعاب
هذا ما أعلمه شخصياً والله أعلم .... وعذراً على الإطالة ،،،،،،،،،،،،،،
صاحب الرد هو : احمد صالح
لفرق بين 3D Engines And Game Engines ?
هناك فرق شاسع بين المحركات الثلاثية الالعاب و محرك اللعبة نفسه -
فالمسؤل اولا و اخيرا عن العرض و التصيير هو المحرك الثلاثى البعد اى انا المحرك الخارجى وظيفته مثلا تصيير المراحل و الكائنات عموما ( شخصيات ، اسلحة ...) ، و ليس كما يعتقد البعض انه هو المخصص بالنظام الفيزيائى Physics System و نظام الحركة داخل اللعبة Animation System او نظام الذكاء المصنع Ai System ، و لكن العكس صحيح فمحرك اللعبة هو مجموعة من الاحداث الداخلية للعبة مثلا احتكاك اللاعبين ببعض و هو ما يجعل محرك اللعبة استعداء النظام الفيزيائى و مثلا حركة الشخصية الرئيسة ( الركض مثلاً ) مما يجعل محرك اللعبة استعداء نظام الحركة للقيام بهذه المهمة .
و جميع هذه الانظمة يجب ان تحاكى محرك اللعبة الرئيسى ، و بالطبع وظيفة كتابة محرك بالكامل هو عمل لعبة ثلاثية الابعاد .
و بإختصار اى لعبة ثلاثية الابعاد تحتاج الى هذه الانظمة :
محرك ثلاثى الابعاد
محرك للعبة
نظام اداخل ( الكيبورد و الماوس ) و نظام الشبكات
نظام حركة
نظام لكشف التصادمات
نظام فيزيائى
نظام للذكاء الصناعى
نظام لتحميل نماذج ( موديل) ثلاثية الابعاد .
قد يتسائل البعض لماذا لم ندمج النظام المخصص لكشف التصادمات مع الفيزياء و ذلك لانه معقد نوعا ما لذا جعلناه لنظام مخصص له يتخصص فيه .
هناك فرق شاسع بين المحركات الثلاثية الالعاب و محرك اللعبة نفسه -
فالمسؤل اولا و اخيرا عن العرض و التصيير هو المحرك الثلاثى البعد اى انا المحرك الخارجى وظيفته مثلا تصيير المراحل و الكائنات عموما ( شخصيات ، اسلحة ...) ، و ليس كما يعتقد البعض انه هو المخصص بالنظام الفيزيائى Physics System و نظام الحركة داخل اللعبة Animation System او نظام الذكاء المصنع Ai System ، و لكن العكس صحيح فمحرك اللعبة هو مجموعة من الاحداث الداخلية للعبة مثلا احتكاك اللاعبين ببعض و هو ما يجعل محرك اللعبة استعداء النظام الفيزيائى و مثلا حركة الشخصية الرئيسة ( الركض مثلاً ) مما يجعل محرك اللعبة استعداء نظام الحركة للقيام بهذه المهمة .
و جميع هذه الانظمة يجب ان تحاكى محرك اللعبة الرئيسى ، و بالطبع وظيفة كتابة محرك بالكامل هو عمل لعبة ثلاثية الابعاد .
و بإختصار اى لعبة ثلاثية الابعاد تحتاج الى هذه الانظمة :
محرك ثلاثى الابعاد
محرك للعبة
نظام اداخل ( الكيبورد و الماوس ) و نظام الشبكات
نظام حركة
نظام لكشف التصادمات
نظام فيزيائى
نظام للذكاء الصناعى
نظام لتحميل نماذج ( موديل) ثلاثية الابعاد .
قد يتسائل البعض لماذا لم ندمج النظام المخصص لكشف التصادمات مع الفيزياء و ذلك لانه معقد نوعا ما لذا جعلناه لنظام مخصص له يتخصص فيه .
تعليق