المدخل إلى تصميم وبرمجة الألعاب : كيف أبدأ ؟

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

نظرأ لكثرة تردد هذا السؤال , وغيابه عن بعض المبتدئين و ظهور كثير من محركات الالعاب في الوقت الحاضر رأيت مناقشته في المدونة .

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

أولاً :لماذا قلت تصميم و برمجة , أليسا شيئاً واحداً ؟

لا , هما مصطلحان مختلفان , لكن قد يقوم بمهما شخص واحد .

البرمجة Game Programming : كتابة الكود بإحدى لغات البرمجة , الكود الذي يتحكم مثلاً بالجاذبية ,التعامل مع مكتبة الرسوميات ..

التصميم Game Design : هي -بشكل عام- تصميم طريقة اللعب , المراحل , المهمات , القصة . كل ذلك على بالرسم والكتابة فقط دون أدنى تدخل في عملية البرمجة .

المصمم يحدد وظيفة الكود الذي يقوم المبرمج بكتابته . مثلاً المصمم يحدد ان اللعبة تطلب نوعاً معيناً من القفزات العالية , فيقوم المبرمج بكتابة كود يتعامل مع الجاذبية ومع حركة اللاعب لتحقيق القفزة المطلوبة .

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

ثانياً : الفرق بين أساليب تصميم وبرمجة الالعاب حالياً

الطريقة الأولى : البرمجة مباشرة باستخدام لغة برمجة C++ أو #C مع مكتبة رسوميات (OpenGL , DirectX) ومكتبة فيزياء (Newton , PhysX) , وبالطبع ستحتاج معرفة بكيفية بناء محرك لعبة Game Engine Structure , وتمكن جيد من لغة برمجة قوية . في أغلب الأحيان بمجرد إنشائك لمحرك اللعبة يصبح معظم اللعبة قد انتهى . معظم شركات الألعاب تنشئ محركاً واحداً تصنع به ألعابها كلها (يمكنك تصور محرك الألعاب كبرنامج مثل Flash , لكن بإمكانات تناسب الشركة المصنعة) , فمثلاً شركة Valve لديها محرك Source الذي أنشأت به Half-life و Portalبأجزائهما  دون حاجة إلى عمل محرك مستقل لكل لعبة , وأيضاً هو متاح للمطورين لتصميم مراحل خاصة بهم يمكن لعبها في Half-Life و Portal .

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

ولكن هذه الطريقة تستهلك وقتاً أكبر نسبياً من الطريقة الثانية , وهذا الوقت هو اللازم لبناء محرك اللعبة , ومن وجهة نظري تصلح لمن يريد أن يصبح مبرمج ألعاب لأن عليه التعامل مع محرك اللعبة , أما للمصمم فمعظمها تضييع وقت .

الطريقة الثانية : استخدام محركات الألعاب الجاهزة , تحت شعار لماذا تعيد اختراع العجلة ؟! وهي الاستعانة بمحركات ألعاب عملاقة جاهزة ومتاحة للاستخدام , بالطبع مقابل أجر مادي زهيد بصور تختلف من محرك لآخر , أي انك ستهتم في معظم الاحيان بالتصميم , ولن تشغل رأسك بالأمور البرمجية (إنشاء كاميرات من الصفر , أو التواصل مع مكتبة الرسوميات مباشرة ..) لأن هذه وظيفة المحرك نفسه , مع ملاحظة أنه يمكنك الوصول لكل هذا وتعديل معظمه وهذا يحصل في أحيان قليلة جداً .

هذه الطريقة تتضمن في بعض الأحيان بعض الخبرة البرمجية مع إحدى لغات البرمجة التي يدعمها المحرك , ليكون لديك قوة أكبر , بالتالي توفر الوقت لكلاً من المبرمج والمصمم -وأحياناً لن تحتاج إلى مبرمج بالمرة :)- وتختصر عليك الوقت والجهد .

ثالثاً : الفرق بين محركات الألعاب المشهورة :

GameMaker

وهو محرك ألعاب مصمم ليناسب الألعاب 2D بشكل أساسي , وهو سهل جداً ولا يحتاج معرفة برمجية إلا في حالات متقدمة , لأن الأوامر البرمجية ممثلة بصور تقوم بسحبها وإلقائها في المحرر , لفهم أوضح شاهد هذا الفيديو

المحرك يكلف 39.99$ للنسخة الكاملة , لكن يمكنك استخدام النسخة العادية بدون مشاكل (باستثناء اختفاء بعض الميزات المتقدمة , وعرض رسالة دعاية للمحرك على ألعابك) وهناك نسخة من المحرك تدعم HTML5 قيمتها 99$ .

التعامل مع عناصر اللعبة (أصوات , صور ..) مباشر وسهل , ويأتي مع النسخة العادية مثالان مشروحان يوضحان كيفية التعامل مع أساسيات البرنامج .

Unity

وهو يعتبر أفضل المحركات حالياً للمبتدئين , له مزايا قوية , ويوفر ترقيات -غير مجانية- لأنظمة iOS و Android , ويدعم JavaScript و #C كما أنه يمكن لعب ألعاب Unity من خلال المتصفح مباشرة من خلال إضافة خاصة .

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

UDK Unreal Development Kit

هذا المحرك هو الذي تم استعماله لإنشاء Mass Effect 2 , Batman Arkham City , Batman Arkham Asylum , BioShock 2 هذا غير Gears of War و Unreal Tournament أعتقد أن واحدة فقط منهم تكفي لتقتنع أن المحرك قوي جداً 🙂

