الخميس، 9 أغسطس 2012

إنطلق في صناعة الألعاب -2- : المحرك المثالي

 ملاحظة :أعتذر على طول الموضوع إلا أنني اضطررت للإطالة لأهمية الموضوع, أحضر كوب من القهوة وبعض الدونات لأن الكمية قد تكون كثيرة للبعض

  المحرك المثالي - يوتوبيا تصميم الألعاب
الطريقة المثالية لبناء لعبة ممتازة, هي عبر محرك الألعاب المثالي, هذا المحرك الرائع متعدد القدرات, يمكنه تنفيذ ما تريده منه وكأنه خادمك المطيع؛ تعطيه أفكار اللعبة والمراحل ويقوم بجمعها في لعبة واحدة مميزة, المحرك المثالي هو محرك يأخذك إلى عالم الإبداع والفن, ويبعدك عن عالم التقنية والأكواد والفيزياء والمضلعات والإكساء. كل شيء جاهز هنا, وبالطبع يبقى عليك الكثير لتعمل؛ القصة والموسيقى والمراحل وكل ما يصنف تحت الفن. بالطبع فإن لا أحد يستخدم هذا المحرك, لا الشركات ولا حتى المستقلين؛ ببساطة لأن هذا المحرك ليس موجوداً
لننظر عن كثب وبشكل سريع عن كيفية  نشوء ما يعرف بـ"محركات الألعاب". قبل توفر المحركات بيد الإنديز, كانت الشركات تستخدم محركات خاصة بها وبقيت هذه المحركات بحوزة كل شركة لوقت طويل. بعد مدة, قرر بعض هذه الشركات بيع  المحرك الخاص بها لشركات أخرى بمقابل مادي, فأصبحات الشركات الأخرى تفكر بشكل جدي بالشراء (لماذا أدفع الكثير من المال لعشرة مبرمجين لبناء محرك لعبة, بينما يمكنني شراء محرك حالاً يغطي معظم الخصائص التي نحتاجها؟) وهكذا نشأت فكرة المحركات, وأصبح استخدام المحرك هو مسألة اقتصادية بحتة : هل خصائص المحرك كافية أم أنه يحتاج لكثير من التعديل ؟ هل تكلفة المحرك أكبر أم بناء محرك جديد أكثر كلفة ؟ هل يمكن إنفاق الوقت في بناء محرك أم أنني أحتاج لهذا الوقت؟.. إلخ
ففكرة محرك الألعاب هي توفير الخصائص التي يحتاجها المصمم في برنامج يشمل أمور عديدة(الفيزياء, اختبارات التصادم, اللودينج, الواجهات الرسومية) , بحيث يتمكن المصمم من التركيز على الممتع والمبدع في اللعبة. ونتيجة لأن المحرك مبني بخواص معينة أو موجه لمنصات خاصة, تكمن هنا أهمية اختيار المحرك؛ فعندما تقوم باختيار المحرك أهم ما يجب أن تراعيه هو : (1) أن لا يحد المحرك من إمكانيات لعبتك, أو أن يكون قابلاً للتعديل, (2) وأن يكون المحرك يدعم المنصة التي تريدها
  ماهو المحرك الأفضل إذاً؟
كما ذكرت؛ كلما استطاع المحرك أن يوفر عليك وقتاً أكثر, وجهداً أكثر من الناحية التقنية كلما كان هذا المحرك أفضل, ولكن  لا يمكن تحديد ماهو المحرك الذي يتناسب معك أنت, ومع طريقة عملك, فبعض المحركات تسهل الجرافيكس, بعضها تسهل البرمجة... ولهذا ينصح دائماً أن يكون مصمم الألعاب مطلع على أكبر عدد ممكن من المحركات, فلكل مصمم احتيجاته وقبل أن نتعرف على كيفية اختيار المحرك يجب أن يكون لدينا خلفية عن أنواع المحركات

أنواع محركات الألعاب

هناك ثلاثة أنواع رئيسية لمحركات الألعاب : محركك الخاص, محركات شبه جاهزة, محركات سحب وإفلات

محركك الخاص

لا يزال هناك عدد من الشركات بل من المستقلين ممن يفضلون بناء محركاتهم الخاصة, معتمدين على تقنيات جرافيكس مثل "دايركت إكس" و "أوبن جي إل" بالطبع سيستخدم هؤلاء بعض الإي بي آيز الخاصة بالمنصة التي سيطورون عليها كذلك كالويندوز أو الآندرويد, من الممكن أيضاً استخدام مصادر مفتوحة لإنشاء أكواد الفيزياء وما شابه. أيضاً استخدام "إكس إن إيه" أو فلاش يعتبر بمثابة بناء محركك الخاص, على الرغم أنها ليست كذلك؛ إلا أنها تحتاج لكثير من الأكواد لتقوم بعمل فيزيائيات بسيطة, أو حتى واجهات رسومية.
ميزة استخدام هذا الأسلوب هو الحرية الكاملة, فأنت هنا سيد المحرك؛ يتمتع الأسلوب بمرونة كبيرة ولكن المشكلة هنا تكمن في الوقت المستخدم في برمجة المحرك, فبعد وقت طويل جداً من البرمجة لن يكون لديك إلا "محرك", ومن ثم ستبدأ ببناء 
اللعبة

محركات شبه جاهزة

معظم المحركات الموجودة هي محركات شبه جاهزة, وهي الأكثر استخداماً من قبل الشركات, تقدم هذه المحركات فيزياء, ريندرينج, كونترولز, واجهات ... وغير ذلك, هذه المحركات لا تزال تحتاج للبرمجة, بل ربما الكثير منها. وتتراوح مرونة هذه المحركات من محرك لآخر, وكذلك تتراوح أسعارها؛ فمحرك "أوجر" مفتوح المصدر, بينما محرك "أنريل" باهظ الثمن

