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

لغات البرمجة المناسبة لتصميم وبرمجة الألعاب بالاعتماد على محرك الألعاب الشهير يونيتي


تاريخ الإضافة:

23-05-2020

نص المقالة:

تحظى الألعاب بشعبية كبيرة بين الناس ولها جمهورها العريض فمن منا لا يحب الألعاب على اختلاف أنواعها وعلى اختلاف المنصات التي تعمل عليها سواء كانت ألعاب للحاسب أو للموبايل فهي محبوبة الجميع فهل خطر لك يوماً أن تصمم لعبة بنفسك؟! ربما يكون قد خطر ذلك ببال الكثيرين ولكن الجميع يعتقد بان الموضوع صعب جداً فهل هو حقاً كذلك؟! وكيف يمكنك تصميم الألعاب؟ وما هي لغات البرمجة التي يتوجب عليك تعملها لذلك؟! سنجيب عن جميع هذه التساؤلات في مقالنا هذا.


Unity 3D

يمكن القول في بداية الأمر كان موضوع تصميم الألعاب أكثر تعقيداً وصعوبة فيما مضى ولكن في أيامنا هذه وبوجود محرك للألعاب مثل Unity أصبح الموضوع يزداد سهولة يوماً بعد يوم بدءً من تصميم الألعاب ثنائية البعد (2D) وصولاً للألعاب ثلاثة الأبعاد (3D) وأهم ما يميز محرك البحث السابق أنه مجاني ويقدم الكثير من الميزات كما يوجد الكثير من الدورات التدريبية المتاحة لتعلمه بسهولة وسلاسة مما يجعل المهمة أمام المطورين أكثر سهولة.

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

يعد محرك الألعاب Unity من أكثر محركات الألعاب شهرة في الوقت الحالي لما يتمتع به من الميزات التي تجعلها خياراً رئيسياً لأي مطور ألعاب ومن أهم هذه الميزات:

  1. المرونة: فهو محرك ألعاب مرن جداً ويمكنه التأقلم بسهولة مع متطلباتك.
  2. يستطيع عرض الرسوميات بشكل أني ومباشر مما يسهل عليك التصحيح والتعديل للوصول إلى المطلوب.
  3. يمكن أن تقوم بإنشاء لعبة واحدة وتصديرها إلى منصات متعددة بدلاً من أن تقوم بتصميم إصدار خاص بكل منصة على حدى.
  4. يقدم لك متجر متكامل تستطيع من خلاله الحصول على آلاف الإضافات للعبتك سواء من حيث الشخصيات أو الحركات والكثير غيرها فمنها ما هو مجاني وبالتالي لن تضطر لدفع أي شيء للحصول عليه كما أنك تستطيع الحصول على إضافات مميزة جداً ومتقدمة بمقابل مادي أيضاً، كل ذلك يسرع عملية تطوير اللعبة الخاصة بك ويقلل من الجهد الذي ستبذله لذلك.
  5. إن كنت تريد تصميم لعبة بإمكانية استخدام الشبكة لكي تتاح اللعبة من قبل مجموعة من اللاعبين فإن محرك الألعاب Unity يقدم لك هذه الميزة أيضاً ما يجعل من لعبتك أكثر قوة ويسهل انتشارها.
  6. يقدم محرك الألعاب Unity خدمة Unity Team فغالباً ما يتم تطوير اللعبة من قبل مجموعة من الأشخاص وليس فرد واحد فقط ودائماً ما يعاني الفريق من مشكلة التواصل وتبادل الملفات التي تم العمل عليها فيما بينهم ولكن هذه لم تعد مشكلة في ظل وجود محرك الألعاب Unity فهو يمكن الفريق من التواصل بطريقة سريعة ومميزة بحيث يعملون على اللعبة التي يقومون بتطويرها وكأنهم في مكان واحد.
  7. إن كنت تبحث عن الربح من خلال اللعبة التي تقوم بتطويرها سواء عن طريق إتاحة عملية شراء بعض المكونات (مثل الأسلحة مثلاً) ضمن لعبتك من قبل اللاعبين أو عن طريق وضع مجموعة من الإعلانات ضمن اللعبة بحيث تحصل على عائد مادي من هذه الإعلانات فإنك تستطيع الاعتماد على محرك الألعاب Unity في ذلك فهو يقدم لك الإمكانيتين السابقتين بكل سهولة.
  8. قائمة الأدوات الكبيرة التي يقدمها محرك الألعاب Unity وليس فقط للمطورين أو المبرمجين بل أيضاً للمصممين والرسامين الذين يعملون على بناء المشاهد والشخصيات فهو يتمتع بوجود مجموعة كبيرة من الأدوات التي تسهل عملهم وتجعله أكثر احترافية حيث يقدم أدوات للإضاءة وأخرى للصوت وأدوات للحركية وغيرها الكثير مما يجعله خياراً مميزاً أمامك لتطوير لعبتك الخاصة.
  9. ولعل أهم ميزة في محرك الألعاب Unity أنه مجاني، وصحيح أنه ليس مجاني بالكامل فهو يوجد منه نسخة مجانية وأخرى مدفوعة ولكنه على الأقل في النسخة المجانية يقدم لك مجموعة كبيرة من الأدوات مجانية التي تمكنك من القيام بالكثير في عملية تطوير اللعبة الخاصة بك.

ولكن الصعوبة الحقيقية ليست في محرك الألعاب فعلى الرغم من الميزات العديدة التي يقدمها محرك الألعاب مثل Unity فإن الجوهر يكمن في تكويد اللعبة الخاصة بك وهنا لم تعد الكرة في ملعب محرك البحث فقط بل عليك أن تتعلم لغة برمجة معينة تتناسب مع محرك البحث من أجل تطوير لعبتك بشكلها النهائي، فما هي هذه اللغات الممكنة الاستخدام مع محرك الألعاب Unity؟ سنتعرف عليه في الأسطر القليلة القادمة.

هناك مجموعة من لغات البرمجة المتاحة أمام مطوري الألعاب الذين يرغبون في اعتماد محرك الألعاب Unity وهي كما يلي:

الخيار الأمثل: C#


C# Unity

يمكن القول بأن الخيار الأمثل والأكثر قوة ومرونة للحصول على ألعاب مميزة باستخدام محرك الألعاب Unity هي لغة البرمجة الشهيرة C# فأي شخص جديد على محرك الألعاب Unity سيجد بعد قليل من البحث أن اول وأفضل خيار أمامه هو لغة C# لما تتمتع به هذه اللغة من ميزات وخاصة أنها لغة غرضية التوجه (أي تعتمد مفهوم OOP في بنيتها الهيكلية).
وللغرض السابق فإن محرك الألعاب Unity يستخدم محرر مدعوم من قبل لغات البرمجة الخاصة بشركة مايكروسوفت يسمى Mono وباعتبار لغة C# هي اللغة الرئيسية المعتمدة من قبل مايكروسوفت وأن كل مكتبات محرك الألعاب Unity مبنية بالاعتماد على هذه اللغة فهذا يجعل منها خيار مثالي جداً، وبالتالي لن يكون من المبالغة القول بأن لغة C# هي اللغة الأساسية لمحرك الألعاب Unity.
وتعتبر لغة البرمجة C# لغة قوية جداً وسهلة التعلم، ودعم Unity لها يعطي أي شخص يريد أن يتعلم لغة برمجة جديدة سبباً إضافيا لاختيارها.

الخيار البديل المتاح: JavaScript


Javascript Unity

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

الخيار الثالث القديم: Boo


Boo Unity

في بداية إطلاق Unity كانت لغة البرمجة Boo (وهي لغة تشبه البايثون) خياراً مهماً، وإن علمت أن مطور هذه اللغة يعمل ضمن فريق العمل الخاص بتطوير محرك الألعاب Unity فإنك حتماً لن تستغرب ذلك.
تعتبر لغة Boo لغة برمجية متوافقة مل لغات .NET (لغات البرمجة من مايكروسوفت) ويمكن الكتابة بها ضمن المحرر Mono الذي يأتي مع محرك الألعاب Unity وكانت مدعومة بشكل كامل من هذا المحرك فما المشكلة إذاً؟!
يمكن القوب بأن المشكلة بأن الكثير من الناس لا يستخدمون هذه اللغة البرمجية هذا من جهة أولى ومن جهة ثانية فقد تم النظر إلى هذه اللغة على أنها مجرد محاولة لتقليد لغة البرمجة بايثون, ومع مرور الزمن توقف دعم Unity لهذه اللغة وكل التحديثات القادمة التي ستأتي للغة UnityScript سوف تجعلها تحل محل لغة Boo, وربما يرى البعض أن لغة البرمجة Boo كانت تستحق أن تأخذ فرصتها وكان من المبكر أن يتم الابتعاد عنها لما تتميز به من مرونة ولكن القرار قد اتخذ بعد الاعتماد المستقبلي على هذه اللغة من قبل محرك الألعاب الشهير Unity.

الخيار الاستثنائي: IronPython


IronPython Unity

إذا أردنا التحدث بصوت المنطق فإن لغة البرمجة بايثون هي لغة غير مناسبة لتطوير الألعاب ولكنك إن كنت مطور بايثون فإن هذا الخيار متاح أمامك حيث تستطيع (وفقاً لمايكروسوفت) أن تشغل البايثون من قبل لغة البرمجة C# ويمكن القول بأن لغة البرمجة IronPython ماتزال قيد التطوير، وهنا نلفت النظر بأن IronPython هي مختلفة قليلاً عن البايثون باعتبارها موجهة للمكتبات .NET من مايكروسوفت.
ولكي تستخدم لغة البرمجة IronPython يتوجب عليك تحميل مكتبات هذه اللغة من موقع GitHub وتضمينها ضمن مشروع C# الخاص بك، وبهذه الطريقة تستطيع التعامل مع لغة البرمجة بايثون بالاعتماد على سكريبت مكتوب بلغة البرمجة C#, وهنا لا بد من التنويه أنك تستطيع ايضاً استخدام مكتبات .NET ضمن البايثون وبالتالي فإنك ستحصل على قوة لغة C# (اللغة المفضلة من قبل محرك الألعاب Unity).
وهناك أيضاً لغة برمجية أخرى تسمى IronRuby تعتمد على مكتبات .NET للتعامل مع لغة البرمجة الشهيرة روبي ولكنها في حقيقة الأمر ليست خيار عملي (نفس الامر بخصوص IronPython).

الخيار المثير للاهتمام: لغة Lua


Lua Unity

من أفضل الخيارات الخارجية المناسبة للغات البرمجة التي تتعامل مع محرك الألعاب Unity هي لغة البرمجة Lua أو التي تسمى MoonSharp ولم يتم تصميم مشروع هذه اللغة كبديل للغة البرمجة C# وإنما لتعمل كجسر فهي تستطيع أن تقدم الكثير من الإضافات المميزة إلى اللعبة التي تقوم بتصميمها، حيث تستطيع استخدامها كوسيلة إضافية لتصميم مستويات ضمن اللعبة وبشكل مستقل تماماً عن الكود الرئيسي الخاص بلعبتك (والذي يمكن أن يكون مكتوب بلغة البرمجة C#) أليس هذا رائعاً؟! بالفعل هو كذلك.
وكخلاصة لما سبق يمكن القول بأنك إن كنت تبحث عن وسيلة لتدعيم الكود البرمجي الخاص باللعبة التي تقوم بتطويرها وإضافة بعض الميزات إليها يمكنك اعتبار MoonSharp خيار مناسب جداً وخاصة أنه مجاني تماماً ويمكنك بكل بساطة تحميله من متجر الإضافات الخاص بمحرك الألعاب Unity والذي يسمى Assets Store وتضمينها مباشرة ضمن مجلد المشروع الخاص بك.

اللغة الأفضل للإضافات Plug-ins: C++


C plus plus Unity

على الرغم من المكتبات الكثيرة والقوية التي يمتلكها محرك الألعاب الشهير Unity والتي تقدمها لغة البرمجة C# فإنك وفي بعض الأحيان تريد أن تضيف بعض الملحقات الخاصة بك والتي كنت قد كتبتها بكود برمجي آخر ويعود السبب في رغبة الكثير من المطورين في إضافة ملحقات خاصة بهم إلى اللعبة التي يقومون بتطويرها إلى الحصول على ميزات إضافية كالسرعة أو الوصول إلى أكواد أخرى مكتوبة بلغة مختلفة، ويستطيع المطور ببساطة حفظ هذه الأكواد على شكل ملفات DLL مما يوفر عليه إعادة كتابة نفس الكود البرمجي بلغة برمجية أخرى.
هذا وتعتبر لغة البرمجة C++ من أفضل الخيارات لإنشاء إضافات (Plug-ins) وكذلك لغة البرمجة الأم C تعتبر خيار جيد أيضاً ولكن كل ما سبق بشرط أن يتم حفظ هذه الإضافات على شكل ملفات DLL وبعدها يمكن تضمينها بسهولة ضمن مجلد المشروع الخاص بلعبتك عبر الإشارة إليها بدلاً عن الملحقات الرئيسية الموجودة في مجلدات محرك الألعاب Unity, ومع ذلك فإن كنت مبرمج بلغة C++ أو حتى بلغة C فإن الانتقال إلى لغة البرمجة C# سيكون مهمة سهلة جداً لك.

لغة برمجة جديدة للإضافات: Rust


Rust Unity

تعتبر لغة البرمجة Rust من اللغات التي أثير حولها الكثير من الضجة، ويعود السبب الذي يجعل المبرمجين المتمرسين يحبون هذه اللغة إلى مقدار التحكم الكبير الذي تقدمه هذه اللغة، ليس هذا فحسب بل أيضاً تمكنهم من تجاوز بعض العيوب الأمنية الموجودة في لغات برمجية أخرى أقل أماناً مثل C++.
تم إنشاء هذه اللغة البرمجية من قبل شركة Mozilla عام 2009 أي تعتبر لغة حديثة العهد وكان الهدف الرئيسي من إطلاقها هو تمكين المطورين من تطوير برمجيات عالية المستوى بسهولة وسرعة كبيرة.
في الحقيقة فأنت لا تستطيع الكتابة بلغة البرمجة Rust بشكل مباشر ضمن محرك الألعاب Unity ولكنك تستطيع الوصول إلى الطرق والتوابع الرئيسية الموجودة في لغة البرمجة Rust من خلال الكود البرمجي الخاص بك بسهولة وبالتالي يمكنك أنشاء العديد من الإضافات (Plug-ins) بلغة البرمجة Rust من خلال الاستفادة من القدرة العالية للغة Rust في التفاعل مع اللغات البرمجية الأخرى حيث يمكنك استدعاء التوابع والطرق الموجودة في لغة البرمجة Rust بشكل مباشر من خلال لغة البرمجة C# عبر الأداة DllImport التي يقدمها محرك الألعاب Unity فقط يتوجب عليك اتباع بعض الخطوات اللازمة لذلك. كل ما سبق يجعل من لغة البرمجة Rust خيار لا بأس به في تدعيم لعبتك التي تعمل على تطويرها.

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


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