UDK مجاني , إلا لو قررت بيع ألعابك فيجب دفع 99$ , وعندما يصل صافي ربحك إلى 50000$ سيكون عليك دفع قيمة إضافية , لا تخف تابع معي المثال التالي من موقع المحرك :

  1. يمكنك إنشاء أي لعبة لاستعمالك الشخصي مجانا
  2. إذا أردت بيعها سيكون عليك دفع 99$ ثمناً للرخصة التجارية
  3. بفرض أنك قمت ببيع 15000 نسخة كل منها بقيمة 4.99$ , يكون إجمالي سعر البيع في السوق Retail هو 74850$
  4. لكن السوق (وليس UDK) سوف ياخذ نسبة من هذه المبيعات 30% تقريباً , فيصبح الصافي الذي يصلك هو 52395$
  5. ضع أول 50000$ في جيبك , وادفع 25% من الباقي (لصالح UDK) أي ستدفع 25% من 2395 والذي يساوي 598$ تقريباً
  6. الآن أصبح إجمالي ما قمت بدفعه (خطوة 2 و 5) 697$ تقريباً , والذي يساوي 1% فقط من إجمالي سعر البيع !

المحرك فعلاً يستحق , وهو قوي جداً ولا يحتاج معرفة برمجية -إلا في حالات متقدمة بالطبع – وهو يستعمل طريقة مرئية للبرمجة , أشبه بنظام العلاقات في MsAccess 🙂 لكنه أكثر تطوراً طبعاً ويعطيك تحكماً في كل شيء . ويمكنك من التحكم في حركة الأجسام بطريقة أشبه ببرنامج Flash (لكن بالطبع أكثر تقدماً وقوة) .

CryEngine

الحقيقة لم أتعامل معه .. , لكن يكفي ان من الألعاب المطورة به  Crysis 2 والتي كانت ثورة في مجال الرسوميات وأصبحت الان مقياساً تقاس به قوة أجهزة الألعاب توضح مركز قوة هذا المحرك في مجال الرسوميات . والمحرك لا يقتصر على الألعاب فقط وإنما الأفلام أيضاً , وهو مجاني -للاستعمالات غير التجارية- .

أعتقد انه أكثر المحركات تميزاً , لكن من تجارب بعض المستخدمين ذكروا أنه يتطلب ترخيصاً غالياً بعض الشيء , لكن عليك في كل حال أن تتصل بشركة Crytek وتخبرهم بخطتك وإمكاناتك ليعطوك السعر المناسب . أما بالنسبة للمبرمجين المنفردين فهو يتطلب 20% من مبيعات اللعبة , بشكل مقارب لـUDK

XNA

حقيقة لم أتعامل مع هذا المحرك , لكنه يعتبر IDE يستخدم #C و DirectX لتطوير الألعاب , وبالطبع يحتاج إلى خبرة في #C و OOP . يمكنك عمل ألعاب تجارية على PC أو غير تجارية بالنسبة لمنصة XBox360 . ومن خلال رفع ألعابك فيما يسمى Creators Club يمكنك بيعها بخصم 30% من سعر البيع .

أنصح بقراءة هذه الصفحة عن المحرك لعدم خبرتي به .

أشكال أخرى من المحركات :

Map Editors

هذا النوع من المحركات يكون غالباً مرفق مع الألعاب الاستراتيجية (مثل StarCraft) , وهو يوفر إمكانات تصميم فقط , بمعنى ان جميع تفاصيل اللعب ستكون على محرك اللعبة الأصلي وانت ما عليك إلا تصميم الخريطة التي سيقوم المحرك بعرضها , لكنها تعتبر بداية بسيطة و جيدة جداً قبل الدخول في عالم تصميم الألعاب , وأيضاً للمبرمجين لفهم بعض عناصر عمليات التصميم

العوامل الواجب مراعاتها عند اختيار المحرك :

  1. عليك تحديد وظيفتك مصمم , مبرمج أو كليهما -مؤقتاً- , وتحديد إمكاناتك في كل منهما , إتقانك للبرمجة وقدراتك الفنية عامل مهم لتحديد ذلك .
  2. إمكانيات اللعبة (وهذا يشمل الوقت كعامل أساسي) التي تريد البدء بها , ونصيحة مني إياك البدء بألعاب كبيرة , لأنك حتماً ستفشل , اعرف ان هذا قد يكون محبطاً لكنها الحقيقة , لا تتوقع مثلاً عمل ألعاب مثل GTA أو Skyrim ؛ لأن من يقوم عليها شركات كبرى من مصممين وكتاب ومبرمجين ورسامين ..الخ وتحتاج منهم إلى سنين من العمل , وتحوي أخطاءاً وعيوباً بعد كل ذلك ! , حاول البدء بلعبة بسيطة , سهلة التصميم والتنفيذ ولا تأخذ وقتاً , لهدف واحد هو أن تتعرف على عالم الألعاب جيداً كبداية وتعتاد على المحرك الذي تستخدمه , وكل شيء يحتاج إلى تدرج لا تقلق .
  3. الظروف المالية , هل يتسحق Unity مبلغ 1500$ للإمكانات المتقدمة التي يوفرها , وإزالة نافذته SplashScreen من ألعابك ؟ أم تستخدم UDK ..
  4. قدرتك على إتقان المحرك , من حيث توفر مصادر الشرح والدعم للمحرك , وقدرتك على التعلم الذاتي من خلال التجربة ونظام المساعدة المرفق ..
  5. المصادر الخارجية , مثلاً دقة الصوت والرسومات التي يمكنك توفيرها والتي تريد أن تصل لعبتك إليها

والله الموفق 🙂