محركات سحب وإفلات

محركات مثل يونيتي, جيم ميكر, ستينسيل, توروك, وغيرها الكثير, هي من المحركات المشهورة والتي تندرج تحت هذا النوع من المحركات. هذه المحركات تمكنك أن تصنع ألعاب بأسرع وقت ممكن. توفر لك أحياناً مجتمعات ومصادر جاهزة وإي بي آيز, فإمكانية التسويق في مثل هذه المحركات سهلة جداً للمستقلين. المشكلة في معظم هذه المحركات أنها عادةً ما تكون محدودة, وتجبرك على التصميم بالطريقة المصمم بها المحرك, لكن لا تسئ الفهم هنا؛ فهذه المحركات ممتازة للمستقلين أيضاً ويمكنك تجاوز محدوديتها بأسلوبك الخاص, كما أن بعضها يدعم لغات برمجة متقدمة

اختيار محرك الألعاب
ماذا أراعي عندما أختار محرك الألعاب الخاص بي ؟ هذا هو السؤال المهم, وتختلف الإجابة من مصمم إلى آخر, وكن على ثقة أنه لا يوجد محرك أفضل من محرك. فالأدوات وسيلة, المهم هو أن تختار _أنت_ ما يناسبك من الأدوات

التقنية 

التقنية المستخدمة مهمة جداً, وأظن أنها أهم العوامل في اختيار محرك الألعاب الذي يناسبك. ما يجب أن تقوم به عند اختيار التقنية المناسبة هو أن تفتح عينيك جيداً, وتعرف تماماً مالذي تريد أن تفعله, فالتقنية تعني وسيلة التسويق في عالم الألعاب, فمثلاً؛ لن تتمكن من تسويق ألعاب صغير مثل "قرقيعان" على ويندوز (إي إكس إي) والأفضل لتسويق هذه الألعاب البسيطة هو المتصفح[بعض المهارات التسويقية ستناقش في حلقات قادمة], وأشهر 3 وسائل لتشغيل ألعاب على المتصفح هي : فلاش, إتشتي إم إل 5, يونيتي... الأقوى والأثبت حالياً هو الفلاش, لكن اليونيتي أفضل بكثير من ناحية الثريدي (لهذا أقول أنه يجب أن تعرف تماماً ماذا تريد) , هناك منصات أخرى مثل إمكانية التصدير لآندرويد أو آيفون أو ربما التصدير للإكسبوكس لايف؛ إذاً يجب أن تتعرف تماماً على إمكانيات المحرك وماهي المنصات التي يمكن أن يصدر اللعبة إليها

 البرمجة 

الإمكانيات البرمجية للمحرك, تختلف أهميتها بحسب المصمم وحسب اللعبة؛ فبالنسبة لك كمصمم يجب أن تعرف مدى احتياج المحرك لعلمك بالبرمجة, فمثلاً يونيتي وأدوبي فلاش, أكثر المحركات الجاهزة احتياجاً للبرمجة ولا ينصح بها إن كنت بعيداً عن البرمجة ولا تريد تعلمها, بينما محرك مثل ستينسيل لا يتطلب البرمجة, لكنه يحتاج لفكر برمجي أكثر من جيم ميكر, فإنشاء الوظائف فيه شبيه جداً بالبرمجة, وهكذا, فإن كنت تكره البرمجة فالجيم ميكر أفضل لك من ستينسيل
أما بالنسبة للعبة ذاتها, فالألعاب البسيطة وألعاب الآركيد عادة الأفضل أن تنشئها بدون استخدام البرمجة أو بكودات بسيطة, فلا تضيع وقتك على برمجة ألعاب برامجها جاهزة والبرمجة لن تزيد من متعة اللعبة, وتزيد من وقت العمل. بينما في الألعاب الأكثر تعقيداً والتي تحتوي على أسلحة ونظام تطوير وشراء ... فالبرمجة قد تختصر عليك من الوقت! للأسف لا يوجد دليل أو كتاب يقول لك ماذا تستخدم, عليك أن تكون على علم بأكبر قدر من أنواع المحركات وتختار ما يناسب لعبتك

التعليم

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

عوامل أخرى
بالطبع هناك عوامل أخرى يمكن مراعاتها, مثل راحتك الشخصية لمحرك ما وسهولة فهمك له, توفر دروس وحلول كثيرة له (حاول الابتعاد عن التقنيات الجديدة التي لم تنضج وليس لها دروس), أيضاً توفير بيئة خصبة للعمل الجماعي, مثل سهولة وتصدير المصادر, قبول عدد كبير من المصادر ... إلخ. لكنها عوامل ثانوية لا تركز عليها قبل العوامل السابقة, فتجاهل السهولة في سبيل التقنية المناسبة أمر _يا للإحباط_ لابد منه
  
التعصب

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

خلاصة
الفكرة في محرك الألعاب هو توفير التقنيات اللازمة لإنتاج الألعاب, بحيث يركز المطور على الجانب الفني للعبة ويبتعد عن بناء التقنية؛ فالمحرك يقدم تقنيات متطورة جاهزة, ولكن حتى الآن لازالت البرمجة تعتبر الأساس في عمل الألعاب, إلا أن هذا لا يعني أنه يجب أن تبدأ بها... ألعاب كثيرة ممتازة بأرباح ضخمة كـ"أنجري بيردز" على سبيل المثال, يمكن عملها بمحركات جاهزة وبدون كتابة سطر برمجي واحد

روابط
قائمة بمحركات الألعاب
http://en.wikipedia.org/wiki/List_of_game_engines 

مقال - لماذا يقوم أي شخص ببناء محرك ألعاب ؟
why on earth would we write our own game engine?

هناك 4 تعليقات: