بسم الله الرحمن الرحيم ، اما بعد
من أكبرالمشاكل التي تواجه مبرمجين الألعاب المبتدئين التسرع ; بمعنى أصح بعد أن يتمكنوا من رسم مثلث على الشاشة يتركوا كافة الدروس ويحاولوا انتاج لعبة كاملة !
أعترف أني عانيت من هذه المشكلة لسنوات وسببت لي الصداع وضعف/انعدام الانتاج ، ووجدت أنني ببساطة كنت "أخدع" نفسي ، إلى أن تخلصت من هذه المشكلة والحمد لله -- وبدأت فعلياً في تنظيم أفكاري ومحاولة معرفة ما هي نقاط ضعفي .
لهذا قررت عمل لائحة بالمهارات اللازم تواجدها لدى المبرمج لانتاج لعبة كاملة ، ما أقصده هنا هو "لائحة" من الأمور يجب أن تتواجد لديك معرفتها لكي تفكر في بدأ العمل على لعبة كاملة ! ببساطة ، كل ما عليك فعله هو تناول موضوعات اللائحة موضوعاً موضوعاً والبحث فيها حتى تجيد استخدامها في المحرك الذي تستخدمه
مع مراعاة التالي :
اللائحة قيد التطوير للأبد بإذن الله :] !
من لديه أي اقتراحات لللائحة فاليتفضل ، لنصل إلى لائحة نهائية تساعد الكل بإذن الله
من أكبرالمشاكل التي تواجه مبرمجين الألعاب المبتدئين التسرع ; بمعنى أصح بعد أن يتمكنوا من رسم مثلث على الشاشة يتركوا كافة الدروس ويحاولوا انتاج لعبة كاملة !
أعترف أني عانيت من هذه المشكلة لسنوات وسببت لي الصداع وضعف/انعدام الانتاج ، ووجدت أنني ببساطة كنت "أخدع" نفسي ، إلى أن تخلصت من هذه المشكلة والحمد لله -- وبدأت فعلياً في تنظيم أفكاري ومحاولة معرفة ما هي نقاط ضعفي .
لهذا قررت عمل لائحة بالمهارات اللازم تواجدها لدى المبرمج لانتاج لعبة كاملة ، ما أقصده هنا هو "لائحة" من الأمور يجب أن تتواجد لديك معرفتها لكي تفكر في بدأ العمل على لعبة كاملة ! ببساطة ، كل ما عليك فعله هو تناول موضوعات اللائحة موضوعاً موضوعاً والبحث فيها حتى تجيد استخدامها في المحرك الذي تستخدمه
مع مراعاة التالي :
*اللائحة مرتبة تصاعدياً من حيث الأهمية والأساسية ، أي أن أول عناصر اللائحة هو الأكثر أهمية والأكثر أساسية والأخير هو الأقل أهمية ولكن إن أردت الانتاج فيجب عليك مراعاة كل شئ ! لا تهمل أي شئ فيها ! لأني حاولت تنظيمها بحيث تتضمن الأشياء المهمة الأساسية التي لا يخلو منها أي محرك
*هذه اللائحة ستساعدك على تعلم فعل هذه الأمور في محركك الحالي ، وحينما تنتقل لمحرك آخر ستضطر لتعلمها مرة أخرى ، وفي الغالب ستكون نفس الفكرة موجودة مع اختلاف التطبيق :] لهذا لا تقلق
*اللائحة موجهة للألعاب الثري دي ،(قد) أقوم بعمل لائحة أخرى للتو دي
*اتقانك لهذه المهارات كافة لا يعني أنك ستستطيع عمل أي لعبة تريد مباشرة ، وهذا ما لا أستطيع المساعدة فيه ، يجب عليك التحلي بالصبر واستخدام هذه المهارات بتمهل ، ومع الوقت بإذن الله ستكتسب الخبرة والمعرفة للقيام بلعبة بمستوى أفضل ! -- ببساطة هذه المهارات تعتبر "المفتاح" لاكتساب الخبرة ، ومن دون معرفة هذه الأساسيات ستكون ضائعاً بين التطبيقات العشوائية والانتاج القليل
*إن واجهت عنصراً في اللائحة "تعتقد" أنك تستطيع فعله لاحقاً إن قرأت مثالاً ، فاذهب ونفذه على الفور ولا تنتظر ! لا تؤجل هذه الأشياء لوقت المشروع ، ببساطة سبب مهم في عدم الانتاج هو أن المبرمج يجرب أشياء لأول مرة مثل تشغيل الصوت والتأثيرات أثناء المشروع --مما يطيل زمن انتاج المشروع ، والأسوأ إن لم يعمل الكود كما يريد ! مزيد من وقت المشروع على الاختبار والـDebugging
*هذه اللائحة ستساعدك على تعلم فعل هذه الأمور في محركك الحالي ، وحينما تنتقل لمحرك آخر ستضطر لتعلمها مرة أخرى ، وفي الغالب ستكون نفس الفكرة موجودة مع اختلاف التطبيق :] لهذا لا تقلق
*اللائحة موجهة للألعاب الثري دي ،(قد) أقوم بعمل لائحة أخرى للتو دي
*اتقانك لهذه المهارات كافة لا يعني أنك ستستطيع عمل أي لعبة تريد مباشرة ، وهذا ما لا أستطيع المساعدة فيه ، يجب عليك التحلي بالصبر واستخدام هذه المهارات بتمهل ، ومع الوقت بإذن الله ستكتسب الخبرة والمعرفة للقيام بلعبة بمستوى أفضل ! -- ببساطة هذه المهارات تعتبر "المفتاح" لاكتساب الخبرة ، ومن دون معرفة هذه الأساسيات ستكون ضائعاً بين التطبيقات العشوائية والانتاج القليل
*إن واجهت عنصراً في اللائحة "تعتقد" أنك تستطيع فعله لاحقاً إن قرأت مثالاً ، فاذهب ونفذه على الفور ولا تنتظر ! لا تؤجل هذه الأشياء لوقت المشروع ، ببساطة سبب مهم في عدم الانتاج هو أن المبرمج يجرب أشياء لأول مرة مثل تشغيل الصوت والتأثيرات أثناء المشروع --مما يطيل زمن انتاج المشروع ، والأسوأ إن لم يعمل الكود كما يريد ! مزيد من وقت المشروع على الاختبار والـDebugging
اللائحة:
-اضافة الإضاءة والتحكم بتشغيل/إطفاء الظلال
-الكشف عن الادخال (لوحة المفاتيح والفأرة تكفي حالياً !)
-استخدام الادخال للتأثير على Transformation الموديل (الموقع/الدوران/الحجم)
-الكشف عن التصادم المكعب(Box collision detection)
*التصادم المكعب هو ببساطة أن يكون هناك "مكعب تصادم" حول الموديل يساعده على التصادم مع عالم اللعبة
-عرض أنيميشن (Skeletal animation)
-الكشف عن تصادم الأشعة ( Raycast collision detection)
*تصادم الأشعة ببساطة هو أن يكون هناك "أشعة" بين نقطتين ، إن وقع موديل معين على هذه الأشعة فسيحدث التصادم !
*أعلم تماماً أن هذا الموضوع إلى حد ما متقدم ، لكني اكتشفت أنه أساسي إلى حد كبير ! فلا يمكن لموديل أن يمشي على سطح غير مستوي إلا من خلاله ، كما أن ألعاب الـFPS تعتمد عليه في الـ"تصويب" ، فالأشعة ستوجه من أمام الموديل إلى نقطة بعيدة ; إن وقع هدف في هذه المسافة وتم إطلاق النار فإن هذا الهدف ستتم إصابته
-رسم Terrain من Heightmap
*الـHeightmap هي ببساطة صورة تحتوي على تدرجات من الأبيض والأسود تحدد ارتفاع وإنخفاض كل نقطة ، يمكن منها تكوين مشاهد في اللعبة من دون إجهاد المنمذج الثري دي كثيراً ، كما أنها لا تؤثر كثيراً على سرعة اللعبة على الرغم من "نعومة" الهضاب
مثال :
الهايت ماب :http://upload.wikimedia.org/wikipedi.../Heightmap.png
التيرين الناتجة : http://upload.wikimedia.org/wikipedi...p_rendered.png
-جعل الموديل يمشي على الـTerrain
-تشغيل الصوت
-تغيير الـTexture للموديل
-التحكم بالـTexture الخاصة بها (Slide ،Grid ،الخ)
-استخدام نظام الـParticles لعمل النيران والدخان وغيرها
(المهارات المتقدمة)
-استخدام التكستشر لعمل مؤثرات بسيطة
-كشف الادخال من الـGamepad/joystick
-الـNetworking
-كتابة الشيدرات البسيطة
-تأثيرات الـ(Post-Process Glow , blur ،الخ)
(الأساسيات) :
-عرض موديل ثري دي-اضافة الإضاءة والتحكم بتشغيل/إطفاء الظلال
-الكشف عن الادخال (لوحة المفاتيح والفأرة تكفي حالياً !)
-استخدام الادخال للتأثير على Transformation الموديل (الموقع/الدوران/الحجم)
-الكشف عن التصادم المكعب(Box collision detection)
*التصادم المكعب هو ببساطة أن يكون هناك "مكعب تصادم" حول الموديل يساعده على التصادم مع عالم اللعبة
-عرض أنيميشن (Skeletal animation)
-الكشف عن تصادم الأشعة ( Raycast collision detection)
*تصادم الأشعة ببساطة هو أن يكون هناك "أشعة" بين نقطتين ، إن وقع موديل معين على هذه الأشعة فسيحدث التصادم !
*أعلم تماماً أن هذا الموضوع إلى حد ما متقدم ، لكني اكتشفت أنه أساسي إلى حد كبير ! فلا يمكن لموديل أن يمشي على سطح غير مستوي إلا من خلاله ، كما أن ألعاب الـFPS تعتمد عليه في الـ"تصويب" ، فالأشعة ستوجه من أمام الموديل إلى نقطة بعيدة ; إن وقع هدف في هذه المسافة وتم إطلاق النار فإن هذا الهدف ستتم إصابته
-رسم Terrain من Heightmap
*الـHeightmap هي ببساطة صورة تحتوي على تدرجات من الأبيض والأسود تحدد ارتفاع وإنخفاض كل نقطة ، يمكن منها تكوين مشاهد في اللعبة من دون إجهاد المنمذج الثري دي كثيراً ، كما أنها لا تؤثر كثيراً على سرعة اللعبة على الرغم من "نعومة" الهضاب
مثال :
الهايت ماب :http://upload.wikimedia.org/wikipedi.../Heightmap.png
التيرين الناتجة : http://upload.wikimedia.org/wikipedi...p_rendered.png
-جعل الموديل يمشي على الـTerrain
-تشغيل الصوت
-تغيير الـTexture للموديل
-التحكم بالـTexture الخاصة بها (Slide ،Grid ،الخ)
-استخدام نظام الـParticles لعمل النيران والدخان وغيرها
(المهارات المتقدمة)
-استخدام التكستشر لعمل مؤثرات بسيطة
-كشف الادخال من الـGamepad/joystick
-الـNetworking
-كتابة الشيدرات البسيطة
-تأثيرات الـ(Post-Process Glow , blur ،الخ)
اللائحة قيد التطوير للأبد بإذن الله :] !
من لديه أي اقتراحات لللائحة فاليتفضل ، لنصل إلى لائحة نهائية تساعد الكل بإذن الله
تعليق