/سلسلة تطوير الألعاب للبلاليص | الجزء الأول : مقدمة

سلسلة تطوير الألعاب للبلاليص | الجزء الأول : مقدمة

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


تطوير الألعاب: كما وعدت فلن أوجع أدمغتكم بالكلام النظري, فلنأخذ لعبة ولنحللها إلى عناصرها الأساسية ونرى كيف صنعت, دعني أفكّر في لعبة أولاً …… مممممممم ….. *بعد دقائق من التفكير*…. حسناً, فلنبدأ بـ Space Invaders ….إذا أردت ن تلعب نسخة 1978 الأصلية فيمكنك تحميل محاكي ألعاب أركاد من ظلال الانترنت, أمّا ان كنت لا تقدّر التحفّ والدقة التاريخيه فالعب هذه النسخة هنا :

قد تتسائل لماذا اخترت لعبة بهذه البساطة؟!…ببساطة لأنه من المفترض أنك لا تعرف الفرق بين القلقاس والبطيخ, حسناً … فلنبدأ بتحليل هيكل اللعبة :-

(1) القائمة الرئيسية : وهذا أوّل ماتراه في اللعبة أمامك, اممم.. دعنا نرى, بها اسم اللعبة/الشعار, وقائمة بسيطة بالأعداء في اللعبة وما يعادلهم من نقاط, واختياران : احداهما لبدأ اللعب و الأخرى للانتقال للوحة الأرقام القياسية *احم..أي اقتراح لترجمة أفضل ؟!*

(2) اللعبة نفسها : وهذه تحتاج إلى بعض التحليل, فلنبدأ بالرسوم :- ونرى فيها الآتي : اللاعب, باللون الأخضر ذو شكل بدائي جداً ويطلق نقاط من المفترض أنها طلقّات / صفوف من الأعداء والتي تستطيع اصابتها بالطلقات / أشكال بيضاء والتي تبدو كأقواس النصر, من المفترض أن تحميها / وخط أخضر تُدمر عنده طلقات الأعداء / واجهة بسيطة بها النقاط التي جمعتها حتى الآن بالاضافة لعدد الأرواح *ترجمة أفضل هنا لوسمحت* ….. كما نستطيع سماع موسيقى في الخلفية, بالاضافة الى الأصوات التي تصدرها الطلقات و المركبة الحمراء.

(3) شاشة النهاية : عندما تنتهي من اللعبة سواء بالخسارة أو اتمام كل المراحل, فسيطلب منك ادخال اسمك وسينقلك الى القائمة الرئيسية مرّة أخرى.

حسناً, بعد أن جربت اللعبة, عندي سؤال, هل تستطيع تخيّل المنطق الذي بنيت عليه اللعبة ؟! … اللعبة بسيطة جداً ولن تتطلّب منك الكثير من الوقت لاستنتاج المنطق ورائها… فلنبدأ أولاً بالمركبة الخضراء التي تتحكم فيها أثناء اللعبة :-

المركبة الخضراء : مايحدث في اللعبة هو كالآتي: عندما يضغط اللاعب على زر كذا تصرّف هكذا , عندما يضغط اللاعب على “المسافة” اطلق النار على هؤلاء الأوغاد , عندما يضغط اللاعب على زر “->” حرّك المركبة للشمال …. وهكذا …. يحدث كلّ هذا من خلال مايسمّى بـدوارة اللعبة أو الـ”Game Loop” …. ببساطة هي مجموعة من الأومر تتكرر بمعدل معين , مثلا تتكرر مرة كل ثانية أو مرتين أو ثلاث … إلخ, في الألعاب يجب أن تتكرر من 30 إلى 60 مرة في الثانية مثلا حتى لا تلاحظ العين البشرية البطء في اللعبة أو التصرف … والآن فلنتحدث بشئ من التفصيل عن هذا الموضوع, اليكم توضيح لسلوك اللعبة في خطوة واحدة :-

1– مالزر الذي ضغط عليه اللاعب ؟!

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

3- نفس اسلوب الشرط السابق ولكن مع أزرار مختلفة… وسلوك مختلف لكل زر كما أوضحت مسبقاً

4- هل أصيب اللاعب بطلقة من الأعداء ؟!, اذا اصيب …. ضع حالة اللاعب = “موت”

5-بعد أن تنتهي من كل هذه العملية ارسم الناتج على الشاشة

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

بالاضافة إلى كلّ هذا, فمعظم الألعاب يوجد بها عنصر منظّم واحد على الأقل, ليدير السلوك العام للعبة, مثلا ماذا يحدث إذا مات اللاعب ونفذت الأرواح لديه… في هذه الحالة ارجع باللاعب إلى القائمة الرئيسية …. ماذا إذا أصاب اللاعب عدو ؟! …. أضف نقاط جديدة لسجل اللاعب …. وهكذا ……


الآن وبعد أن أخذنا لعبة وتصوّرنا بشكل عام المنطق الذي يحكمها ….. كانت هذه مجرد مداعبة لعقلك …. فلننتقل إلى الجدّ …. كيف يتم صناعة الألعاب حقّاً ؟! ….. لن أتحدث كثيراً في هذه النقطة عن جانب “ماقبل الانتاج/Pre-production من اللعبة, ولكن على الأقل يجب أن يكون لديك تصور لما ستصبح عليه لعبتك, فيما بعد سنناقش بالتفصيل ان شاء الله كيف توثّق أفكارك وتصميماتك في ما يسمّي بـوثائق التصميم “GDDs” .... يمكن أن تبحث عن تفاصيل أكثر عن الموضوع على الانترنت, بثلاث كلمات مفتاحية Game Design Document” ... بالتوفيق في قراءاتك الخارجية… و الآن فلنعد لموضوعنا…. من المفترض أن لديك فكرة للعبة الآن و ترغب تنفيذها …. إليك ما كنت ستفعله :-

– ضع أفكارك على ورق, و وصف كامل للعبة في تصوّركد

– اصنع موارد اللعبة من رسوم وأصوات …إلخ إلخ
– برمج وجمّع اللعبة على حسب وصفك المسبق

– انتهيت

كم أتمنّى أن يكون الموضوع بهذه البساطة, على العموم, في هذا الجزء من السلسلة لن ننقاش لا تصميم اللعبة و لا صناعة الموارد…. سنركّز على الجزء الخاص ببرمجة وتجميع اللعبة…. ولهذا فلننتقل إلى هذه النقطة سريعاً :

بدون الكثير من المقدمات هنا أيضاً …. لكي تتمكن من صنع لعبة تحتاج للآتى :-

1- جهاز كمبيوتر “هههه … ياللمفاجأة” .
2- بيئة تطوير “الشرح قادم في الطريق” .
3- كرسي مريح لأنك في الغالب ستجلس بالأيّام عليه بالإضافة إلىّ مخدّرك المفضّل طبعاً .

و الآن إليك بعض من التفصيل بخصوص بيئة التطوير “عليك أن تبحث بنفسك عن تفاصيل أكثر عن بيئات التطوير التي سأذكرها, فلن أذكر هنا أكثر من الاسم” …. أنت حرّ في البيئة التي تختار … وهذا يعتمد في الغالب أصلاً على حجم المشروع و النتائج المتوقعة …. مثلاً قد يختار أحد المجانين لغة Assembly لصناعة لعبة AAA . سيكون مجنوناً بالفعل …. أو مجنون مثلك مثلاُ يريد صنع لعبة بمستوى الـ AAA من الصفّر … وبمفرده …. هذا جنون أيضاً ….. على أيّ حال …. سأعطيكم أمثلة عملية على بيئات تطوير لألعاب مشهورة …. ولنبدأ بأحد ألعابي المفضّلة : Bioshock ….. تم بناء هذه اللعبة باستخدام نسخة معدّلة من UnrealEngine3 ….. يمكنك الحصول على نسخة مخصصة أيضاً من هذا المحرك وبرخصة معقولة بالنسبة لسعر النسخة الكاملة … من هنا لمزيد من التفاصيل : UDK : http://www.udk.com. لعبة كـ Assassin’s Creed ... تم بناءها على محرك ألعاب يدعى Scimitar أعتقد أنهم غيّروا اسمه الآن … لا يهم … فالمحرك خاص بالشركة فقط وليس متاح للاستخدام العام In-House Game Engine ….. سلسلة ألعاب كـ Half Life تم تطويرها بسلسلة محركات Source أيضاً … نفس النظام مع سلسلة Quake و Doom تم تطويرها بسلسلة محركات شركة ID ونفس الحال مع ألعاب EPIC و UnrealEngine3 …الخلاصة … تريد أن تصنع لعبة بتصوّر معين …. ابحث عن الأدوات التي تمكنّك من تحقيق ذلك ولا تتفذلك وتعيد صناعة العجلة … فإذا كانت الأمور تؤخذ هكذا فربما عليك أن تعيد صناعة جهاز الكمبيوتر أرضاً … الخلاصة …. لايوجد شئ اسمه من الصفر …. على العموم … اذا أردت صناعة لعبة بسيطة ثنائية الأبعاد مثلاً بالإضافة إلى رغبتك في تعلّم لغة كالـ C++ … فأفضل خيار أمامك هو مكتبة SFML …. ولا تبدأ بالـ DirectX أو الـ OpenGL مباشرة ….. هذه مجرد نصيحة إذا أردت أن تغير مسارك …. ويمكنك بعد ذلك الانتقال إلى استخدام مكتبات أكثر تقدماً مثل OGRE ... على أي حال …. بيئة التطوير وظيفتها هي تقديم ماتحتاجة أنت لصناعة اللعبة … وبناءاً على التحليل البسيط في بداية هذه الجزء …. فلنري مالذي نحتاجة بالضبط :-

1 إدارة المدخلات/Input : كما في مثال المركبة الخضراء ….. إذا ضغط على زر معين … أو قمت بأي صورة من صور الادخال …. على هذا الجزء من بيئة التطوير اكتشافه و إدارته لأستطيع توظيفه فيما بعد في سلوك اللعبة .

2 المكتبات الأساسية : أي مكتبات قد تحتاجها في اللعبة … كالعمليات الرياضية الأساسية ..حساب جيوب الزوايا مثلاً …. حساب متجّه معيّن بنقطتين …. الكواتيرنيون …. إلخ إلخ …

3 لغة لتصف منطق اللعبة : قد تكون اللعبة بسيطة لدرجة أن اللغة المستخدمة في برمجة أجزائها هي نفسها اللغة التي توصف بها سلوك اللعبة …. في الألعاب المعقدة بعض الشئ تحتاج إلى ما يسمى بالـ Scripting Language …. في حالتنا هذه مع اليونتي سيتاح أمامنا ثلاث خيارات : JavaScript / C#/ Boo ….

4مكتبة الجرافية : لترسم لك الناتج النهائي بعد أن قمت بكل العمليات المطلوبة في دوارة اللعبة كما في المثال البسيط السابق في البداية ….

5- مكتبات للأصوات و بقية الأشياء : ستحتاج لمكتبات أخرى أيضاً لإدارة أشياء كالذكاء الاصطناعي … إلخ إلخ
إذا كنت تتسائل ما الذي أقصده بالضبط بالمكتبات … فتخيّل انها مكعبات تحتاجها لبناء اللعبة …. إذا أردت تفاصيل أكثر فربما عليك البحث في هذه الكلمات المفتاحية “API , SDK” …..

والآن إليكم بيئة التطوير التي سنستعملها خلال هذه السلسلة …. اليونتي/Unity …. يمكنك تحميل نسخة مجانية من المحرّك من هنا :-

من المستحسن أن تتجول قليلاً في الموقع وتقرأ أكثر في الكلمات المفتاحية التي وضعتها في هذا الجزء …. هذا الجزء كان مجرد تنشيط للعقل فقط …. للتسخين يعني ….

—————–


تمهيد: خلال هذا الجزء سنقوم باعداد بيئة التطوير/اليونتي … وسنلقي نظرة سريعة عليه وعلى آلية عمله ….


البرامج المطلوبة لاتمام هذه السلسلة : ليس الكثير …. أولاً قم بتحميل نسخة اليونتي للمستقلين …وهي مجانية وتحتاج فقط للتفعيل من خلال الانترنت مرّة واحدة :-

بعد ذلك سنحتاج إلى تحميل محرر سكريبتات مستقل بديل عن المحرر الافتراضي … للاستفادة من بعض الميزات الإضافية كالإكمال التلقائي وتوضيح الوظائف والتي ستفرق كثيراً عند العمل …. قام فرق FlashBang بتعديل نسخة من FlashDevelop لتصبح UnityDevelop يمكنكم انزالها من هنا : http://technology.blurst.com/unitydevelop-javascript-editor/

بعد الانتهاء من تحميل كل هذا …. فلنشغّل البرنامج :-

الواجهة: فلنستكشف معاً واجهة البرنامج …

    1. شريط القوائم : ويتكون من الآتي بالترتيب :-
      • File : بها أوامر إدارة الملفات الأساسية كأن تنشئ مشهد/مشروع جديد … أو تحفظه أو تفتحه …. بالإضافة إلى الخيارات التي تمكنك من التحكم في خصائص اللعبة و بناء النسخة النهائية منها …..
      • Edit : بها أوامر التحرير الأساسية … مثل قص عناصر ولصقها وتكرارها وحذفها والبحث عنها …… أيضاً يمكنك التحكم في بعض خصائص اللعبة من خلالها …. وتفضيلات البرنامج أيضاً
      • Assets : وهنا يمكنك إنشاء عناصر جديدة لإضافتها إلى المشروع لتستخدمها في اللعبة … سنتطرق إليها فيما بعد ..
      • GameObject : لإضافة بعض العناصر الأساسية الجاهزة والمرفقة مع المحرك مثل الكاميرات و الإضاءة …إلخ … أيضاً توجد أشكال أساسية كالمكعبات لتسهّل عليك التجربة و الـ Prototyping …
      • Component : وهنا تستطيع إضافة مكونات معينه لعناصرك … يمكن وصف المكون على أنه شئ يصف وظيفة ما للعنصر … سنتطرق لهذا الأمر بالتفصيل عند شرح آليه العمل في اليونتي .
      • Terrain : تمكّنك من انشاء تتضاريس ومسطّحات للعبتك …. ليست أساسية ولكن إضافة رائعة للمحرك وستختصر عليك الكثير من الوقت ….
      • CUSTOM : لاحاجة لك لأن تعرف مهمة هذه القائمة الآن ….
      • Window : تمكنك من التحكم في تشكيلة التبويبات وإظهارها وإخفاءها على حسب الحاجة ….
      • Help : كما هو واضح من الاسم … يمكنك الوصول لملفات المساعدة والمراجع من خلالها .
    2. شريط الأدوات : بسيط جداً ويحتوي على بعض الأشياء الأساسية اللازمة للتنقل خلال المشهد … وتنظيم تشكيلة التبويبات وكذلك تجربة اللعبة و التحكم في الطبقات التي ترغب في إظهارها في المشهد …..يجب أن تجرّب هذه الأشياء بنفسك لتعرف وظيفتها … فقط سأكتفي بالتنويه أن عليك تجربة التنقل في المشهد من خلال أزرار الفأرة الثلاث و زر Alt … تنقّل بين تلك الأزرار وانظر النتيجة … فهذا أفضل من أن أشرحها لك بالكلام وتنساها فيما بعد …. خذ وقتك في التجربة …. فهذا سيفيدك فيما بعد في كفائة التنقل خلال المشاهد …
    3. تبويب “المشهد / Scene” : فلنعتبر أن المشهد في اليونتي هو عبارة عن المرحلة التي ستكون في اللعبة النهائية ….. يمكنك من خلاله وضع العناصر في أماكنها و ترتيبها بالشكل الذي تريد من خلال أدوات التحكم الرئيسية الموجودة بشريط الأدوات …
    4. تبويب “اللعبة” : وفيه ترى اللعبة كما ستكون في منتجها النهائي طبقاً لآخر التعديلات التي قمت بها …. واحدى نقاط قوة اليونتي هو أنك تستطيع التعديل مباشرة في اللعبة و ترى النتائج لتغيرها فيما بعد … لتشغيل اللعبة ستضغط على الزر الذي يشبه المؤشر في شريط الأدوات والتحكم من الأزرار المجاورة كما في مشغلات الفيديو بالضبط …
    5. تبويب “Hierarchy / الأدوار” : وبه قائمة بكل العناصر الموجودة حالياً في المشهد المفتوح …..
    6. تبويب “Project / المشروع” : وبه كلّ الملفات الخاصة بالمشروع … أن حر في ترتيبها بالطريقة التي تحب ….
    7. تبويب “Inspector / المفتّش” : وتظهر بها خصائص العنصر النشط حالياً “أي الذي حددته” سواء من المشروع أو المشهد المفتوح حالياً …. وستجد به أيضا خصائص المكونات/Components المرتبطة بالعنصر …..

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

آلية عمل اليونيتي : فلنتخيل أننا نريد صناعة لعبة ما باليونتي … أوّل ماقد تفعله هو أن تنشئ مشروع جديد …. هذا بالضبط ماستفعله في اليونتي …. اذهب وانشئ مشروعاً جديداً …. الآن … نريد أن ننشئ مرحلة في اللعبة …. المراحل في اليونتي تسمّي “مشاهد / Scenes” .... لذلك ستنشئ مشهد جديد … وسنسميه Level_1 مثلاً … الآن المشهد أمامنا فارغ …. نحتاج إلى إضافة بعض العناصر GameObject إليه …. فلنضيف إليه مكعباً مثلا كبداية … امممم … الآن هذا المكعب ميّت لا يتحرك … نحتاج إلى أن نضيف له بعض الحركات …. لذلك نضيف له مكونات / Components تصف الحركة أو التصرّف الذي نريده …. جميل … والآن كرر هذه الخطوة وضف عناصر أخرى … والآن بعد ان انتهيت من هذا المشهد … فلنضيف مشهداً آخر … وهكذا …. إلى أن تصل في النهاية إلى المنتج النهائي وهو اللعبة التي تخيّلتها من البداية ….. ببساطة يمكن وصفها بالتخطيط التالي :



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

حسناً ….هذا يكفي للآن … في الجزء القادم سنصنع معاً لعبةحرب دبابات بسيطة … وحتى هذا الوقت استمر في استكشاف اليونتي …..

TAGS: